- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
数据结构
计算机领域本科教育教学改革试点
工作计划(“101计划”)研究成果
101
不相交集
第9章
陈键飞
清华大学
9.1 问题引入
9.2 等价关系、等价类和不相交集
9.3 不相交集的存储实现
9.4 不相交集的基本运算实现
9.5 不相交集的应用
9.6 拓展延伸
9.7 应用场景
9.1问题引入:Kruskal算法的高效实现
9.1问题引入
数据结构
9.1问题引入:Kruskal算法的高效实现
9.1问题引入
数据结构
9.1问题引入:Kruskal算法的高效实现
9.1问题引入
数据结构
注意:只需要查询顶点之间是否连通,不关心它们具体通过哪条路径连通
此外,只需要支持加边操作,而不需要支持删边操作。
这种情况下,与其完整地维护无向图的结构,不如直接维护连通分量构成的集合
每个连通分量用其中顶点的集合表示。
连通性查询问题变成了维护若干不相交的集合,并动态地合并、查找的问题。
9.1问题引入:Kruskal算法的高效实现
9.1问题引入
数据结构
9.2等价关系、等价类和不相交集
9.2等价关系、等价类和不相交集
数据结构
不相交集与数学中等价关系、等价类的概念密切相关
元素之间的等价关系自然地定义了若干不相交集的集合
因此,不相交集常常用于处理等价性查询的问题
例如,两个顶点在同一连通分量中就可以看做一种等价性
9.2等价关系、等价类和不相交集
9.2等价关系、等价类和不相交集
数据结构
9.2等价关系、等价类和不相交集
9.2等价关系、等价类和不相交集
数据结构
例9.1.不同问题中的等价关系:
9.2等价关系、等价类和不相交集
9.2等价关系、等价类和不相交集
数据结构
对集合中的任意元素,称所有与其等价的元素为一个等价类:
等价关系把集合划分成若干个不相交的等价类,每个等价类中的元素互相等价。
称所有等价类构成的集合为一个商集。
商集是一系列集合,这些集合彼此不相交,并且其并集是全集X。这与不相交集的概念恰好对应。
9.2等价关系、等价类和不相交集
9.2等价关系、等价类和不相交集
数据结构
9.2等价关系、等价类和不相交集
9.2等价关系、等价类和不相交集
数据结构
不相交集可以用于等价性的动态查询。
等价性的查询在计算机科学中有广泛应用。例如,在编译器的设计中,用于判断符号地址的等价性。
9.3不相交集的存储实现
9.3不相交集的存储实现
数据结构
不相交集数据结构定义:
例:考虑集合X={1,2,3,4,5,6,7,8}。
合法的划分:{{1,2,3,4,5},{6,7},{8}}或{{1}{2},{3},{4},{5},{6},{7},{8}};
以下不是集合X的划分:{{1,2,3,4,5},{6,7}}和{{1,2,3},{3,4,5},{5,6,7,8}}。
9.3不相交集的存储实现
9.3不相交集的存储实现
数据结构
不相交集的数据结构需要动态处理集合的合并和查询操作,其ADT定义如下:
9.3不相交集的存储实现
9.3不相交集的存储实现
数据结构
9.4不相交集的基本运算实现
9.4不相交集的基本运算实现
数据结构
9.4不相交集的基本运算实现
9.4不相交集的基本运算实现
数据结构
9.4不相交集的基本运算实现
9.4不相交集的基本运算实现
数据结构
9.4.1按秩合并
9.4不相交集的基本运算实现
数据结构
9.4.1按秩合并
9.4不相交集的基本运算实现
数据结构
采取按秩合并策略后,InitSet和Union操作的实现调整为算法9-4、算法9-5:
9.4.1按秩合并
9.4不相交集的基本运算实现
数据结构
9.4.1按秩合并
9.4不相交集的基本运算实现
数据结构
9.4.2路径压缩
9.4不相交集的基本运算实现
数据结构
9.4.2路径压缩
9.4不相交集的基本运算实现
数据结构
9.4.2路径压缩
9.4不相交集的基本运算实现
数据结构
下图演示了同时采用按秩合并和路径压缩策略时,8个元素构成的不相交集的合并过程。
采用了按秩合并和路径压缩的
不相交集运行示例
9.4.2路径压缩
9.4不相交集的基本运算实现
数据结构
9.4.2路径压缩
9.4不相交集的基本运算实现
数据结构
9.4.3时间复杂度分析
9.4不相交集的基本运算实现
数据结构
9.4.3时间复杂度分析
9.4不相交集的基本运算实现
数据结构
文档评论(0)