1、并查集定义
并查集是一种数据结构,常用来描述集合。 在一些应用的问题中,需将n个不同的元素划分成一组不相交的集合。开始时,每个元素自成一格单元素集合,然后按一定顺序将属于同一组的元素的集合合并。其间要反复用到查询某个元素属于哪个集合的运算。适合于描述这类问题的抽象数据类型称为并查集。
2、并查集可以解决的常规问题
(1)某个元素是否属于某个集合;
(2)某两个节点是否属于同一个集合(亲戚关系判断)
(3)判断图是否有环问题
3、并查集的分类
(1)Union-find 简单并查集
(2)Quick-union 优化的并查集
(3)加权值 quick-union(处理了方法2最坏的情况)
(4)路径压缩加权值quick-union
4、常见问题描述和并查集关键函数
常见的问题是给一堆节点之间的连接关系,要我们来判断这些节点可以划分为几个集合,或者给一堆图的节点与边的关系,问我们这个图是否有环等问题。
为了解决类如上述问题,我们采用并查集需要定义两个关键函数:
(1)find(x) :找出元素x所有集合(帮派)的老大;
(2)union(x,y):将元素x和元素y所在的两个集合合并为一个新的集合(小帮派合并为大帮派)
5、并查集的实现
5.1、并查集构建的思想
用比较通俗易懂的话来说,并查集就是一个建立帮派的过程,
<