收藏 分享(赏)

Dijkstra最短路径算法.docx

上传人:weiwoduzun 文档编号:5624143 上传时间:2019-03-10 格式:DOCX 页数:12 大小:229.24KB
下载 相关 举报
Dijkstra最短路径算法.docx_第1页
第1页 / 共12页
Dijkstra最短路径算法.docx_第2页
第2页 / 共12页
Dijkstra最短路径算法.docx_第3页
第3页 / 共12页
Dijkstra最短路径算法.docx_第4页
第4页 / 共12页
Dijkstra最短路径算法.docx_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、西安科技大学 通信学院1Dijkstra 最短路径算法西安科技大学 通信学院2摘 要OSPF 是由 IETF 的 IGP 工作组为 IP 网开发的一种能适应大型网络需要的典型的 链路状态路由协议,它可以迅速地检测 AS 内的拓扑变化,经过一个比较短的收敛期 后,重新计算出无环路由。在 OSPF 中采用的是 Dijkstra 算法来实现最短路径的计算, 做到了选路的高效、可靠。不同的算法在时间上的开销是不一样的,可能会有很大 的差别,而对于一个大型的网络来讲,选路的效率往往就是网络的生命,算法的重 要性不言而喻。关键词 OSPF 最短路径 Dijkstra 西安科技大学 通信学院3第 1 章 绪

2、论最短路径算法是计算机科学与地理信息科学等领域研究的热点,其算法有很多种,其中传统的 Dijkstra 算法一般用于计算一个源节点到所有其他节点的最小代价路径,并且能够适应网络拓扑的变化,性能稳定,因而可以在运输路线规划等领域都应用广泛1.1 国内外最短路径算法的发展及其概况最短路径在20世纪初开始受到人们的重视,关于它的求解方法,当时有很多科学家在研究但给出求解的基本思想的人直到1959年才出现,是一位名叫Edsger Wybe Dijkstra(迪杰斯特拉)的荷兰计算机科学家,他不仅给出了求解的基本思想,还给出了算法他给出的算法主要解决的问题是从某一个固定的点到其他各点的最短路径问题后来这

3、个算法被誉为一代经典,被称作Dijkstra算法后来,人们逐渐从两个方面来研究最短路径,分为完全信息情况下和不确定情况下确定情况下对最短路径的研究的过程中,发展出了很多高效的算法,其中1958年的Bellman算法、1959年的Dijkstra算法、1969年的Dreyfus算法已成为确定情况下的经典算法 1而不确定情况下对最短问题的研究又分成了四个方面:研究路段长度随机变化的最短路径问题,以Frank和Mirchandani为代表;研究不同费用函数最短路径问题,以Loui、Muethy和Sarkar为代表;研究时间独立情况下的路段长度随机变化的最短路径问题,Hall、LiPing Fu、L.

4、R.Rilett、Elise和Hani为代表;研究路段长度为区间范围的最短路径问题,以Tomas和Rajeev为代表其中,第二方面问题的研究得出的结论是“当目标是期望最短路径时问题转化为将边的权重用期望值表示的最西安科技大学 通信学院4短路径问题”1.2 传统Dijkstra算法仍然存在的一些问题原始 Dijkstra 算法在存储图形数据和运算时,基于网络的权矩阵,需要根据其节点与距离之间的关系,形成关联矩阵、邻接矩阵与距离矩阵,需要定义的数组来存储数据,其中 为网络的节点数,当网络的节点数较大时,NN将占用大量的计算机内存原始 Dijkstra 算法在运行时一般将网络节点分为未标记节点、临时

5、标记节点和永久标记节点 3 种类型网络中所有节点首先初始化为未标记节点,在搜索过程中和最短路径节点相连通的节点为临时标记节点,每一次循环都是从临时标记节点中搜索距离原点路径长度最短的节点作为永久标记节点,直至找到目标节点或者所有节点都成为永久标记节点才结束算法根据算法的描述可知对临时标记节点的遍历成为 Dijkstra 算法的瓶颈,影响了算法的执行效率第 2 章 Dijkstra 经典算法2.1 引言Dijkstra 算法是典型最短路算法,用于计算一个节点到其他所有节点的最短路径主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止Dijkstra 算法能得出最短路径的最优解,但由于它遍历计

