我必须在有向加权图中找到一个负周期。我知道Bellman Ford算法是如何工作的,它告诉我是否存在可达到的负周期。但是它没有明确命名。
如何获取循环的实际路径?
应用标准算法后,我们已经进行了次迭代,因此不可能进一步改进。如果我们仍然可以降低到节点的距离,则存在负循环。
我的想法是:由于我们知道仍然可以改善路径的边缘,并且知道每个节点的前身,因此我们可以从该边缘追溯到直到再次遇到它为止。现在我们应该有一个循环。
可悲的是,我没有找到任何可以告诉我这是否正确的论文。那么,它真的像那样工作吗?
编辑:此示例证明我的想法是错误的。给定下图,我们从节点运行Bellman-Ford 。
我们按的顺序处理边缘。经过次迭代后,我们得到节点距离:n − 1
2 :- 30 3 :- 15
和父表:有父有父有父
3 2 3 3 2
现在,进行第次迭代,我们发现仍可以使用边沿改善节点的距离。因此,我们知道存在一个负循环,而是其中的一部分。1 一个一个
但是,通过追溯到父表的方式,我们陷入了另一个负循环,再也不会相遇。一
我们如何解决这个问题?