Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 如果我们可以在运行Bellman-Ford算法后再次松弛边缘,为什么会存在负循环_Algorithm_Bellman Ford - Fatal编程技术网

Algorithm 如果我们可以在运行Bellman-Ford算法后再次松弛边缘,为什么会存在负循环

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) +

我们知道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) + 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是一种算法,可以在可能具有负边权重的网络中找到最短路径。寻找负圆柱可能是一种延伸,