【问题标题】:Implement Dijkstra's Algorithm with a d-ary heap使用 d-ary 堆实现 Dijkstra 算法
【发布时间】:2012-11-25 00:11:30
【问题描述】:

正如您在此链接中看到的:http://en.wikipedia.org/wiki/D-ary_heap#Applications 它在维基百科中说 d 的最佳选择是 d=m/n (它导致总时间复杂度为 O(m logm/n n) )

在我看来,这个猜测是凭空捏造的。有没有一种简单的方法可以证明(甚至解释)这确实是最优的 d ?

提前致谢

【问题讨论】:

    标签: complexity-theory time-complexity dijkstra asymptotic-complexity


    【解决方案1】:

    从解释本身你可以推断出你有 n 个删除最小操作,每个操作都需要 O(d log(n)/log(d)) 和 m 个减少 O(log(n)/log(d)) 的优先级操作。然后合并的工作是(m*log(n)+n*d*log(n))/log(d)

    如果填写建议的d值,则全局行为如O(m*log(n)/log(d))所述。如果取任何其他 d,则其中一项大于平均值,导致复杂度增加。

    【讨论】:

      猜你喜欢
      • 2015-07-16
      • 2018-05-16
      • 2013-03-01
      • 2019-07-31
      • 2015-05-21
      • 2022-01-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多