6、算的节点很多,所以效率低如何改进这一经典算法,成为了实现图论中赋权图中解决实际问题的重要课题2.2 原理及应用Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止Dijkstra 算法是很有代表性的最短路径算法,在很多专业西安科技大学 通信学院5课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等Dijkstra 一般的表述通常有两种方式,一种用永久和临时标号方式,一种是用 OPEN, CLOSE 表的方式,这里均采用永久和临时标号的方式该算法要求图中不存在负权边2.2.1 原理D

7、ijkstra算法是1959年由EWDijkstra提出的图论中求最短路径的一个著名的算法,使用其可以求得图中一点到其他各顶点的最短路径原始的Dijkstra算法将网络结点分成3部分:未标记结点、临时标记结点和永久标记结点网络中所有结点首先初始化为未标记结点,在搜索过程中和最短路径中的结点相连通的结点为临时标记结点,每次循环都是从临时标记结点中搜索距源点路径长度最短的结点作为永久标记结点,直至找到目标结点或者所有的结点都成为永久标记结点来结束算法假设每个点都有一对标号( , ),其中 是从起源点 到点 的最短iwjpj sj路径的长度(从顶点到其本身的最短路径是零路(没有弧的路),其长度等于零

8、); 则是从 到 的最短路径中 点的前一点求解从起源点 到点 的最jpsjj ij短路径算法的基本过程如下:(1)初始化起源点设置为: , 为空;所有其他点: ,0swspiw;标记起源点 ,记 ,其他所有点设为未标记的ip?sk(2)检验从所有已标记的点 到其直接连接的未标记的点j的距离,并设置: 式中, 是从点 到 的直接连接距离kjjj dw,minkj j(3)选取下一个点从所有未标记的结点中,选取 中最小的一个 :jwi,(所有未标记的点 ),点 就被选为最短路径中的一点,并设为iwjnji已标记的西安科技大学 通信学院6(4)找到点 的前一点从已标记的点中找到直接连接到点 的点 ,

9、作i ij为前一点,设置: = j(5)标记点 如果所有点已标记,则算法完全推出,否则,记 = ,转i ki到(2)再继续 10 3010 50 6020 图 2-1 Dijkstra 算法最短路径应用演示图循环 红点集 SK0D12D34D初始化 0- 0 10 30 1001 ,1 0 10 60 30 1002 33 0 10 50 30 903 ,02 0 10 50 30 604 14 0 10 50 30 60表 2-1 0 节点到 4 节点的最短路径01 42 3100西安科技大学 通信学院72.3 Dijkstra 算法的优缺点Dijkstra 算法能够保证 100%找到最优解

