二维阵列中的Dijkstra时间复杂度

时间:2015-12-08 18:40:41

标签: algorithm big-o time-complexity shortest-path greedy

我只是想知道2D中Dijkstra的时间复杂性

我知道带有二进制堆的Dijkstra是O(ElogV)

但如果我们有一个n-by-n数组2D并且数组中的每个节点都呈现顶点(x,y,weight)和

它可以用于四个方向。上,下,左,右

因此,总顶点为n ^ 2,边缘约为4(n ^ 2)。例如,如果顶点在< 1,2>中。那么我们必须寻找四边< 0,2> < 2,2> < 1,1> < 1,3>

这样,如果我们在2D中运行算法,那么时间复杂度将是

- > ElogV - > 4(n ^ 2)log n ^ 2 - > 8(n ^ 2)logn~ = n ^ 2 log n。

这是对的吗?

我渴望得到答案。感谢您阅读本文。

1 个答案:

答案 0 :(得分:1)

如果每两个节点之间的距离始终相同,那么在这种情况下,Dijkstra的算法变为简单的BFS。您根本不需要堆结构。复杂性为O(n^2)

否则复杂性就像您展示O(n^2 log n)一样。