Dijsktra最坏情况复杂的输入序列

时间:2017-12-05 18:32:02

标签: graph time-complexity shortest-path dijkstra

我正在寻找用常规堆实现的Dijsktra算法的一系列输入,其中Dijsktras的实际复杂度为Θ((e + v)logv)。

我知道如何实现Dijsktra及其工作原理,我也理解最耗时的操作是将一个顶点添加到堆中并改变顶点的距离。但是,我不确定如何找到Dijkstra最坏情况输入的图形(图形序列)。

此外,如果您有关于如何查找最坏情况复杂性的输入序列的任何一般提示,那将会有所帮助。

1 个答案:

答案 0 :(得分:0)

让顶点从1编号到n,并且您想要找到从顶点1到顶点n的路径。让e[i][j]为边长,连接ij。最初是e[1][2] = e[2][3] = ... = e[n - 1][n] = 1。现在我们遍历从n - 21的顶点。在ij[i + 2, n] e[i][j] = e[i][i + 1] + e[i + 1][j] + 1的{​​{1}}个O(n) O(n ^ 2) = O(E) O(log n)。{/ 1}

现在我们有完整的图表。在每次迭代中,dijkstra将更新O(n log(n) + E log(n))个顶点,因此在{{1}}中有{{1}}个动作。

所以最终的渐近线将是{{1}}