04最短路径分析的算法—Dijkstra-算法讲述.pptx

04最短路径分析的算法—Dijkstra-算法讲述.pptx

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
04最短路径分析的算法—Dijkstra-算法讲述

最短路径分析的算法 ——Dijkstra 算法; 解决最短路径问题的算法很多, Dijkstra算法是最有效的算法之一: – Dijkstra算法 ? 1959年,荷兰计算机科学家Edsger Dijkstra提出; ? 能够一次解决“单结点-所有结点”间的最短路径问题;;Dijkstra 算法;定义: – s : 源结点, 例如结点a; – d(j) : 从源节点到目的结点j的当前最短路径; – p(j) : 从源结点到结点j的最短路径中,结点j的前继结点; – k : 最新加入的结点;;例1 找出结点a到其他结点的最短路径;初始化: – 选择源结点, 例如结点a; – k=a,即最新加入的结点为a – d(a)=0,对于其他结点j ,d(j)=∝; – p(a)为起始符号(例如﹡),对于其他结点j,p(j)为空;;第一次循环: – 更新距离:d(b) =3(3∝)、d(c) =8(8∝)、 d(d) = 5(5∝) ; – 加入结点b: d(b) 在未加入结点中最小 ; – k = b; – 更新b的前继结点: p(b) = a ;;第二次循环: – 更新距离:d(f) =10(3+7∝)、d(c) 不变(为什么?) ; – 加入结点d: d(d)在未加入结点中最小 ; – k = d; – 更新d的前继结点: p(d) = a ;;第三次循环: – 更新距离:d(g) =9(5+4∝)、d(c) = 7(5+28) ; – 加入结点c: d(c)在未加入结点中最小 ; – k = c; – 更新c的前继结点: p(c) = d ;;第四次循环: – 更新距离:d(e) =15(7+8∝)、d(f) 不变(7+510) ; – 加入结点g: d(g)在未加入结点中最小 ; – k = g; – 更新g的前继结点: p(g) = d ;;第五次循环: – 更新距离:d(i) =13(9+4∝)、d(e) 不变(9+6=15) ; – 加入结点f: d(f)在未加入结点中最小 ; – k = f; – 更新f的前继结点: p(f) = b ;;第六次循环: – 更新距离:d(h) =16(10+6∝)、d(e) 不变(10+5=15) ; – 加入结点i: d(i)在未加入结点中最小 ; – k = i; – 更新i的前继结点: p(i) = g ;;第七次循环: – 更新距离:d(j) =19(13+6∝)、d(e) = 14(13+115) ; – 加入结点e: d(e)在未加入结点中最小 ; – k = e; – 更新e的前继结点: p(e) = i ;;第八次循环: – 更新距离:d(h) =15(14+116)??? – 加入结点h: d(h)在未加入结点中最小 ; – k = h; – 更新h的前继结点: p(h) = e ;; 第九次循环: – 更新距离:d(j) =17(15+219); – 加入结点j: d(j)在未加入结点中最小 ; – k = j; – 更新j的前继结点: p(j) = h ;;最短路径: – 所有结点均被加入,算法结束; – d(i)为从结点a到任意结点i的最短路径的距离; – 通过回溯p(i),可确定结点a到任意结点i的最短路径; –例如:确定a到e的最短路径: p(e)=i, p(i)= g, p(g)= d, p(d)= a , 即a-d-g-i-e

您可能关注的文档

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档