用于不相交集合的数据结构
2017-01-03 09:51
260 查看
不相交集合的操作
MAKE-SET(x):建立一个集合,它的唯一成员(因而为代表)是x。因为各个集合是不相交的,所以x不会出现在别的某个集合中UNION(x,y):将包含x和y的两个集合合并。假定操作之前着两个集合是不相交的。
FIND-SET(x):返回一个指针,这个指针指向包含x的(唯一)集合的代表。
不相交集合的链表表示

不相交森林集合
按秩合并:秩表示该节点高度的一个上界,总是秩小的树接到秩大的树路径压缩:

秩:x.rank,代表x的高度
MAKE-SET(x) x.p = x x.rank = 0 //按秩合并 UNION(x,y) LINK(FIND-SET(x),FIND-SET(y)) LINK(x,y) if x.rank > y.rank y.p = x else x.p = y if x.rank == y.rank y.rank = y.rank + 1 //带有路径压缩的FIND-SET FIND-SET(x) if x != x.p x.p = FIND-SET(x.p) return x.p
FIND-SET过程是一个两趟方法,递归时,第一趟沿着查找路径向上找到根,递归回溯时,第二趟沿着搜索树向下更新节点,使其直接指向根
相关文章推荐
- 用于不相交集合的数据结构——查并集
- 算法导论学习笔记(15)——用于不相交集合的数据结构
- 并查集(用于不相交集合的数据结构)
- 算法导论 第二十一章 用于不相交集合的数据结构
- 并查集——用于不相交集合的数据结构
- 算法导论代码 第21章 用于不相交集合的数据结构
- 算法导论21(用于不相交集合的数据结构)
- 算法导论 第21章 用于不相交集合的数据结构
- 用于不相交集合的数据结构(并查集)
- 算法导论 第21章 用于不相交集合的数据结构
- 用于不相交集合的数据结构(算法导论第21章-并查集)
- 算法导论习题解-第21章用于不相交集合的数据结构
- 算法导论——用于不相交集合的数据结构
- 算法导论学习笔记-第二十一章-用于不相交集合的数据结构
- 算法导论用于不相交集合的数据结构
- 算法导论之用于不相交集合的数据结构
- 第21章:用于不相交集合的数据结构
- 算法导论笔记:21用于不相交集合的数据结构
- [算法导论读书笔记]用于不相交集合的数据结构(并查集)
- 用于不相交集合的数据结构——查并集