《算法导论》第21章 用于不相交集合的数据结构 个人笔记
来源:互联网 发布:罗慕路斯 知乎 编辑:程序博客网 时间:2024/05/22 02:08
第21章 用于不相交集合的数据结构
21.1 不相交集合的操作
用一个对象表示一个集合的每个元素,设x表示一个对象,希望支持以下三个操作:
- MAKE-SET(x):建立一个新的集合,它的唯一成员(因而为代表)是x。因为各个集合是不相交的,故x不会出现在别的某个集合中。
- UNION(x,y):将包含x和y的两个动态集合(表示为
Sx,Sy )合并成一个新的集合,即这两个集合的并集。 - FIND-SET(x):返回一个指针,这个指针指向包含x的(唯一)集合的代表。
不相交集合数据结构的许多应用之一是确定无向图的连通分量。下面伪代码中,图G的顶点集用G.V表示,边集用G.E表示
CONNECTED-COMPONENTS(G){ for each vextex v in G.V MAKE-SET(v) for each edge(u,v) in G.E if FIND-SET(u) != FIND-SET(v) UNION(u,v)}SAME-COMPONENT(u,v){ if FIND-SET(u) == FIND-SET(v) return TRUE else return FALSE}
21.2 不相交集合的链表表示
每个集合用一个自己的链表来表示。每个集合的对象包含head属性和tail属性,head属性指向表的第一个对象,tail属性指向表的最后一个对象。链表中的每个对象都包括一个集合成员、一个指向链表中下一个对象的指针和一个指回到集合对象的指针。
21.3 不相交集合森林
MAKE-SET(v){ x.p = x x.rank = 0}UNION(u,v){ LINK(FIND-SET(u),== FIND-SET(v))}LINK(x,y){ if x.rank > y.rank y.p = x else x.p = y if x.rank == y.rank y.rank++}FIND-SET(x){ if x != x.p x.p = FIND-SET(x.p) return x.p}
阅读全文
0 0
- 《算法导论》第21章 用于不相交集合的数据结构 个人笔记
- 算法导论笔记:21用于不相交集合的数据结构
- 算法导论代码 第21章 用于不相交集合的数据结构
- 算法导论 第21章 用于不相交集合的数据结构
- 算法导论习题解-第21章用于不相交集合的数据结构
- 用于不相交集合的数据结构(算法导论第21章-并查集)
- 算法导论 第21章 用于不相交集合的数据结构
- 算法导论21(用于不相交集合的数据结构)
- 算法导论学习笔记-第二十一章-用于不相交集合的数据结构
- 算法导论之用于不相交集合的数据结构
- 算法导论用于不相交集合的数据结构
- 算法导论学习笔记(15)——用于不相交集合的数据结构
- 第21章:用于不相交集合的数据结构
- 《算法导论》笔记 第21章 21.1 不相交集合上的操作
- 《算法导论》笔记 第21章 21.2 不相交集合的链表表示
- 算法导论 第二十一章:不相交集合的数据结构
- [算法导论读书笔记]用于不相交集合的数据结构(并查集)
- 《算法导论》笔记 第21章 21.3 不相交集合森林
- Unique Paths
- php中array_merge与array相加的区别
- 设计模式-单例模式
- 三大新兴力量_引领中国消费新经济丨图媒体
- Android Track的play流程
- 《算法导论》第21章 用于不相交集合的数据结构 个人笔记
- [最新] Visual Studio工程文件清理工具V1.1
- PHP实现图片压缩同时保持清晰度
- java Collections.sort()实现List排序的默认方法和自定义方法
- MySQL位数据类型
- Kotlin的配置和使用
- MongoDB学习笔记(二)
- 一元夺宝
- git add和git commit的区别