Dijkstra最短路径算法 下载本文

内容发布更新时间 : 2024/5/4 22:32:25星期一 下面是文章的全部内容请认真阅读。

西安科技大学 通信学院

Dijkstra最短路径算法

摘 要

OSPF 是由 IETF 的 IGP 工作组为 IP 网开发的一种能适应大型网络需要的典型的 链路状态路由协议,它可以迅速地检测 AS 内的拓扑变化,经过一个

1

西安科技大学 通信学院 比较短的收敛期 后,重新计算出无环路由。在 OSPF 中采用的是 Dijkstra 算法来实现最短路径的计算, 做到了选路的高效、可靠。不同的算法在时间上的开销是不一样的,可能会有很大 的差别,而对于一个大型的网络来讲,选路的效率往往就是网络的生命,算法的重 要性不言而喻。

关键词 OSPF 最短路径Dijkstra

第1章 绪论

最短路径算法是计算机科学与地理信息科学等领域研究的热点,其算法有很多种,其中传统的Dijkstra算法一般用于计算一个源节点到所有其他节点的最小代价路径,并且能够适应网络拓扑的变化,性能稳定,因而可以在运输路线规划等领域都应用广泛.

1.1 国内外最短路径算法的发展及其概况

最短路径在20世纪初开始受到人们的重视,关于它的求解方法,当时有很多科学家在研究.但给出求解的基本思想的人直到1959年才出现,是一位名叫Edsger Wybe Dijkstra(迪杰斯特拉)的荷兰计算机科学家,他不仅给出了求解

2

西安科技大学 通信学院 的基本思想,还给出了算法.他给出的算法主要解决的问题是从某一个固定的点到其他各点的最短路径问题.后来这个算法被誉为一代经典,被称作Dijkstra算法.后来,人们逐渐从两个方面来研究最短路径,分为完全信息情况下和不确定情况下.确定情况下对最短路径的研究的过程中,发展出了很多高效的算法,其中1958年的Bellman算法、1959年的Dijkstra算法、1969年的Dreyfus算法已成为确定情况下的经典算法[1].而不确定情况下对最短问题的研究又分成了四个方面:研究路段长度随机变化的最短路径问题,以Frank和Mirchandani为代表;研究不同费用函数最短路径问题,以Loui、Muethy和Sarkar为代表;研究时间独立情况下的路段长度随机变化的最短路径问题,Hall、LiPing Fu、L.R.Rilett、Elise和Hani为代表;研究路段长度为区间范围的最短路径问题,以Tomas和Rajeev为代表.其中,第二方面问题的研究得出的结论是“当目标是期望最短路径时问题转化为将边的权重用期望值表示的最短路径问题”.

1.2 传统Dijkstra算法仍然存在的一些问题

原始Dijkstra算法在存储图形数据和运算时,基于网络的权矩阵,需要根据其节点与距离之间的关系,形成关联矩阵、邻接矩阵与距离矩阵,需要定义

N?N的数组来存储数据,其中N为网络的节点数,当网络的节点数较大时,将占用大量的计算机内存.

原始Dijkstra算法在运行时一般将网络节点分为未标记节点、临时标记节点和永久标记节点3种类型.网络中所有节点首先初始化为未标记节点,在搜索过程中和最短路径节点相连通的节点为临时标记节点,每一次循环都是从临时标记节点中搜索距离原点路径长度最短的节点作为永久标记节点,直至找到目标节点或者所有节点都成为永久标记节点才结束算法.根据算法的描述可知对临时标记节点的遍历成为Dijkstra算法的瓶颈,影响了算法的执行效率.

第2章 Dijkstra经典算法

2.1 引言

Dijkstra算法是典型最短路算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止.Dijkstra算法能得出最短路径的最优解,但由于它遍历计算的节点很多,

3