- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
应用运筹学-7-2015汇编
基本原理 若序列{vs,v1,……,vn-1,vn},是从vs到vn的最短路,则序列{vs,v1,……,vn-1}必定是从vs到vn-1的最短路。 该算法的基本步骤,采用标号法。 P标号:永久性标号,给点vi作P标号时,表示从vs到vi的路最短, vi的标号不再改变; T标号:试探性标号,给点vi作T标号时,表示得到从vs到vi的最短路权的上界,凡没有得到P标号的点都有T标号。 基本思想 从vs出发,逐步向外探寻最短路。每一步都把某一点的T标号改为P标号,当终点vt得到P标号时,全部计算结束。 对于有n个顶点的图,最多经n-1步就可以得到从始点到终点的最短路。 Dijkstra算法 给vs以P标号,P(vs)=0,其余各点均给T标号,T(vi)=?; 若vi为刚得到P标号的点,考虑这样的点vj:(vi, vj)?E,且vj为T标号。对vj的T标号进行如下的更改: T(vj)=min[T(vj), P(vi)+wij] 比较所有具有T标号的点,把最小者改为P标号,即: Dijkstra算法的步骤 当存在两个以上最小者时,可同时改为P标号。若全部点均为P标号则停止。否则用 代替vi转回2. 。 求从v1点到v8点的最短路。 Dijkstra算法求解举例 v2 v4 v6 5 9 v1 4 v3 v5 v7 v8 6 4 4 7 7 5 6 5 4 1 给v1以P标号,P(v1)=0,其余各点均给T标号,T(vi)=+? (i=2,3,…,8) 由于边(v1,v2),(v1,v3)属于E,且v2,v3为T标号,所以修改这两个点的标号: T(v2)=min[T(v2), P(v1)+w12]=min[+? , 0+4]=4 T(v3)=min[T(v3), P(v1)+w13]=min[+? , 0+6]=6 比较所有T标号, T(v2)最小,所以令P(v2)=4。并记录路径(v1,v2)。 v2为刚得到P标号的点,考察边(v2,v4),(v2,v5)的端点v4,v5 。 T(v4)=min[T(v4), P(v2)+w24]=min[+? , 4+5]=9 T(v5)=min[T(v5), P(v2)+w25]=min[+? , 4+4]=8 比较所有T标号, T(v3)最小,所以令P(v3)=6。并记录路径(v1,v3)。 (P,0) (T,+?) (T,+?) (T,+?) (T,+?) (T,+?) (T,+?) (T,+?) 4 6 P 9 8 P Dijkstra算法求解举例(续1) 考虑点v3,有 T(v4)=min[T(v4), P(v3)+w34] =min[9 , 6+4]=9 T(v5)=min[T(v5), P(v3)+w35] =min[8 , 6+7]=8 所有T标号中, T(v5)最小,所以令P(v5)=8。并记录路径(v2,v5)。 考虑点v5,有 T(v6)=min[T(v6), P(v5)+w56] =min[+? , 8+5]=13 T(v7)=min[T(v7), P(v5)+w57] =min[+? , 8+6]=14 所有T标号中, T(v4)最小,所以令P(v4)=9。并记录路径(v2,v4)。 考虑点v4,有 T(v6)=min[T(v6), P(v4)+w46] =min[13 , 9+9]=13 T(v7)=min[T(v7), P(v4)+w47] =min[14 , 9+7]=14 v2 v4 v6 5 9 v1 4 v3 v5 v7 v8 6 4 4 7 7 5 6 5 4 1 (P,0) (T,+?) (T,+?) (T,+?) (T,+?) (T,+?) (T,+?) (T,+?) 4 6 P 9 8 P P 13 14 P Dijkstra算法求解举例(续2) 所有T标号中, T(v6)最小,所以令P(v6)=13。并记录路径(v5,v6)。 考虑点v6,有 T(v7)=min[T(v7), P(v6)+w67] =min[14 , 13+5]=14 T(v8)=min[T(v8), P(v6)+w68] =min[+? , 13+4]=17 所有T标号中, T(v7)最小,所以令P(v7)=14。并记录路径(v5,v7)。 考虑点v7,有 T(v8)=min[T(v8), P(v7)+w78] =min[17 , 14+1]=15 只有一个T标号T(v8),令P(v8)=15。记录路径(v7,v8),计算结束。 最短路为v1? v2 ? v5 ? v7 ? v8,路长P(v8)=15。 v2 v4 v6 5 9 v1 4 v3 v5 v7 v8 6 4 4 7 7 5 6 5 4 1 (
原创力文档


文档评论(0)