【发布时间】:2017-12-28 14:35:08
【问题描述】:
我已阅读这篇文章Understanding Time complexity calculation for Dijkstra Algorithm 以了解 Dijkstra 算法的复杂性。但是,我看不到在每次迭代中选择堆内最小值顶点(在此迭代后将固定其值的顶点)的时间与微积分有关......有人可以清楚地解释我它在哪里参与?
谢谢!
【问题讨论】:
标签: dijkstra
我已阅读这篇文章Understanding Time complexity calculation for Dijkstra Algorithm 以了解 Dijkstra 算法的复杂性。但是,我看不到在每次迭代中选择堆内最小值顶点(在此迭代后将固定其值的顶点)的时间与微积分有关......有人可以清楚地解释我它在哪里参与?
谢谢!
【问题讨论】:
标签: dijkstra
Dijkstra 算法是这样的
repeat V times:
take min from heap; // Works in O(1)
erase min from heap; // Works in O(log V)
for vertices connected with current:
update distance; // Works in O(1)
update value in heap; // Works in O(log V)
第一个循环进行V 迭代,第二个循环对所有顶点迭代的度数求和,所以它是2 * E 或O(E) 迭代。总复杂度为O(VlogV + ElogV)
【讨论】: