Dijkstra最短路径算法_第1页
Dijkstra最短路径算法_第2页
Dijkstra最短路径算法_第3页
Dijkstra最短路径算法_第4页
Dijkstra最短路径算法_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Dijkstra最短路径算法最短路径算法在日常生活中,我们如果需要常常往返A地区和B地区之间,我们最希望知道的可能是从A地区到B地区间的众多路径中,那一条路径的路途最短。最短路径问题是图论研究中的一个经典算法问题,旨在寻找图(由结点和路径组成的)中两结点之间的最短路径。算法具体的形式包括:()确定起点的最短路径问题:即已知起始结点,求最短路径的问题。()确定终点的最短路径问题:与确定起点的问题相反,该问题是已知终结结点,求最短路径的问题。在无向图中该问题与确定起点的问题完全等同,在有向图中该问题等同于把所有路径方向反转的确定起点的问题。()确定起点终点的最短路径问题:即已知起点和终点,求两结点

2、之间的最短路径。()全局最短路径问题:求图中所有的最短路径。用于解决最短路径问题的算法被称做“最短路径算法”,有时被简称作“路径算法”。最常用的路径算法有:Dijkstra算法、A*算法、Bellman-Ford算法、Floyd-Warshall算法、Johnso下面我们主要研究Dijkstra算法 Dijkstra算法:也称为最短路径算法(ShortestPathAlgorithm)、正向搜索算法(ForwardSearchAlgorithm),是一种集中式的静态算法。 Dijkstra算法的正式定义: 设:N=网络中所有节点的集合S=源节点M=已有算法归并的节点的集合L(i,j)=节点i与

3、j之间链路权值;若两个节点间没有直接连接则为C(n)=算法求得的当前从S到n的最少花费路由的花费 算法步骤:1. 初始化M=SC(n)=L(S,n)fornS2. 从不再M中的相邻节点中找到出一个具有和节点S的最少花费路由的节点,并且把节点规约进M中。3. 更新最少的花费路径4. 重复步骤2和3,知道M=N.Dijkstra算法实现1.每个结点用从源结点沿已知最佳路径到本结点的距离来标注,标注分为临时性标注和永久性标注;2.初始时,所有结点都为临时性标注,标注为无穷大;3.将源结点标注为0,且为永久性标注,并令其为工作结点;4.检查与工作结点相邻的临时性结点,若该结点到工作结点的距离与工作结点

4、的标注之和小于该结点的标注,则用新计算得到的和重新标注该结点;5.在整个图中查找具有最小值的临时性标注结点,将其变为永久性结点,并成为下一轮检查的工作结点;6.重复第四、五步,直到目的结点成为工作结点;57.2.2最佳路由算法 Dijkstra算法例H(,-)D(,-)D(,-)B(2,A)ABCDEFGHAB(2,A)C(,-)D(,-)E(,-)F(,-)G(6,A)H(,-)2732232246AB(2,A)C(9,B)E(4,B)F(6,E)G(5,E)AB(2,A)C(9,B)G(5,E)H(8,F)AB(2,A)C(9,B)D(,-)E(4,B)F(6,E)G(5,E)H(9,G)AC(9,B)D(,-)E(4,B)F(,-)G(6,A)H(,-)E(4,B)F(6,E)(a)(b)(c)(d)(e)(f)6从A出发到D的最短路径 sRBDBRCDCRDDDREDERFDFRGDGRHDHUB,C,D,E,F,G,HA20000A60BC,D,E,F,G,HA2B90B40A60ED,F,G,HA2B90B4E6E

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论