dijkstra - 为什么我们不能将 Dijkstra 算法应用于具有负权重的图?

标签 dijkstra

为什么我们不能将 Dijkstra 算法应用于具有负权重的图?

最佳答案

如果每次从 C 到 D 旅行都得到报酬,那么找到从 A 到 B 的最便宜的路径意味着什么?

如果两个节点之间存在负权重,则“最短路径”将永远在这两个节点之间向后和向前循环。跳数越多,路径就越“短”。

这与算法无关,与无法回答这样的问题有关。

编辑 :

上述声明假定双向链接。如果没有整体负权重的周期,你就没有办法永远循环,获得报酬。

在这种情况下,Dijkstra 算法可能仍然失败:

考虑两条路径:

  • 在穿过权重为 -25 的最终边之前,成本为 100 的最佳路径,总共为 75,并且
  • 没有负加权边的次优路径,总成本为 90。

  • Dijkstra 算法将首先调查次优路径,并在找到时宣布自己已完成。它永远不会跟进比找到的第一个解决方案更糟糕的子路径

    关于dijkstra - 为什么我们不能将 Dijkstra 算法应用于具有负权重的图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3200446/

    相关文章:

    algorithm - 图、PRIM 和 DIJKSTRA 问题?

    algorithm - Dijkstras 算法似乎不起作用,我的理解一定有缺陷

    algorithm - 具有 2 个约束(权重和颜色)的最短路径

    algorithm - 如何高效测试 Dijkstra 算法

    algorithm - Scala - 两个节点之间的最短路径递归算法

    algorithm - 如何制作更快的算法

    opencv - 如何使用OpenCV在ROS上上传 map 图像?

    javascript - 三维数组上的 Dijkstra 算法

    c++ - vector 大小的段错误

    c++ - Dijkstra 图在每条边上都有一个权重表