使用Floyd-Warshall算法查找负重圆

时间:2018-11-10 13:41:15

标签: graph-theory floyd-warshall clrs floyd-cycle-finding

要判断图是否包含负圆,在运行Floyd-Warshall算法之后,我是否只能通过扫描矩阵的对角线元素以查找其是否具有负元素来解决该问题。我不知道该怎么证明...

1 个答案:

答案 0 :(得分:0)

应该清楚的是,如果算法期间的任何迭代中M[i][j]中的值为负,则存在从ij的负成本路径。如果M[i][i]<0ii的成本路径为负,因为它是封闭路径,因此必须包含一个周期。

有两种情况:**它是一个循环,或者您可以在路径中找到与j不同的i, 并将路径划分为p1=path(i,j),2) p2=path(j,j) p3= path (i,j)。因此,p2是负封闭路径,或者p1联合p3是负封闭路径。取一个负数,并应用相同的参数,直到得到一个必须为负数的循环

相反,如果存在一个由边S边之和的节点T的子集形成的负循环“ C”,则包含某个节点i,则在FW具有的迭代中通过S中的所有节点传递后,M[i][i]的值必须至少与路径'C'的开销一样小,因此M[i][i]<=T<0。由于FW不会增加,因此M[i][i]会保持负值,直到算法结束。