根据我的理解,我已经使用下面给出的邻接表将Dijkstra算法的时间复杂度计算为big-O表示法。它没有按预期的方式出现,这使我逐步了解了它。
O(log(V))
。 E*logV
。 O(VElogV)
。 但是Dijkstra算法的时间复杂度为O(ElogV)。为什么?
最佳答案
Dijkstra的最短路径算法是O(ElogV)
,其中:
V
是顶点的数目E
是边的总数您的分析是正确的,但是符号有不同的含义!您说算法是
O(VElogV)
,其中:V
是顶点的数目E
是连接到单个节点的最大边数。 让我们将
E
重命名为N
。因此,一种分析是O(ElogV)
,另一种是O(VNlogV)
。两者都是正确的,实际上是E = O(VN)
。区别在于ElogV
是更严格的估计。