* * Dijkstra算法说明: 节点1为源节点,L(i,j)为节点i至节点j之间的距离,D(v)为源节点至某节点v的距离,实际上它就是节点1沿某一路径到节点v的各链路长度之和。Dijkstra算法就是要求出D(v)的最短路径。基本方法是从源节点起,每次沿某一路径找出一个节点至源节点的最短路径,直到所有的点都找完为止。 * * (1)初始化:令N表示网络节点的集合。 N={1},则对于所有N以外的节点,可以写出: D(v)=l(1,v); 若节点v与节点1直接相连; 或=∞ ; 若节点v与节点1不直接相连; (2)搜索不在N中的节点w,要求D(w)最小。把w加入到N中;对所有不在N中的节点v,计算: D(v)←Min{D(v),D(w)+L(w,v)};即取其中最小值更新原有的D(v); (3)重复步骤2,直到所有的网络节点都在N中为止。 * * * * 计算:(下表,计算图E-1的网络的最短路径) 步骤 N D(2) D(3) D(4) D(5) D(6) 初始化 {1} 2 5 1 ∞ ∞ 1 {1,4} 2 4 ① 2 ∞ 2 {1,4,5} 2 3 1 ② 4 3 {1,2,4,5} ② 3 1 2 4 4 {1,2,3,4,5} 2 ③ 1 2 4 5 {
原创力文档

文档评论(0)