第14讲图的生成树分析.ppt

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第14讲图的生成树分析

第十四讲 图的生成树 主讲:朱郑州 主要内容 无向图的连通性 图的生成树 主要内容 主要内容 克鲁斯卡尔(Kruskal)算法 克鲁斯卡尔(Kruskal)算法 克鲁斯卡尔(Kruskal)算法 克鲁斯卡尔(Kruskal)算法 克鲁斯卡尔(Kruskal)算法 克鲁斯卡尔(Kruskal)算法 克鲁斯卡尔(Kruskal)算法 《数据结构》 Data Structure * 《数据结构》 Data Structure 2. Prim算法 1. 图的连通性 3. Kruskal算法 要想判定一个无向图是否为连通图,或有几个连通分量,通过对无向图遍历即可得到结果。 非连通图:需从多个顶点出发进行搜索,而每一次从一个新的起始点出发进行搜索过程中得到的顶点访问序列恰为其各个连通分量中的顶点集。 连通图:仅需从图中任一顶点出发,进行深度优先搜索(或广度优先搜索),便可访问到图中所有顶点。 count=0; 2. for (图中每个顶点v) 2.1 if (v尚未被访问过) 2.1.1 count++; 2.1.2 从v出发遍历该图; 3. if (count==1) printf(图是连通的“); else printf(图中有count个连通分量); 求无向图的连通分量 无向图的连通性 ⑴ 从某顶点出发进行深度优先遍历,并按其所有邻接点都访问(即出栈)的顺序将顶点排列起来。 ⑵ 从最后完成访问的顶点出发,沿着以该顶点为头的弧作逆向的深度优先遍历。若不能访问到所有顶点,则从余下的顶点中最后访问的那个顶点出发,继续作逆向的深度优先遍历,直至有向图中所有顶点都被访问到为止。 ⑶ 每一次逆向深度优先遍历所访问到的顶点集便是该有向图的一个强连通分量的顶点集。 有向图的连通性 (a)深度优先生成树 (b) 广度优先生成树 V1 V3 V2 V4 V5 V6 V7 V8 V1 V3 V2 V4 V5 V6 V7 V8 由深度优先遍历得到的为深度优先生成树, 由广度优先遍历得到的为广度优先生成树。 一个连通图的生成树可能不唯一,由不同的遍历次序、从不同顶点出发进行遍历都会得到不同的生成树。 对于非连通图,通过图的遍历,将得到的是生成森林。 结论: 图的生成树 生成树的代价:设G=(V,E)是一个无向连通网,生成树上各边的权值之和称为该生成树的代价。 最小生成树(Minimum Spanning Tree, MST):在图G所有生成树中,代价最小的生成树称为最小生成树。 最小生成树的概念可以应用到许多实际问题中。 例:在n个城市之间建造通信网络,至少要架设n-1条通信线路,而每两个城市之间架设通信线路的造价是不一样的,那么如何设计才能使得总造价最小? 最小生成树 假设G=(V, E)是一个无向连通网,U是顶点集V的一个非空子集。若(u, v)是一条具有最小权值的边,其中u∈U,v∈V-U,则必存在一棵包含边(u, v)的最小生成树。 顶点集U V-U u v v u 顶点集 T1 T2 最小生成树性质 2. Prim算法 1. 图的连通性 3. Kruskal算法 基本思想:设G=(V, E)是具有n个顶点的连通网,T=(U, TE)是G的最小生成树, T的初始状态为U={u0}(u0∈V),TE={ },重复执行下述操作:在所有u∈U,v∈V-U的边中找一条代价最小的边(u, v)并入集合TE,同时v并入U,直至U=V。 关键:是如何找到连接U和V-U的最短边。 利用MST性质,可以用下述方法构造候选最短边集:对应V-U中的每个顶点,保留从该顶点到U中的各顶点的最短边。 普里姆(Prim)算法 U={A} V-U={B, C, D, E, F} cost={(A, B)34, (A, C)46, (A, D)∞,(A, E)∞,(A, F)19} 25 12 34 19 26 46 38 17 25 A B E D C F 普里姆(Prim)算法 25 12 34 19 26 46 38 17 25 A B E D C F U={A, F} V-U={B, C, D, E} cost={(A, B)34,(F, C)25, (F, D)25,(F, E)26} 普里姆(Prim)算法 25 12 34 19 26 46 38 17 25 A B E D C F U={A, F, C} V-U={B, D, E} cost={(A, B)34, (C, D)17, (F, E)26} 普里姆(Prim)算法 25 12 3

文档评论(0)

此项为空 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档