我有一个带负边权重的有向图。该图由程序修改,有时会形成负循环。当发生这种情况时,最短路径算法(Bellman-ford / Johnson / Floyd-Warshall)将检测到这种负循环的存在并失败,但不会产生其他有用的信息。
我想确定什么边缘导致负循环并且禁止在图中进行这样的修改。有人可以用指针帮助我吗?
谢谢,
保
答案 0 :(得分:0)
保罗,如果您要添加边缘(来源,目的地,体重),并且您知道从目的地到源的距离,那么当您且仅当新的重量+旧距离为时,您才会创建负循环负
另一方面,如果你刚刚得到一个图形,那么bellman-ford算法会检测到负周期,并且当它找到一个时可以展示一个。您只需找到执行该操作的实现(而不仅仅是失败),或者自己编写一个实现。这不是一个困难的算法,网上有很多伪代码。
(如果你想要为你自己定制的话,可能需要几天的咨询工作。我这样做是为了谋生而且很乐意。)
我不确定你需要什么。我不知道,但我想有一个Bellman-Ford的在线版本,随着新的边缘进入,它的距离保持最新,并且如果你添加一个坏的,它会尖叫。