algorithm - Floyd–Warshall 算法中不允许出现哪种循环?

标签 algorithm graph-algorithm floyd-warshall

例如,

假设

1->2 costs 100
2->4 costs 600

所以 1->2->4 花费 700

如果有一条从 4 到 3 的边成本为 -500 怎么办? 从 3 到 4 的不同边花费 200

4->3 costs -500
3->4 costs 200

所以 1->2->4->3->4 花费 400

小于700

那么 1->2->4->3->4 是否被认为是比 1->2->4 更短的路径???

我知道不允许循环,这是没有重复边的路径示例。

顶点呢?如果他们重复,这在 Floyd Warhsall 是否是允许的周期?

因为我知道有不同类型的算法,一种算法允许一种循环而不允许另一种循环。

有人能给我解释一下吗?回答问题,1->2->4->3->4 是否被认为比 1->2->4 更短???

提前谢谢大家。

编辑:

这是一张图片,显示您不必访问同一条边两次。

enter image description here

最佳答案

Floyd–Warshall 算法需要一个没有负环的图。在您的示例中,4->3->4 是一个负循环,因为循环中的权重总和为 -500 + 200 = -300

关于algorithm - Floyd–Warshall 算法中不允许出现哪种循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27259205/

相关文章:

c++ - 在已排序的双向链表中插入节点

algorithm - 使用像 Photoshop 这样的 RaphaelJs 在角落旋转元素

c# - 这是找到最短路径的最佳算法(时间复杂度)

algorithm - 哪种算法可用于对图进行分区以使每个分区组(或组件)的值相等或平衡?

algorithm - 最短路径练习

algorithm - 如何构造这个约束满足问题?

graph-algorithm - 匈牙利算法-任意选择

algorithm - 找到两点之间的最大路径

java - 弗洛伊德-沃歇尔算法

java - 将 Floyd-Warshall 限制为路径长度 k