- 1、本文档共26页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 第13章 最小生成树 生成树与最小生成树 Kruskal算法 Prim算法 算法的正确性 * 生成树 A B C D E H M A B C D E H M 无向图G 无向图G的生成树 生成树是无向连通图的极小连通子图。包含图的所有 n 个结点,但只含图的 n-1 条边。在生成树中添加一条边之后,必定会形成回路或环。 * 最小生成树 定义:加权无向图的所有生成树中边的权值(代价) 之和最小的树。 实例: 1 2 4 3 5 6 6 1 6 5 5 5 6 3 4 2 1 2 4 3 5 6 1 5 3 4 2 左图的最小代价生成树 * 第13章 最小生成树 生成树与最小生成树 Kruskal算法 Prim算法 算法的正确性 * Kruscal 算法 基本思想:考虑图中权值最小的边。如果加入这条边不会导致回路,则加入;否则考虑下一条边,直到包含了所有的顶点 实现: 初始时,设置生成树为(V,Φ),如果V有n个顶点,则初始的生成树为具有n个连通分量的树。 按权值的大小逐个考虑所有的边,如果改变的加入能连接两个连通分量,则加入。当生成树只有一个连通分量时,算法结束。 * 1 2 4 3 5 6 6 1 6 5 5 5 6 3 4 2 1、初始连通分量:{1},{2},{3},{4},{5},{6} 2、反复执行添加、放弃动作。 边 动作 连通分量 (1,3) 添加 {1,3},{4},{5},{6},{2} (4,6) 添加 {1,3},{4, 6},{2},{5} (2,5) 添加 {1,3},{4, 6},{2,5} (3,6) 添加 {1,3,4, 6},{2,5} (1,4) 放弃 因构成回路 (3,4) 放弃 因构成回路 (2,3) 添加 {1,3,4,5,6,2} 最小代价生成树 1 2 4 3 5 6 1 5 3 4 2 * 算法难点及解决方案 如何从所有边中选择代价最小的边:用一个优先级队列来实现。将所有的边放入一个优先级队列,边的优先级就是它的权值。权值越小,优先级越高。 如何判断加入一条边后会不会形成回路:用并查集来实现。将一个连通分量表示为并查集中的一个子集,检查一条边加入后会不会形成回路可以通过对边的两个端点分别执行Find操作。如果两个Find的结果相同,则表示两个端点已连通,加入这条边会形成回路,否则将这条边加入生成树。添加边的操作就是一个Union操作,将两个端点所属的子集归并起来,表示其中的所有顶点都已连通。 * 定义优先级队列中的元素类型 struct edge { int beg, end; TypeOfEdge w; bool operator(const edge rp) const {return w rp.w;} }; * kruskal算法的实现 template class TypeOfVer, class TypeOfEdge void adjListGraphTypeOfVer, TypeOfEdge::kruskal( ) const { int edgesAccepted = 0,u, v; edgeNode *p; edge e; DisjointSet ds( Vers ); priorityQueueedge pq; //生成优先级队列 for (int i = 0; i Vers; ++i) { for (p = verList[i].head; p != NULL; p = p-next) if (i p-end) { e.beg = i; e.end = p-end; e.w = p-weight; pq.enQueue(e); } } * //开始归并 while( edgesAccepted Vers - 1 ) { e = pq.deQueue(); u = ds.Find(e.beg); v = ds.Find(e.end); if( u != v ) { edgesAccepted++; ds.Union( u, v ); cout ( verList[e.beg].ver ,
您可能关注的文档
- 数据结构课件10数据结构课件排序幻灯片.ppt
- 数据结构课件110章全第二章幻灯片.ppt
- 数据结构课件110章全第九章查找幻灯片.ppt
- 拷贝课件第二篇第三章建筑消防设施操作与维护813节幻灯片.ppt
- 数据结构课件110章全第六章树和二叉树幻灯片.ppt
- 数据结构课件110章全第七章图幻灯片.ppt
- 数据结构课件110章全第十章内部排序old幻灯片.ppt
- 数据结构课件110章全第五章数组和广义表幻灯片.ppt
- 学前儿童民间艺术教育-高职学前教育专业-97064-第六单元民间建筑幼儿艺术教育幻灯片.ppt
- 数据结构课件C++版第八章图幻灯片.ppt
- 八章立体几何初步章节检测.pdf
- bi10r technical problems-intermediate business teacherBI10R技术问题中级老师.pdf
- 文本说明分析师analyst library element creation v11.pdf
- xjgc erp项目需求分析报告风电.pdf
- 高熵钙钛矿铁电陶瓷:组分设计对介电性能的影响与机制探究.docx
- 基于多模型融合的LF精炼炉钢水脱硫预报与生产调度优化策略研究.docx
- 从差异到融合:香港与内地大学章程的比较研究与启示.docx
- 纳米结构微粉除氟材料:制备工艺、性能机制与应用前景.docx
- 外源绿原酸:开启鲜切马铃薯褐变抑制的新视角.docx
- 基于CPU安全机制的云平台数据保护方法探究与实践.docx
最近下载
- 急性胰腺炎课件.ppt
- PEP小学英语四年级下册 Unit 1 My School说课稿.docx VIP
- 新教材 人教版高中化学选择性必修2全册各章节课时练习题及章末测验 含解析.doc
- 2023民主生活会整改措施落实情况(通用6篇).docx VIP
- TNAIA 011-2020 土壤脲酶活性的测定 苯酚钠-次氯酸钠比色法.pdf VIP
- 受益所有人信息备案试卷有答案.docx
- 职业学院大数据与会计专业毕业设计(论文)标准.docx VIP
- 《煤矿安全生产标准化管理体系解读》培训课件2024.11.pptx
- 第八章武术18课时大单元计划 《健身长拳》人教版初中体育与健康七年级全一册.pdf
- 安全阀校验机构体系文件(手册 程序文件 记录 管理制度) - 副本.docx
文档评论(0)