并查集是一种树形的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题,常常在使用中以森林表示。
1. 等价关系
具有自反性、对称性和传递性三个性质称为等价关系,如电气连通性。
给定一个等价关系“~”,基于以上性质,为判断是否a~b,只需验证a和b是否同属一个等价类,这给我们提供了解决等价问题的方法。
2. 基本操作
在初始化时使每个元素都属于一个集合,集合间不相交(disjoint)。
find: 返回给定元素的集合(即等价类)的名字;
union:使用求并操作添加关系,通常是先使用find判断二者是否已经有关系。
解决动态等价问题的方案有两种:一种是保证指令find能够以O(1)运行;另一种是保证union能以O(1)运行。二者不可兼得。
3. 数据结构实现和分析
3.1 find的O(1)可行性
要保证find的O(1)性,union就必须多做一些工作。一种方案是在每次union时扫描待合并集合,将其类名j全