- 1、本文档共174页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
7.5 有向无环图及其应用 关键路径—AOE网的应用 9 8 7 6 4 5 3 2 1 a2=4 a3=5 a5=1 a6=2 a9=4 a1=6 a4=1 a7=9 a8=7 a10=2 a11=4 算法略 in link vex next vexdata length 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 0 1 1 1 2 1 1 2 2 2 6 3 4 4 5 ^ 7 9 ^ 5 1 ^ 6 2 ^ 5 1 ^ 8 7 ^ 8 4 ^ 9 10 ^ 9 4 ^ 7.6 最短路径 一顶点到其余各顶点 两种常见的最短路径问题: 一、 单源点最短路径—用Dijkstra(迪杰斯特拉)算法 二、所有顶点间的最短路径—用Floyd(弗洛伊德)算法 典型用途:交通问题。如:城市A到城市B有多条线路,但每条线路的交通费(或所需时间)不同,那么,如何选择一条线路,使总费用(或总时间)最少? 问题抽象:用带权的有向图表示一个交通运输网,图中: 顶点—表示城市 边—表示城市间的交通联系 权—表示此线路的长度或沿此线路运输所用的时间或费用等 在有向图中A点(源点)到达B点(终点)的多条路径中,寻找一条各边权值之和最小的路径,即最短路径。 (注:最短路径与最小生成树不同,路径上不一定包含n个顶点) 任意两顶点之间 7.6 最短路径 单源最短路径 (Dijkstra算法) v 0 ( v 0 , v 1 ) 10 源点 终点 最 短 路 径 路径长度 ( v 0 , v 1 , v 2 ) ( v 0 , v 3 , v 2 ) ( v 0 , v 3 ) 30 v 1 v 2 v 3 v 4 100 ( v 0 , v 4 ) ( v 0 , v 3 , v 4 ) ( v 0 , v 3 , v 2 , v 4 ) 例1: 60 0 1 2 3 4 50 90 70 ( v 0 , v 1 , v 2 , v 4 ) 60 设一有向图G=(V, E),已知各边的权值,以某指定点v0为源点,求从v0到图的其余各点的最短路径。限定各边上的权值大于或等于0。 7.6 最短路径 单源最短路径 (Dijkstra算法) 对各最短路径按路径长度递增排列 可以证明V0到其余各顶点Vk的最短路径长度,或是从V0到Vk的直接路径的权值;或是从V0经顶点vi(vi是指已求得的最短路径长度的顶点或顶点序列)到Vk的路径权值之和。 v 0 源点 终点 v 1 v 3 v 2 v 4 ( v 0 , v 1 ) 最 短 路 径 ( v 0 , v 3 , v 2 ) ( v 0 , v 3 ) ( v 0 , v 3 , v 2 , v 4 ) 10 路径长度 30 50 60 也可证明从源点V0到某顶点Vk的最短路径,必定或是从V0到Vk的直接路径(仅含一条弧);或是从V0经中间顶点vi到Vk的路径,其中中间顶点vi是指已求得的最短路径的顶点或顶点序列)。 求从源点到其余各点的最短路径的算法的基本思想: 依最短路径的长度递增的次序求得各条最短路径 源点 v1 … 其中,从源点到顶点v1的最短路径是所有最短路径中长度最短者。 v2 7.6 最短路径 单源最短路径 (Dijkstra算法) 7.6 最短路径 单源最短路径 (Dijkstra算法) 在这条路径上,必定只含一条弧,并且这条弧的权值最小。 下一条路径长度次短的最短路径的特点: 图中路径长度最短的最短路径的特点: 它只可能有两种情况:或者是直接从源点到该点(只含一条弧); 或者是从源点经过顶点v1,再到达该顶点(由两条弧组成)。 它或者是直接从源点到该点(只含一条弧); 或者是从源点经过已求得最短路径的顶点,再到达该顶点。 依此类推,其余最短路径的特点: 7.6 最短路径 单源最短路径 (Dijkstra算法) 迪杰斯特拉(Dijkstra)算法思想 按路径长度递增次序产生最短路径算法: 把图的顶点集V分成两组: S:已求出最短路径的顶点的集合 V-S=T:尚未确定最短路径的顶点集合 将T中顶点按最短路径递增的次序加入到S中,并保证: 从源点V0到S中各顶点的最短路径长度都不大于 从V0到T中任何顶点的最短路径长度 设置辅助数组Dist[n],其中每个分量Dist[k] 表示 当前所求得的从源点到其余各顶点 k 的最短路径长度。 其初始值为: V0和k之间存在弧 V0和k之间不存在弧 7.6 最短路径 单源最短路径 (
文档评论(0)