例如,
让我们说
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
???
提前谢谢大家。
编辑:
这是一张图片,显示您不必两次访问相同的边缘。
答案 0 :(得分:3)
Floyd Warshall是一个带约束的算法:graph with no negative cycle
,如果你想在带负循环的图中找到最短路径你不能使用Floyd Warshal,这就有理由认为你的图有负周期{{ 1}}费用为4->3->4
。如果你在这个周期中进行一次,你的费用从-300
减少到400
,但为什么要停在那里?再过一次,您的费用将为700
,反复一次又一次,费用为100
,-200
,....你可以永远这样做,算法永远不会停止。这就是Floyd Warshall算法中存在约束-500
的原因。
答案 1 :(得分:2)
Floyd-Warshall算法需要一个无负循环的图形。在您的示例中,4->3->4
是一个负周期,因为周期内权重的总和为-500 + 200 = -300
。