Algorithm 如果我们可以在运行Bellman-Ford算法后再次松弛边缘,为什么会存在负循环
我们知道Bellman Ford是一个寻找负循环的算法。 这是贝尔曼·福特的算法 输入:给定一个图GV,E和we是权重 输出:如果存在负循环,则返回是Algorithm 如果我们可以在运行Bellman-Ford算法后再次松弛边缘,为什么会存在负循环,algorithm,bellman-ford,Algorithm,Bellman Ford,我们知道Bellman Ford是一个寻找负循环的算法。 这是贝尔曼·福特的算法 输入:给定一个图GV,E和we是权重 输出:如果存在负循环,则返回是 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) +
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行是检测负循环的另一条松弛线,但是如果图中有负循环,为什么这些线保证检测负循环?您正在检测这样一个事实,即某些顶点对之间的最短路径太长,它必须多次访问某个顶点,因此它包含一个循环。如果该循环的长度>=0,则删除该循环最多只能保持路径的长度不变,因此不会将其视为一种改进。因此,如果你发现这样一条最短的路径中有一个循环,那么这个循环的长度必须是负的。此外,如果有一个长度为负的循环,它将被发现是从其中任何顶点返回到同一顶点的最短路径。这个问题似乎是离题的,因为它是关于图论的。试着问一下我知道Bellman Ford是一种算法,可以在可能具有负边权重的网络中找到最短路径。寻找负圆柱可能是一种延伸,