算法:
For each edge (u, v) in the Adjacency list:
If u and v do not belong to the same set:
Union(u, v)
else:
return true // cycle detected
return false
图形:
(1)-------(2)
邻接列表:
[1] - > [2]
[2] - > [1]
不相交集合:
{{1},{2}}
迭代1 :
边缘e =(1,2)
联盟(1,2)
不相交集= {{1,2}}
迭代2 :
边缘e =(2,1)
2和1都属于同一组,因此算法检测到一个循环。 很明显,图表不包含循环。
该算法可以完美地用于有向图。请帮我解决这个问题。
答案 0 :(得分:0)
循环必须有明显的边缘!在联合查找算法中,您遍历所有边。您需要从邻接列表中筛选出重复的边。在您的情况下,只有一次迭代,因此它将返回false。