如何检测循环中的
- 有向图
- 无向图。
对于无向图..我想到的一种算法是使用不相交集。
- 对于 G 中的每个顶点 v
- 套装(v)
- 对于 G 中的每个边 e(u,v) 一个接一个
- 如果查找集(u) == 查找集(v)
- return true // 循环存在
- 如果查找集(u) == 查找集(v)
- 返回假
如何检测循环中的
对于无向图..我想到的一种算法是使用不相交集。
您在无向图中找到循环的方法应该是这样的:
对于有向图,您应该使用Tarjan 的强连通分量算法来获取图中强分量的数量。然后,您可以检查强连通分量数是否等于顶点数。因为如果有向图中存在环,那么同一个强连通分量中至少有两个顶点。这意味着如果有向图有环,则强连通分量的总数应小于顶点数。