网站大量收购独家精品文档,联系QQ:2885784924

第8章 图的应用09.ppt

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

第八章 图的应用 第八章 图的应用 本章要点: 最小生成树算法 最短路径算法 拓扑排序算法 关键路径算法 8.1 图的生成树和最小生成树 生成树的定义: 若有连通图G=(V(G),E(G)),其子图G’= (V(G’),E(G’)) 且图G和子图G’有如下关系: (1) V(G) = V(G‘) (2) E(G’)) E(G)) (3) E(G’)) 中的边连通所有顶点 (4)G’中不形成回路。 称子图G‘是连通图G的生成树。 8.1 图的生成树和最小生成树 生成树特点: (1)E(G’)中有n-1条边 (2)在E(G’)中加1条边就形成回路 (3)在E(G’)中删除1条边就不连通 (4)使用最少的边连通各个顶点 (5)同一图可有不同的生成树 8.1 图的生成树和最小生成树 最小生成树定义: 生成树中权值最小的,称最小生成树。 问题分析 构造最小生成树方法 方法一:普里姆(Prim)算法 算法思想:设G=(V,E)是连通网,T=(U,TE)是G的最小生成树。TE是G上最小生成树的边集。 初始令U={v0},(v0?V), TE=? 在所有vi ?U,vj?V-U的边(vi,vj)?E中,找一条权值最小的边(vi,vj) 将(vi,vj)并入集合TE,同时vj并入U 重复上述操作直至U=V为止,则T=(V,TE)为G的最小生成树 Prim算法实现 可选择邻接矩阵或邻接表作为图的存储结构。 需要一个边集数组CT,用于存储求得的最小生成树的边。 问:邻接矩阵GA和边集数组CT分别有多少个元素? 程序分析 1、给CT赋初值 2、进行n-1次选择 (1)每次选择最小的边加入CT (2)用以新加入U的顶点为起点,以尚未加入U的其他顶点为终点的边,修改原来到该终点的边。 问:在程序执行过程中,CT中的值如何变化的? CT边集数组 方法二:克鲁斯卡尔(Kruskal)算法 算法思想:设连通网G=(V,E), T=(U,TE)是G的最小生成树。 令最小生成树初始状态为只有n个顶点而无边的非连通图T=(U,?),每个顶点自成一个连通分量. 在E中选取权最小的边,若该边两端的顶点落在T中不同的连通分量上,则将此边加入到T中;否则,舍去此边,选取下一条权最小的边 依此类推,直至T中所有顶点都在同一连通分量上为止。 Kruska算法实现 需要一个按权值升序排列的边集数组GE。 需要一个边集数组CT,用于存储求得的最小生成树的边。 需要一个N*N的数组S表示不同集合 问:边集数组GE和CT分别有多少个元素? 程序分析 1、初始化S数组,使所有顶点在不同的集合中。 2、进行n-1次选择 (1)每次从GE中选一条当前权最小的边。 (2 )判断这条权最小的边的两个顶点是否在同一集合中。 (3) 若不在同一集合则加入CT,并将这两个顶点并入同 一集合。否则舍弃该边。 CT边集数组 小结 两个算法的时间复杂度都为0(n2). Prim算法的空间复杂度? Kruskal算法的空间复杂度? 8.2 最短路径 最短路径概念 无权图:路径长度最短的那条路径。 带权图:带权路径长度最短的那条路径。 最短路径实际问题 问题提出: 若已知n个城市间有一个的运输G=(V,E),要求算出从i城市到j城市间的运输路线。要求运输的费用或者时间最短。 顶点——表示城市 权——两城市间的运输费用或时间 问题分析 1、带权图 2、求i地到j地路径长度最短情况吗? 3、还是求i地到j地的带权路径长度最短的情况? 问题转化为求最短路径问题 狄克斯特拉(Dijkstra)算法 按路径长度递增次序产生最短路径算法: 把顶点集V分成两组: (1)S:已求出最短路径的顶点的集合 (2)V-S=T:尚未确定最短路径的顶点集合 将T中顶点按最短路径递增的次序加入到S中, 保证:(1)从源点V0到S中各顶点的最短路径长度都小于等于 从V0到T中任何顶点的最短路径长度 (2)每个顶点对应一个距离值 S中顶点:从V0到此顶点的最短带权路径长度 T中顶点:从V0到此顶点的只包括S中顶点作中间 顶点的最短带权路径长度 *V0到T中顶点Vk的最短路径,或是从V0到Vk的直接路径的权值;或是从V0经S中顶点到Vk的路径权值之和.* 程序分析 1、初始化s,dist和path 2、进行n-2次循环,每次求出从0点到m点的最短路径 (1)求出一条最短路径 (2)用该路径修改其他未求得

文档评论(0)

hhuiws1482 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档