中学课件数据结构第讲:图,节.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文档。上传文档
查看更多
中学课件数据结构第讲:图,节

7.8 最短路径问题 1. 从源点到其余各点的最短路径 迪杰斯特拉算法的基本思想: 依最短路径的长度递增的次序求得各条路径 第1条最短路径是从源点V0出发到达一个邻接点Vi的边; 第2条最短路径或者是从源点V0出发到达另 一个邻接点Vj的边,或者是从源点V0出发,经 过顶点Vi 到达的顶点Vj的路径; 第3条最短路径或者是从源点V0出发到达另 一个邻接点Vk的边,或者是从源点V0出发,经 过顶点Vi 和Vj到达的顶点Vk的路径; 进行n-1次计算后算法结束。 求最短路径的迪杰斯特拉算法: 一般情况下, Dist[k] = 源点到顶点 k 的弧上的权值 或者 = 源点到其它顶点的路径长度 + 其它顶点到顶点 k 的弧上的权值 初值: Dist[k] = G.arcs[V0][k] 2. 设置辅助数组Dist,其中每个Dist[k] 记录当前所求得的从源点V0到顶点 k 的最短距离值。 1. 设一个集合final[],保存已求得最短路径的终点序号,其初值为false; 3. 设一个数组p[ ],存放在最短路径上该顶点的前一个顶点的顶点号,Dist修改后p也要修改; final dist F F F F F 8 8 8 3 30 V0 V1 V2 V3 V4 V0 V1 V4 V2 V3 3 8 25 4 12 20 5 30 10 迪杰斯特拉算法执行过程 0 1 2 3 4 0 1 2 3 4 20 4 0 12 0 3 2 3 30 0 0 25 8 4 0 1 0 3 10 5 1 2 3 0 8 8 8 8 8 8 8 8 8 8 8 0 0 0 0 0 V0 T 0 T V1 28 11 T V3 15 23 P V2 V0 T T 0 v0 v0 v0 v0 0 v0 v1 v1 v0 0 v0 v3 v1 v3 void ShortestPath_DIJ(Mgraph G,int V0 ){ 初始化 p []; final[ ]; dist[ ]; for ( i=1, i G.vexnum;++ i) //循环n-1次 min=INFINITY; for ( w=1, w G.vexnum;++ w) //在没有求出最短距离的 if(!final[w]) //顶点中找距V0最近的顶点v if(dist[w]min) {v=w; min= dist[w]} final[v]= True ; //离最近的顶点V加入final集 for ( w=1, w G.vexnum;++ w)//更新不在final中顶点的当前最短路径 if(!final[w](min+G.arcs[v][w]) dist[w]) //当前dist[w]大 { dist[w]=min+ G.arcs[v][w]; //修改dist[w] p [w]=v; //顶点w的前一个顶点是v } } //for } //for } 时间复杂度 O(n2) 作 业 基础知识:7.10, 7.11, 7.13, 算法题: 7.41, 7.42 * 7.1 图的抽象数据类型定义 7.2 图的存储表示 7.3 图的遍历 7.4 最小生成树 7.5 重(双)连通图和关节点 7.8 最短路径问题 7.6 拓扑排序 7.7 关键路径 第七章 图 A C B D E F 有向无环图 7.6 拓扑排序 如何判断一个图是否存在环(回路)? 对无向图---深度优先遍历。 对有向图----拓扑排序。 A C B D E F 无向有环图 课程编号 课程名称 C1 程序设计基础 C2

文档评论(0)

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

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

1亿VIP精品文档

相关文档