tarjan的循环检测:丢失的循环

mkh04yzy  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(300)

我已经试用了tarjan的循环检测算法,并从http://learn.yancyparedes.net/2012/03/strongly-connected-components-using-tarjans-algorithm/ . 下图用于测试:
a和b
a和c
b和a
b和c
c和d
d a公司
作为输出,我得到以下结果:设置0:[c,b,a,d]
我的问题是我需要所有的循环,所以我缺少了这个结果中的集合[a,b]和[a,c,d]。您现在知道是否有一种方法可以修改实现以获得所有周期吗?或者这个问题还有其他算法吗?
谢谢您!

5us2dqdw

5us2dqdw1#

tarjan的算法不能找到所有的循环。它发现所有强连接的组件,这是不一样的事情。在一般情况下,不可能有效地找到所有的循环(对于一个完整的图,输出的大小是指数的)。此外,仅仅找到最长的循环已经是np困难的)。当然,你可以使用回溯法。

相关问题