10、,但其搜索速度较慢,搜索效率非常低,时间花费较多,一般只能用于离线的路径规划问题如节点数为 的图,用Dijkstra算法计算最短路径总共需要迭代 次,n 1n每次迭代都新加一个节点到临时节点集合中,由于第i次迭代时不在临时节点集合中的节点数为 即第 次迭代需对 个节点进行处理,因此其所需的iiin处理数为: 2)1()(1ini对 n 个节点网络的时间复杂度是 在实际应用当中,使用 Dijkstra)(O算法查找最短路径时耗费大量的时间进行数据的比较,本文对 Dijkstra 算法进行分析,通过改变算法实现减少不必要节点计算的时间,提高算法的效率达到对其进行优化第 3 章 基于 Dijkstr

11、a 算法的优化算法的研究3.1 几种优化算法3.1.1 减小算法中成功搜索的搜索范围减小算法中成功搜索的搜索范围以尽快到达目标节点在对现实问题中的交通图初始化为网络拓扑图时,虽然终点已知,而源点尚未确定,但依据常识离案发地段最近的派出所应为案发地段所在辖区派出所,或其周边派出所,也就是源点的选取范围可以确定利用MapObjects2组件提供的MapLayer.SearchExpression (expression)记录集筛选方法,根据案发地段(终点)的不同,动态选取案发地段所在辖区及相邻辖区的道路图层及派出所图层数据进行最短路径查询,从而有效地减少了拓扑图中节点总数 的值 n7西安科技大学

12、通信学院83.1.2 改进算法的存储结构在实际工作中,还要建立起空间数据结构网络数据结构使用的是“边和节点”的数据结构,该数据结构是建立在图论的基础上,节点可用来定义边的连接关系对于网络数据的存储,传统的是采用图论中的邻接矩阵方法,其存储量为 ( 为网络中节点数)通常的地理网络,尽管节点很多,但与节N点相关联的节点数目并不多,一般都为稀疏图,将会浪费大量的空间若采用邻接表的链式存储结构,其存储量为 ( 为节点列表中,同节点关联的所有边E的数目),可节省大量的存储空间,尤其是在表示与节点和边相关信息较多的地理网络时,更为有效但邻接表却难以判断两节点之间的关系,因此本文提出利用NET框架提供的特殊

13、类HashtableNET框架包含特殊类,比如通常所说的集合类用于存储对象与数组类似,集合类可以把对象放入容器中,然后再取出但集合的使用方法与数组不同,拥有用于插入和删除项的专用方法使用Hashtable最大的优点就是大大降低数据存储和查找的时间花费 83.2 本文对Dijlstra优化算法研究3.2.1 优化目标Dijkstra 算法用来求解图上从任一节点(源点)到其余各节点的最短路径其时间复杂度为 ;采用邻接矩阵存储网络拓扑结构,需要 的)(2nO )(N存储空间,随着节点数 的增大,其计算效率和存储效率越低针对此问题,N提出了 Dijkstra 算法的改进,本文在对传统 Dijkstra

14、 算法分析的基础上,对其进行了优化,优化算法只对最短路径上节点的邻居做处理,而不涉及到其他节点3.2.2 优化思路Dijkstra算法基本方法:设 是从源点s到节点j的最短路径长度; 是Wjp从 到 的最短路径中 点的前一节点 是标识集合; 是未标识集合; 是sjjSTM西安科技大学 通信学院9节点集合 是节点 到节点 的距离( 与 直接相连,否则 )算法ijdijijijd步骤如下:Step0: ; ; ( , 与 直接相连)或SsTSMjWijdTsjjW( , 与 不直接相连)jStep1:在 中找到节点 ,使 到 的距离最小,并将 划归到 (可从与isiiS直接相连的 中考虑)sj若

15、= min , 与 直接相连,则将 划归到 中,即 ,sidsj i is,; ; TiTjiPSStep2:修改 中 节点的 值: ;若 值改变,jjwjWijijd,minjW则 ; .iPTSiStep3:选定所有的 最小值,并将其划归到 中:j S; ; ;若 ,所有节点已标识,iWjmnSiTisn则算法终止,否则,转入 Step2通过分析传统Dijkstra算法的基本思路,传统Dijkstra算法存在如下两点不足:(1)当从未标记节点集合 T中选定一个节点 作为转接点后时,需扫描k未标记节点集合 中的节点 并更新其 值,而未标记节点集合 中往往包含TjjWT大量与转接节点 不直接相

16、连的节点 (即 );kikjd(2)在未标记节点集合 中选择一个 值最小的节点作为下一个转接节点,w西安科技大学 通信学院10然而下一个转接节点往往是与标记节点集合 中的节点直接相连的S第 4 章 结束语目前提出的此类最短路径的算法大约有 17 种, 其中三种效果比较好, 即TQQ (graph growth with two queues)、DKA (the Dijkstras algori thm_ implemented with approximate buckets)及 DKD (the Dijkstras algori thm_ implemented with double bu

17、cket s)。后两种算法是基于 Dijkstra 的算法, 更适合于计算两点间的最短路径问题 。总体来说, 这些算法所采用的数据结构及其实现方法由于受到当时计算机硬件发展水平的限制, 将空间存储问题放到了一个很重要的位置, 以牺牲适当的时间效率来换取空间节省。目前 , 空间存储问题已不是要考虑的主要问题, 因此有必要对已有的算法重新进行考虑并进行改进, 可以用空间换时间来提高最短路径算法的效率。最短路径分析过程在网络分析中扮演着重要的角色, 但由于过去的分析算法较复杂, 开销较多, 因而本文通过对经典 Dijkstra 算法的改进, 使用完全二叉树结构来实现优先级队列的操作, 在一定程度上优

18、化了最短路径的计算过程 , 并降低了算法的时间复杂度, 使时间复杂度达到 O(ElgN), 实际数据测试也表明了该算法的可行性。西安科技大学 通信学院11参考文献1 王峰Dijkstra 及基于 Dijkstra 的前 N 条最短路径算法在智能交通系统中的应用J计算机应用研究,2006,2(2.2 李秉智,李智一种新的基于 Dijkstra 算法的 QoS 组播树启发式算法J重庆邮电学院学报(自然科学版),2006,3(43 李擎,宋顶立,张双江,李哲,刘建光,王志良两种改进的最优路径规算法J北京科技大学学报,2005,30(2)4 罗理,王锋.基于 Dijkstra 的最短路径改进算法J湖北汽车工业学报,2007,14(7)西安科技大学 通信学院12

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报