- 87
- 0
- 约2.13千字
- 约 3页
- 2017-08-15 发布于重庆
- 举报
最短路径算法Dijkstra算法.doc
3.6 附录E 最短路径算法——Dijkstra算法
在路由选择算法中都要用到求最短路径算法。最出名的求最短路径算法有两个,即Bellman-Ford算法和Dijkstra算法。这两种算法的思路不同,但得出的结果是相同的。我们在下面只介绍Dijkstra算法,它的已知条件是整个网络拓扑和各链路的长度。
应注意到,若将已知的各链路长度改为链路时延或费用,这就相当于求任意两结点之间具有最小时延或最小费用的路径。因此,求最短路径的算法具有普遍的应用价值。
下面以图E-1的网络为例来讨论这种算法,即寻找从源结点到网络中其他各结点的最短路径。为方便起见,设源结点为结点1。然后一步一步地寻找,每次找一个结点到源结点的最短路径,直到把所有的点都找到为止。
图E-1 求最短路径算法的网络举例
令D(v)为源结点(记为结点1)到某个结点v的距离,它就是从结点1沿某一路径到结点v的所有链路的长度之和。再令l(i, j)为结点i至结点j之间的距离。整个算法只有以下两个部分:
(1) 初始化
令N表示网络结点的集合。先令N = {1}。对所有不在N中的结点v,写出
在用计算机进行求解时,可以用一个比任何路径长度大得多的数值代替∞。对于上述例子,可以使D(v) = 99。
(2) 寻找一个不在N中的结点w,其D(w)值为最小。把w加入到N中。然后对所
原创力文档

文档评论(0)