【问题标题】:Bellman ford vs Dijikstra?贝尔曼福特 vs 迪杰斯特拉?
【发布时间】:2020-04-10 11:21:50
【问题描述】:

在阅读了 Dijkstra 和 Bellman-ford 之后,我有一个疑问,为什么 Dijkstra 在一次迭代中给出答案,而 bellman ford 进行 n-1 次迭代?

【问题讨论】:

  • 你读过标签上的cmets吗?答案已经有了。
  • 由于负边缘?
  • 正确。考虑一个负边缘的值可能是负十亿,大于所有正权重的总和。在检查完所有边之前,您不知道最大的负节点是什么,以及它将如何影响您的结果。
  • Bellman-Ford 利用了这样一个事实,即从图中任意顶点 i 到任意顶点 j 的简单路径最多需要 n-1 跳,其中 n 是图中的顶点总数。

标签: data-structures dijkstra bellman-ford


【解决方案1】:

由于我有新身份证,我无法发表评论。这里有一些可以帮助你的东西。

在纸面上做时,您可能会假设 bellman-ford 的最佳顺序是您感到困惑的原因。

请记住,bellman ford 算法无论处理边缘的顺序如何都有效。现在尝试重新考虑不同的顺序,您会发现在最坏的情况下它将是 n-1。

事实上,这就是您必须进行 n-1 次迭代的原因。如果您知道,边的最佳顺序是什么 - 只需一次迭代就足够了。

这是一个可能对您有帮助的链接https://stackoverflow.com/a/41772030/13265840

希望对你有帮助!!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    相关资源
    最近更新 更多