Алгоритм:
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 принадлежат одному и тому же множеству, поэтому алгоритм обнаруживает цикл. Очевидно, что граф не содержит циклов.
Алгоритм безупречно работает для ориентированных графов. Помогите пожалуйста с этим анализом.