[2018年最新整理]74图的连通性问题.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[2018年最新整理]74图的连通性问题

7.4 图的连通性问题 在修建道路(或者铺设线路、管道)的时候,常常考虑的是如何既能够达到连通各个地点又能够使得所耗费的资源最少的问题。最好的办法就是把这些现实的问题抽象成图,比如把城市抽象成顶点(假设有n个),把城市之间的可能存在的道路抽象成边,从该图中寻找n-1条边,使得这n-1条边不仅能把这n个顶点连成一个连通图,并且他们所代表的路程之和最短。这样的连通图,形态上就是一棵树。求解这种耗费最少的问题,就转化成为求相应图的最小生成树(Minimum Cost Spanning Tree)的问题。 Prim算法和Kruskal算法都是基于下述性质: 如果(u,v)是图中权值最小的边,则最小生成树中必包含此边。 一、Prim算法 1、算法的动态演示过程 2、算法实现 从前面的演示过程可以看出来,问题集中在如何有效地找到距离当前生成树最近的顶点。 我们把Prim算法的具体实现过程演示一遍,大家可以从中观察出,Prim算法是怎样实现这一点的。 用一个数组L来存储各个顶点到当前最小生成树的最短距离。 初始化数组L: 初始化数组L: 初始化数组L: 开始生成最小生成树: 4. 算法分析 分析Prim算法伪代码(参看教材P175),该算法由两个并列的循环组成,第一个循环次数为vex_num(即顶点的个数n);第二个循环,外层循环的次数为n-1,内层的循环次数为n。所以总体来说,Prim的时间复杂度为O(n2),并且该算法与图中边数的多少无关,所以该算法适合于求边稠密的图的最小生成树。 二、Kruskal算法 1、算法演示 二、Kruskal算法 1、算法演示 二、Kruskal算法 1、算法演示 二、Kruskal算法 1、算法演示 二、Kruskal算法 1、算法演示 二、Kruskal算法 1、算法演示 二、Kruskal算法 1、算法演示 二、Kruskal算法 1、算法演示 二、Kruskal算法 1、算法演示 二、Kruskal算法 1、算法演示 二、Kruskal算法 1、算法演示 二、Kruskal算法 1、算法演示 二、Kruskal算法 1、算法演示 从演示过程可以看出,问题集中在如何判断在当前最小生成树中加入一条边后是否形成环? 一个效率比较低的方法是,初始时为每个顶点设立一个类标号,表示该顶点属于标号所示的连通分量。 2.算法分析 Kruscal算法至多对e条边各扫描一次,假若以后面章节将介绍的堆来存放网中的边,则每次选择最小代价的边仅需O(loge)的时间,整个Kruscal算法时间复杂度可以达到O(eloge)。因此,该算法适合求边稀疏的图的最小生成树。 1 5 4 5 2 3 5 6 6 6 a b d c e f (e,f,6) (c,e,6) (a,b,6) (c,d,5) (b,c,5) (a,d,5) (c,f,4) (b,e,3) (d,f,2) (a,c,1) 6 f 5 e 4 d 3 c 2 b 1 a 标号 顶点 取第一条边(a,c,1),对顶点a和顶点c的类标号进行比较,发现不等;则二者属于两个不同的连同分量,用边连起来也不会形成环。 在ac间加上一条边,则连通分量1和连通分量3变成了同一个连通分量,则它们的标号应该相同。所以,我们必须把所有的3变成1。 1 5 4 5 2 3 5 6 6 6 a b d c e f (e,f,6) (c,e,6) (a,b,6) (c,d,5) (b,c,5) (a,d,5) (c,f,4) (b,e,3) (d,f,2) 6 f 5 e 4 d 1 c 2 b 1 a 标号 顶点 1 5 4 5 2 3 5 6 6 6 a b d c e f (e,f,6) (c,e,6) (a,b,6) (c,d,5) (b,c,5) (a,d,5) (c,f,4) (b,e,3) (d,f,2) 6 f 5 e 4 d 1 c 2 b 1 a 标号 顶点 取边(d,f,2),对顶点d和顶点f的类标号进行比较,发现不等;则二者属于两个不同的连同分量,用边连起来也不会形成环。 在df间加上一条边,则连通分量4和连通分量6变成了同一个连通分量,则它们的标号应该相同。所以,我们必须把所有的6变成4。 1 5 4 5 2 3 5 6 6 6 a b d c e f (e,f,6) (c,e,6) (a,b,6) (c,d,5) (b,c,5) (a,d,5) (c,f,4) (b,e,3) (d,f,2) 4 f 5 e 4 d 1 c 2 b 1 a 标号 顶点 1 5 4 5 2 3 5 6 6 6 a b d c e f (e,f,6)

文档评论(0)

liwenhua00 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档