【问题标题】:Why the worst case for Dijkstra is E + VlogV?为什么 Dijkstra 最坏的情况是 E + VlogV?
【发布时间】:2013-06-04 02:48:27
【问题描述】:

不应该是 E*(logV) 吗?参考:Dijkstra's algorithm

【问题讨论】:

  • 请解释为什么你认为这个算法应该是E(l​​ogV)。
  • 是的,抱歉,Dijkstra 打错了。
  • 常见的实现 O(|E| log |V|)。您需要一个支持恒定时间递减键操作的优先级队列,以获得更好的渐近界。您的链接指出了这一点。

标签: algorithm language-agnostic


【解决方案1】:

Dijkstra's algorithm 的最坏情况时间复杂度取决于它的实现方式:

Simple Implementation:O((E * c1) + (V * V)) = O(E + V^2) ~ O(V^2)

Using Fibonacci Heap:O((E * c2) + (V * log V)) = O(E + V log V) ~ O(V log V)

【讨论】:

  • 对于堆解决方案的分析 - 如果它是 E = V^2 的密集图,则这是不准确的。在那种情况下,最坏的情况仍然是 O(E) = O(V^2)。
【解决方案2】:

在最坏的情况下E > V 所以复杂性是E + VlogV 可以用E+ElogV 替换,而复杂性是ElogV 是你的意思吗?

【讨论】:

    猜你喜欢
    • 2014-08-01
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多