列出有向图中的所有负循环

时间:2014-01-04 14:52:54

标签: c# java algorithm graph-algorithm

对于有负权重的有向图G(V,E),我搜索了一些类似的主题,看起来Bellmanford可以检测出负周期。但是一旦发现负循环就会停止,那么在这种情况下我们如何列出所有负循环呢?

考虑到Eric Lippert的建议,我试图从图中找到负面循环,但我觉得这不正确,为什么?因为图表在循环被移除后会发生变化,并且在旧图中可能会有额外的非负循环但在新图中找不到。 有人可以帮我清楚一下这个问题吗?

这可以用java或c#实现(我更喜欢c#)

感谢

1 个答案:

答案 0 :(得分:0)

嗯,你当然无法有效地找到它们:考虑n顶点上的完整图形,每条边上的权重为负-1。有an exponential number of negative-weight cycles in this graph因此需要指数时间才能将它们全部写下来!

如果这不能阻止你,你最好的办法就是应用任何旧的循环查找算法,例如this question中的那些算法来查找所有循环,然后只丢弃那些非负循环的循环重量。