最短路径算法:Dijiskstra算法

路由选择算法中都要用到求最短路径算法,比较经典的有Bellman-Ford算法和Dijskstra算法,它们的思路不同但得到的结果一样。
寻找源结点到其它各结点的最短路径,每次都能找到一个到源结点的最短路径。

最短路径算法

令D(v)为源结点到结点v的距离,它是源结点沿某一条路径到v的所有链路之和。
令l(I,j)为结点i到j的距离。
算法步骤:
Dijikstra算法步骤
设源结点为1,则算法的具体步骤如下:

步骤 A集合 D(2) D(3) D(4) D(5) D(6) B集合
初始化 {1} 2,(1,2) 5,(1,5) 1,(1,4) {2,3,4,5,6}
1 {1,4} min{2,3}=2,路径(1,2) min{5,4}=4,路径(1,4,3) 1,1到4的最短路径为(1,4) min{∞,2}=2,路径(1,4,5) min{∞,∞}=∞ {2,3,5,6}
2 {1,4,2} 2,1到2的最短路径为(1,2) min{4,5}=4,路径(1,4,3) min{2,∞}=2,路径(1,4,5) min{∞,∞}=∞ {3,5,6}
3 {1,4,2,5} min{4,3}=3,路径(1,4,5,3) 2,1到5的最短路径为(1,4,5) min{∞,4}=4,路径(1,4,5,6) {3,6}
4 {1,4,2,5,3} 3,1到3的最短路径(1,4,5,3) min{4,8}=4, 路径(1,4,5,6) {6}
5 {1,4,2,5,3,6} 4,1到6的最短路径(1,4,5,6)