- 1、本文档共31页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1 经典应用——最小生成树 5、算法过程示意: 5 6 4 2 3 1 1 6 5 3 4 6 5 2 6 5 原始图 5 6 4 2 3 1 5 3 4 2 最小生成树 第七讲 并查集(Disjoint Set) 导引问题(1798) 在某个城市里住着n个人,现在给定关于 n个人的m条信息(即某2个人认识), 假设所有认识的人一定属于同一个单位,请计算该城市最多有多少单位? 如何实现? 什么是并查集? 英文:Disjoint Set,即“不相交集合” 将编号分别为1…N的N个对象划分为不相交集合, 在每个集合中,选择其中某个元素代表所在集合。 常见两种操作: 合并两个集合 查找某元素属于哪个集合 所以,也称为“并查集” 实现方法(1) 用编号最小的元素标记所在集合; 定义一个数组 set[1..n] ,其中set[i] 表示元素i 所在的集合; 1 2 3 4 5 6 7 8 9 10 1 2 1 4 2 6 1 6 2 2 i Set(i) 不相交集合: {1,3,7}, {4}, {2,5,9,10}, {6,8} 方法(1)——效率分析 find1(x) { return set[x]; } Merge1(a,b) { i = min(a,b); j = max(a,b); for (k=1; k=N; k++) { if (set[k] == j) set[k] = i; } } Θ(1) Θ(N) 有待改进? 对于“合并操作”,必须有哪些信誉好的足球投注网站全部元素! 树结构如何? 实现方法(2) 每个集合用一棵“有根树”表示 定义数组 set[1..n] set[i] = i , 则i表示本集合,并是集合对应树的根 set[i] = j, ji, 则 j 是 i 的父节点. 1 2 3 4 5 6 7 8 9 10 1 2 3 2 1 3 4 3 3 4 i Set(i) 1 5 2 4 7 10 3 6 8 9 方法(2)——效率分析 find2(x) { r = x; while (set[r] != r) r = set[r]; return r; } merge2(a, b) { set[a] = b; } Θ(1) 最坏情况Θ(N) 一般情况是…? 困惑~~~ 性能有本质改进? 如何避免最坏情况? 进一步优化——路径压缩 思想:每次查找的时候,如果路径较长,则修改信息,以便下次查找的时候速度更快 步骤: 第一步,找到根结点 第二步,修改查找路径上的所有节点,将它们都指向根结点 带路径压缩的查找算法 find3(x) { r = x; while (set[r] != r) //循环结束,则找到根节点 r = set[r]; i = x; while (i != r) //本循环修改查找路径中所有节点 { j = set[i]; set[i] = r; i = j; }} 路径压缩示意图 9 10 8 12 20 21 16 4 6 11 1 6 4 11 1 10 12 9 8 20 21 16 示例—畅通工程(1796) 题目描述: 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路? 题目分析 最赤裸裸的并查集,无话可说~ 附:参考源码(1796) 示例—迷宫城堡(1797) 下面的例子,前两个是符合条件的,但是最后一个却有两种方法从5到达8。 题目分析: 该你们来说了~ 经典应用——最小生成树MST(mining spanning tree) 1、什么是——生成树? 5 6 4 2 3 1 1 6 5 3 4 6 5 2 6 5 5 6 4 2 3 1 1 5 4 6 5 a.带权图 b.生成树 经典应用——最小生成树 2、什么是——最小生成树? 5 6 4 2 3 1 1 6 5 3 4 6 5 2 6 5 a.带权图 c.最小生成树 5 6 4 2 3 1 1 5 3 4 2 经典应用——最小生成树 3、如何求——最小生成树?(1664) A) Prim (普里姆)算法 B) Floyd(弗洛伊德)算法(类似思想) 理论基础:MST性质(证明…) C) Kruskal(克鲁斯卡尔)算法 Floyd(弗洛伊德)算法 3 1
您可能关注的文档
- 人教新课标高二选修7Unit4SharingLanguagepoints(共81张PPT)讲述.ppt
- 05第五章《过电压与防雷电知识》.pptx
- 05第五单元 第一章 第五节 两栖类和爬行类 2.ppt
- 人教新课标(标准实验版)七年级下册第八章东半球其他的国家和地区第二节欧洲西部(共39张PPT)讲述.ppt
- 人教版2011—2012学年度七下语文期末测试卷(三)讲述.doc
- 人教版2014年6月第1版小学三年级上册信息技术教案讲述.doc
- 人教版2016届九年级上第三次阶段性测试卷讲述.doc
- 05项目进度管理.ppt
- 05【海洋开发与环境保护】港口建设及施工中的环境问题2011.ppt
- 人教版PEP小学英语3-6全部单词讲述.doc
- 功能设计_MM_MM015_报废单_20080109_v2.0.doc
- 功能设计_MM_MM021_采购订单批导入程序_20080108_v1.0.doc
- 功能设计_MM_MM020_出库单_20071205_v2.1.doc
- 功能设计_MM_MM019_入库单_20071205_v2.1.doc
- 功能设计_MM_MM018_领料单_20080114_v2.0.doc
- 功能设计_MM_MM016_ERP与招投标系统接口_20080327_v1.2.doc
- 功能设计_MM_MM014_退库单_20080109_v1.0.doc
- 功能设计_MM_MM013_物料盘点清单_20080114_v2.0.doc
- 中考数学知识点10 一元一次不等式(组)(2).pdf
- 七年级数学优质课公开课教案教学设计期中综合检测.pdf
文档评论(0)