我们知道 Bellman Ford 是一种寻找负循环的算法。这是 Bellman Ford 的算法 输入:给定图 G(V,E),w(e) 是权重 输出:如果存在负循环,则返回 Yes。
1: set d(s) = 0 and d(v) = 1 for all v (- s
2: for i = 1 ... n-1 do
3: for every edge (u, v) in G do
4: if d(v) > d(u) + w(u,v) then
5: d(v) = d(u) + w(u,v)
6: end for
7: end for
8: for every edge (u, v) in G do
9: if d(v) > d(u) + w(u, v) then
10: return True
11:return False
第 8 行 - 第 11 行是为了检测负循环而再做一次放松,但是如果图中有一条线,为什么这些行可以保证检测到负循环?