C#,图论与图算法,无向图(Graph)回环(Cycle)的不相交集(disjoint)或并集查找(union find)判别算法与源代码
1 回环(Cycle)的不相交集(disjoint)或并集
不相交集数据结构是一种数据结构,它跟踪划分为多个不相交(非重叠)子集的一组元素。联合查找算法是对此类数据结构执行两个有用操作的算法:
查找:确定特定元素所在的子集。这可用于确定两个元素是否在同一子集中。
并集:将两个子集合并为一个子集。这里我们首先要检查这两个子集是否属于同一个集合。如果没有,那么我们就不能执行联合。
在这篇文章中,我们将讨论不相交集数据结构的应用。应用程序用于检查给定的图形是否包含循环。
联合查找算法可用于检查无向图是否包含圈。注意,我们已经讨论了一种检测循环的算法。这是另一种基于联合查找的方法。此方法假定图形不包含任何自循环。
我们可以跟踪一维数组中的子集,我们称之为父数组[]。
让我们考虑以下图表:
2 图表中的循环
对于每条边,使用边的两个顶点创建子集。如果两个顶点位于同一子集中,则会找到一个循环。
3 核心代码
using System;
using System.Collections;
using System.Collections.Generic;
namespace Legalsoft.Truffer.Algorit