有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Tarjan的周期检测:缺少周期

我已经用http://learn.yancyparedes.net/2012/03/strongly-connected-components-using-tarjans-algorithm/的实现试用了Tarjan的循环检测算法。 下图用于测试:
a b
a c
b a
b c
cd
d a
作为输出,我得到以下结果:Set 0:[c,b,a,d]

我的问题是我需要所有的循环,所以我缺少这个结果中的集合[a,b]和[a,c,d]。 您现在是否知道是否有办法修改实现以获得所有周期?或者这个问题存在另一种算法

谢谢大家!


共 (1) 个答案

  1. # 1 楼答案

    Tarjan的算法不能找到所有的循环。它查找所有强连接的组件,这不是同一件事。在一般情况下,不可能有效地找到所有的循环(对于一个完整的图,输出的大小是指数的。而且,仅仅找到最长的循环已经是NP困难的)。当然,您可以使用回溯