如何在Dijsktra算法中考虑最小值顶点?

时间:2017-12-28 14:35:08

标签: dijkstra

我已阅读此帖Understanding Time complexity calculation for Dijkstra Algorithm以了解Dijkstra算法的复杂性。但是,我无法看到在每次迭代中选择最小值顶点(在迭代后其值将被修复的那个)的时间在堆中的时间参与微积分......有人可以清楚地解释我它在哪里参与?

谢谢!

1 个答案:

答案 0 :(得分:0)

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 * EO(E)次迭代。总复杂度为O(VlogV + ElogV)