Bellman-Ford算法检测到什么?负重或负循环?

时间:2013-11-04 00:45:45

标签: algorithm graph

如果我们得到一个图表,现​​在从源头我们将计算最短路径。现在,如果边缘具有负权重,但是在到达目的地时有边缘到边缘以回到该边缘,我的意思是如果没有循环,那么我们没有负循环。但维基百科中的here给定算法再次从源运行,因此它检测到负边缘权重但不是负循环。我的问题是,如何确定负循环?

2 个答案:

答案 0 :(得分:20)

负权重周期是权重总和为负数的周期。 Bellman-Ford算法以V-1步长向图中的所有节点传播正确的距离估计,除非存在负权重周期。如果负重周期,您可以无限期地放松其节点。因此,如在维基百科算法中所见,在V-1步骤之后放松边缘的能力是对负权重循环的存在的测试。所以Bellman-Ford算法测试负重量周期。

答案 1 :(得分:0)

您可以参考此链接来确定实际的负周期。 https://cp-algorithms.com/graph/finding-negative-cycle-in-graph.html 在算法的最后一次迭代中。我们只了解受影响的节点。 由于负循环而影响。 实际的负循环形成了parent [parent [parent](父母[父母])的无限循环。

代码的第二个循环就像从顶部扔了个弹球,一段时间后,球无限地绕着圆形迷宫旋转。我们找到那个圆形迷宫。