【问题标题】:Dijkstra in 2-D array Time complexity二维数组中的 Dijkstra 时间复杂度
【发布时间】:2016-03-13 19:46:10
【问题描述】:

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

我知道二叉堆的 Dijkstra 是 O(ElogV)

但是如果我们有一个 n×n 二维数组,并且数组中的每个节点都表示顶点(x,y,权重)和

它可以有四个方向。上、下、左、右

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

因此,如果我们在 2D 中运行算法,那么时间复杂度将为

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

是这样吗?

我很想得到答案。感谢您阅读本文。

【问题讨论】:

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


    【解决方案1】:

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

    否则复杂性就像您显示的O(n^2 log n)

    【讨论】:

    • 谢谢。真的很有帮助!
    猜你喜欢
    • 2016-07-18
    • 1970-01-01
    • 2016-02-26
    • 1970-01-01
    • 2020-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多