请问使用二叉堆优化的Dijkstra算法的最坏时间复杂度到底是什么?
我在OIwiki上看见Dijkstra的复杂度是 O(mlogn) ,但是我曾经的某位老师、同机房的一位大佬、还有我自己认为是 O(mlogm) 。
我的理由是这样的:在二叉堆优化dijkstra中,时间复杂度的瓶颈是入堆操作。而如果在一段时间里,有 2n 个点对剩余的 2n 个点都进行入队,而这些边权很大以至于堆里一时半会还不会pop,此时堆中就有 O(m) 数量级的点了。这样一来,总的复杂度就是 O(mlogm) 了。
所以到底哪种看法是正确的呢?我想知道一个精确的答案,谢谢!