第八章图的应用.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文档。上传文档
查看更多
第八章图的应用

第八章 图的应用 8.1 图的生成树和最小生成树 8.2 最短路径 8.3 拓扑排序 8.4 关键路径 8.1 图的生成树和最小生成树 8.1.1生成树和最小生成树的概念 生成树: 在一个连通图G中,如果取它的全部顶点和一部分边构成一个子图G’,即: 8.1 图的生成树和最小生成树 构造生成树:深度优先生成树和广度优先生成树。 树的权:树中所有边上的权值总和。 最小生成树(minimum spanning tree):具有权最小的生成树为图的最小生成树。 实例:多个城市构成的通信网络。 构造最小生成树的两种算法:普里姆(Prim)和克鲁斯卡尔(Kruskal)算法。 8.1 图的生成树和最小生成树 8.1 图的生成树和最小生成树 8.1.2普里姆(Prim)算法 假设G=(V,E)是一个具有n个顶点的连通网,T=(U,TE)是G的最小生成树,U和TE的初始值均为空。算法开始时,首先从V中任取一个顶点(v0)将它加入U中,即U={v0},然后只要U是V的真子集,就从那些其一个端点已在T中,另一个端点仍在T外的所有边中,找一条权值最小的边(i,j),其中vi∈U,vj ∈(V-U),并把该边(i,j)和顶点j分别并入T的集合TE和顶点集合U中。反复进行,直到U=V,TE中含有n-1条边。 8.1 图的生成树和最小生成树 第0次 U={0} TE={} LW={(0,1)8,(0,2)∞,(0,3)5,(0,4)∞,(0,5)∞,(0,6)∞} 第1次 U={0,3} TE={(0,3)5} LW={(3,1)3,(0,2)∞(0,4)∞,(3,5)7,(3,6)15} 8.1 图的生成树和最小生成树 第2次 U={0,3,1} TE={(0,3)5,(3,1)3} LW={(1,2)12,(1,4)10,(3,5)7,(3,6)15} 第3次 U={0,3,1,5} TE={(0,3)5,(3,1)3 ,(3,5)7} LW={(5,2)2,(5,4)9,(3,6)15} 8.1 图的生成树和最小生成树 第4次 U={0,3,1,5,2} TE={(0,3)5,(3,1)3 ,(3,5)7, (5,2)2} LW={(2,4)6,(3,6)15} 第5次 U={0,3,1,5,2,4} TE={(0,3)5,(3,1)3 ,(3,5)7, (5,2)2, (2,4)6} LW={(3,6)15} 第6次 U={0,3,1,5,2,4,6} TE={(0,3)5,(3,1)3 ,(3,5)7, (5,2)2, (2,4)6, (3,6)15} LW={} 8.1 图的生成树和最小生成树 克鲁斯卡尔(Kruskal)算法 假设G=(V,E)是一个具有n个顶点的连通网,T=(U,TE)是G的最小生成树,U的初始值等于V,TE的初始值为空,然后将图G中的边按权值从小到大的顺序依次选取,若选取的边使生成树T不形成回路,则把它并入TE中;否则将其舍弃。 8.1 图的生成树和最小生成树 8.2 最短路径 最短路径: 在一个无权的图中,由于从一顶点到另一个顶点可能存在着多条路径,每条路径上所经过的边数可能不同,即路径长度不同,我们把路径长度最短(即经过边数最少)的那条路径叫做最短路径。 对于带权的图, 则把一条路径上所经边的权值之和定义为该路径的路径长度或称带权路径长度。从源点到终点可能不止一条路径,把带权路径长度最短的那条路径称为最短路径,其路径长度(权值之和)称为最短路径长度或者最短距离。 8.2 最短路径 8.2.1 从一顶点到其余各顶点的最短路径(狄克斯特拉Dijkstra算法) 1.基本思路: 按照从源点到其余每一个顶点的最短路径长度的升序依次求出从源点到各顶点的最短路径长度,每次求出从源点i到一个终点m的最短路径长度后,都要以该顶点m作为新考虑的中间点,用Vi到vm的最短路径和最短路径长度对vi到其它尚未求出最短路径的那些终点的当前最短路径长度做必要的修改,使之成为当前最新的最短路径和最短路径长度,当进行n-2次(最多)后算法结束。 8.2 最短路径 2.存储结构 1)s[]--保存已求得最短路径的终点的序号。 2)dist[]-- dist[j]表示从源点i到终点j的目前最短路径长度。( dist[m]+GA[m][j]与dist[j]比较大小。M是已经确定最短路径的结点。 ) 3)edgenode *path[]--path[j]指向一个单链表,该单链表保存着从源点i到终点j的目前最短路径,即一个顶点序列。 8.2 最短路径 8.2 最短路径 求上图从v0到其余各顶点的最短路径 1.初始化 8.2 最短路径 2.得到终点v1 8.2

文档评论(0)

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

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

1亿VIP精品文档

相关文档