8.6单源最短路径.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.6单源最短路径

8.6 单源最短路径 生活中常见的“最短路径”问题 单源最短路径问题 单源最短路径—基本概念 单源最短路径--算法思想 单源最短路径--算法思想 单源最短路径--算法思想 单源最短路径--算法思想 单源最短路径--算法思想 设给定源点为Vs,S为已求得最短路径的终点集,开始时令S={Vs} 。当求得第一条最短路径(Vs ,Vi)后,S为{Vs,Vi} 。根据以下结论可求下一条最短路径。 设下一条最短路径终点为Vj ,则Vj只有: ◆ 源点到终点有直接的弧Vs,Vj; ◆ 从Vs 出发到Vj 的这条最短路径所经过的所有中间顶点必定在S中。即只有这条最短路径的最后一条弧才是从S内某个顶点连接到S外的顶点Vj 。 若定义一个数组dist[n],其每个dist[i]分量保存从Vs 出发中间只经过集合S中的顶点而到达Vi的所有路径中长度最小的路径长度值,则下一条最短路径的终点Vj必定是不在S中且值最小的顶点,即: dist[i]=Min{ dist[k]| Vk∈V-S } 利用上述公式就可以依次找出下一条最短路径。 Dijkstra单源最短路径算法 --数据组织 Dijkstra算法—步骤 ① 令S={Vs} ,用带权的邻接矩阵表示有向图,对图中每个顶点Vi按以下原则置初值: ② 选择一个顶点Vj ,使得: Distance[j]=Min{ Distance[k]| Vk∈V-S } Vj就是求得的下一条最短路径终点,将Vj 并入到S中,即S=S∪{Vj} 。 ③ 对V-S中的每个顶点Vk ,修改dist[k],方法是: 若Distance[j]+WjkDistance[k],则修改为: Distance[k]=Distance[j]+Wjk (?Vk∈V-S ) ④ 重复②,③,直到S=V为止。 Dijkstra算法—实现 参数: 输入:带权图G;源点序号v0; 输出:distance[]用来存放得到的从源点v0到其余各 顶点的最短距离数值; path[]用来存放得到的从源点v0到其余各顶点 的最短路径上到达目标顶点的前一顶点下标。 Dijkstra函数设计: void Dijkstra(AdjMWGraph G, int v0, int distance[], int path[]) //带权图G从下标v0顶点到其他顶点的最短距离distance //和相应的目标顶点的前一顶点下标path { … … // 见教材P275页 } * 算法思想 算法分析 Dijkstra算法设计与实现 数据结构及组织 课堂练习 单源最短路径:给定有向图G和源点v,求v到G中其余各 顶点的最短路径。 相关概念 路径长度:一条路径上所经过的边的数目 带权路径长度:路径上所经过边的权值之和 最短路径:(带权)路径长度(值)最小的那条路径 最短路径长度或最短距离:其(带权)路径长度 (a)有向带权图; (b)邻接矩阵 E F D B C A 8 2 5 30 18 10 7 15 4 ú ú ú ú ú ú ú ú ? ù ê ê ê ê ê ê ê ê ? é ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ 0 18 10 0 4 0 7 0 15 8 0 2 30 5 0 B A C D E F B A C D E F 距离源点 最近的一个结点是? 源 有n个结点的网络 距离源点 最近的一个结点是? 第二近的是? 源 有n个结点的网络 距离源点 最近的一个结点是? 第二近的是? 第三近的会出现在那些路径上? 源 有n个结点的网络 距离源点 最近的一个结点是? 第二近的是? 第三近的会出现在那些路径上? 路径冲突怎么办? 源 有n个结点的网络 接下去,距离源点 第4、第5….第n近的结点? 源 Dijkstra求解单源最短路径思想: 按从某顶点到其它顶点的路径长度递增的方式,逐渐求到各顶点的最短路径。 有n个结点的网络 单源最短路径--算法思想 源 源 有n个结点的网络 数据源 已确定结点集 S 待选结点集 V-S 结点临时最短路径长度 结点临时最短路径 Path Distance 5 (n-1) Path Distance 4 Path Distanc

文档评论(0)

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

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

1亿VIP精品文档

相关文档