(2)令T2=T1-{t1},求T2中指标最小的结点,设为t2。 若t2=z,则DT2(t2)为a到z最短通路边权和。 否则,执行(3)
(3) 依此类推,直到求得某个目标集Tk,使得z为Tk中指标最小的结 点,则DTk(z)为a到z的最短通路的边权和。
关键:求结点关于目标集Ti的指标。
13
采用“递推”的方法求目标集中的指标
d
min(, ) 通路:无
c是指标最小的点。
a到c的最短通路为: abc,边权和为DT2(c)=3
7 g
T2
18
令T3 =T2 {c} {d, e, f , g, z}, T3中各点的指标为
DT3(d) min(DT2(d), DT2(c) W (c, d))
min(4,3 3) 4
狄克斯特洛算法:原理
[原理]:
设目标集T = {t1, t2, ……, tn}, 其中t1为T中指标最小的 点,即:
DT(t1) = min{DT(t1), DT(t2) , ……, DT(tn)} (1) 始点a到t1的最短通路的边权和就是DT(t1) (2) 对任意2 in, a到t1的最短通路 a到ti的最短通路
62
1
3 f4 z
56 3
d
7
g
比较T4中各点指标可知:e和g的指标相同,且最小,
故可选其中一个,DT5(e)=8是a到e的最短路径长度,
abcfe是a到e的最短路径。
21
令 T6=T5-{e}={g, z} T6中各结点的指标为:
DT6 (g) min(DT5(g), DT5(e) W (e, g))
min(6, ) 6 通路:abcf a
4