我只是想知道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。
这是对的吗?
我渴望得到答案。感谢您阅读本文。
答案 0 :(得分:1)
如果每两个节点之间的距离始终相同,那么在这种情况下,Dijkstra的算法变为简单的BFS。您根本不需要堆结构。复杂性为O(n^2)
。
否则复杂性就像您展示O(n^2 log n)
一样。