ch6.1-3图课程.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文档。上传文档
查看更多
最短路问题 问题描述: 在一个赋权的有向图中找出从起点到某个节点之间距离最短的一条路 . 有些问题,如选址、管道铺设时的选线、设备更新、投资、某些整数规划和动态规划的问题,也可以归结为求最短路的问题。因此这类问题在生产实际中得到广泛应用。 最短路问题 例 渡河游戏 一老汉带了一只狼、一只羊、一棵白菜想要从南岸过河到北岸,河上只有一条独木舟,每次除了人以外,只能带一样东西;另外,如果人不在,狼就要吃羊,羊就要吃白菜,问应该怎样安排渡河,才能做到既把所有东西都运过河去,并且在河上来回次数最少?这个问题就可以用求最短路方法解决。 最短路问题 定义: 1)人—M(Man),狼—W(Wolf), 羊—G(Goat), 草—H(Hay) 2) 点—— vi 表示河岸的状态 3) 边—— ek 表示由状态 vi 经一次渡河到状态 vj 4) 权——边 ek 上的权定为 1 我们可以得到下面的加权有向图 最短路问题 状态说明: v1,u1 =( M,W,G,H ); v2,u2 =(M,W,G); v3,u3 =(M,W,H); v4,u4=(M,G,H); v5,u5 =(M,G) 此游戏转化为在下面的二部图中求从 v1 到 u1 的最短路问题。 v1 v2 v3 v4 v5 u5 u4 u3 u2 u1 最短路问题 求最短路有两种算法: 狄克斯屈拉(Dijkstra)标号算法(1959年) 逐次逼近算法(不讲) 最短路问题 狄克斯屈拉(Dijkstra)标号算法的基本思路: 若序列{ vs,v1…..vn-1,vn }是从vs到v n间的最短路,则序列{ vs,v1…..vn-1 } 必为从vs 到vn-1的最短路。 假定v1→v2 →v3 →v4是v1 →v4的最短路,则v1 →v2 →v3一定是v1 →v3的最短路,v2 →v3 →v4也一定是v2 →v4的最短路。 v1 v2 v3 v4 v5 最短路问题 方法: 从vs出发,逐步向外探寻最短路。执行过程中,与每个点对应,记录下一个数(称为这个点的标号)。标号分为两部分: 第一标号:表示此标号从哪里来 第二标号:指从起点到当前点的最短路径 最短路问题 步骤: 1. 给起点的标号(vs,0 ); 2. 找出所有vi已标号vj未标号的弧集合 B={(i, j)} 如果这样的弧不存在或vt已标号则计算结束;立即反向追踪得到最短路; 3. 若存在集合B中弧 (vi, vj ),计算指向 vj的最短路; 重复以上步骤,直至终点得到标号。 最短路问题 例1. 用Dijkstra算法求下图从v1到v6的最短距离及路线。 275 v3 v5 v1 v2 v4 v6 250 400 300 150 100 200 150 100 (v1,0) (v1,250) (v2,350) (v3,500) (v4,600) (v4,700) 最短路长是 700, 最短路线: v1→ v2 → v3 → v4 →v6 最短路问题 例2 求下图v1到v7的最短路长及最短路线 ① ② ③ ④ ⑤ ⑥ ⑦ 8 6 2 5 2 3 5 3 4 2 10 5 7 v7已标号,计算结束。从v1到v7的最短路长是 11, 最短路线: v1→ v4 → v6 → v7 最短路问题 从上例知,只要某点已标号,说明已找到起点vs到该点的最短路线及最短距离,因此可以将每个点标号,求出vs到任意点的最短路线,如果某个点vj不能标号,说明vs不可达vj 。 最短路问题 练习1. 求从v1到v8的最短路径 2 3 7 1 8 4 5 6 6 1 3 4 10 5 2 7 5 9 3 4 6 8 2 v1到v8的最短路径为v1→v4→v7→v5→v8,最短距离为10 最短路问题 2. 求下图中v1点到另外任意一点的最短路径 v1 v2 v3 v4 v6 v5 3 2 2 7 6 2 1 3 3 最短路问题 v1 V2 V3 V4 V6 V5 3 2 2 7 6 2 1 3 3 0 2 4 7 1 4 最短路问题 注1:算法适用条件: Dijkstra算法只适用于全部权为非负情况,如果某边上权为负的,算法失效。此时可采用逐次逼近算法。(不要求掌握) 如右图所示中按dijkstra算法可得P(v1)=5为从vs→v1的最短路长显然是错误的,从vs→v2→v1路长只有3。 v2 vs v1 5 -5 8 注2:无向图最短路的求法只将上述步骤2将弧改成边即可。 最短路问题 最短路问题的应用: 例3. 电信公司准备准备在甲、乙两地沿路架设一条光缆线,问如何架设使其光缆线路最短?下图给出了甲乙两地间的交通图。权数表示两地间公路的长度(单位:公里)。 v1

文档评论(0)

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

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

1亿VIP精品文档

相关文档