- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Ch08-不相交集
不相交集 高文宇 gwyy@163.com §1 等价关系 定义1(关系):relation R is defined on a set S if for every pair of elements (a, b), a, b ?S, a R b is either true or false. If a R b is true, then we say that a is related to b. 定义2(等价关系):A relation, ~, over a set, S, is said to be an equivalence relation over S iff it is symmetric, reflexive, and transitive over S. 定义3(等价类):Two members x and y of a set S are said to be in the same equivalence class iff x ~ y. §2 动态等价性问题 动态连通性问题 问题的输入是一系列整数对,其中每个整数表示某种类型的对象,一个整数对(p, q)可以视为“p和q是相连的”,“相连”是等价关系。 程序从输入中读取整数对(p, q),如果已知前面所有的整数对都不能说明p和q是相连的,那么将这一对整数对写入到输出中。如果已知的数据可以说明p和q是相连的,则程序忽略该整数对,并继续处理下一个整数对。 Union Find Given a set of N objects. ? Union command: connect two objects. ? Find/connected query: is there a path connecting the two objects? Dynamic connectivity union(4, 3) union(3, 8) union(6, 5) union(9, 4) union(2, 1) connected(0, 7)--No connected(8, 9)--Yes union(5, 0) union(7, 2) connected(0, 7)--Yes union(1, 0) union(6, 1) 动态连通性问题的几个难点 对象的个数 N 可能会很庞大 操作的次数(find,union)M 可能很庞大 Find 查询和 union操作可能是交替进行的 算法是动态的,集合(等价类)会因为union操作而发生改变。 算法是联机算法(on-line)。 Union-find的基本实现 Union-find Union-find示例 算法分析 find()方法:O(1) union()方法:O(N) connected():O(1) 因此,若有N个节点,输入为N个整数对,则总的运行时间为O(N^2)。 对于有100万个节点,200万个整数对的测试文件largeUF.txt来说,Quick-find无能为力。 采用树形结构实现union 通过采用“树”结构来加速union操作 Quick Union Quick Union使用例程 Quick union示例 Quick union算法分析 find()方法:增加了 union()方法:O(1),但union依赖于find connected():不变 问题在于quick union算法在最坏情况下并不比quick find算法好。 加权quick union算法 Union-by-Size:简单修改quick union算法就能大幅提高性能。与其在union()中随意地将一棵树连接到另一棵树,我们可以记录每一棵树的大小,并总是将较小的树连接到较大的树上。 Union-by-Height: Always change the shallow tree Union by size实际效果 命题H:对于N个节点,加权quick-union算法构造的森林中的任意节点的深度不超过lgN。 推论:对于加权quick-union算法和N个节点,在最坏情况下find(),connected(),union()的成本的增长数量级为lgN。 Union by height 进一步改进--路径压缩 理想情况下,我们希望每个节点都直接连接在它的根节点上,但我们又不希望像quick-find算法中那样通过修改大量链接来做到这一点。 但是接近这种理想状态的方法很简单,那就是在检查节点的同时将它们直接连接到根节点。 要实现路径压缩,只需在find()方法中稍做修改即可。 作业 看程序: disjsets.c—不相交集的实现 再见 再见 * typedef int DisjSet[ NumSets + 1 ]; typed
您可能关注的文档
- (五笔快学)98五笔卡片.doc
- (二下)26.蜜蜂引路.ppt
- (人教版)七年级下册数学相交线课件4.ppt
- (二上)6.表内乘法(二)(4.9的乘法口诀).ppt
- (二上)4.表内乘法(一)(3.乘加乘减).ppt
- (广东卷)2013年普通高等学校招生全国统一考试.doc
- (水寨) 对“霁虹桥与摩崖石刻”保护修复的思考2.doc
- (特别报道)华山上的摩崖石刻.doc
- (用)除数是两位数的除法复习.ppt
- (新)建立标准化代维班组规范.doc
- 专题04 天气与气候(期末真题汇编,广东专用)(解析版).docx
- 专题04 中国的经济发展(百题精选)(期末真题汇编)(原卷版).docx
- 专题05 建设美丽中国(专项训练)(原卷版).docx
- 专题05 建设美丽中国(专项训练)(解析版).docx
- 专题05 居民与文化 发展与合作(百题精选)(期末真题汇编)(解析版).docx
- 2024年下半年教师资格考试中学《教育知识与能力》真题(含答案和解析).docx
- 专题05 居民与文化 发展与合作(百题精选)(期末真题汇编)(原卷版).docx
- 专题05 居民与文化 发展与合作(期末真题汇编,广东专用)(解析版).docx
- 专题05 居民与文化 发展与合作(期末真题汇编,广东专用)(原卷版).docx
- 统编版七年级语文上册课件《雨的四季》.pptx
原创力文档


文档评论(0)