最短路问题复习课程

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

当对所有I,j有:
d(m) ij
di(jm1)
时,则
d
( ij
m
)
是vi到vj的最短距离。
由于最短路线上最多有n-1条边,因此,当
2m

d
(0) ij
是指vi到vj的一步距离;

d
( ij
m
1
)已知时,令
di(m j)m k1~n{d ii(n m k1)dk(m j1)}
则当m=1时,d
(1 ij
是) vi到vj走两步的最小距离;
当m=2时,d
( ij
2
) 是vi
到vj走四步的最小距离;
一般,d
(m ij
)是vi
到vj
走2m步的最小距离;
0+2 0+5 ∞ ∞ ∞ ∞
{2} 5 ∞ ∞ ∞ ∞
2+2 2+4 2+6 ∞ ∞
{4} 6 8 ∞ ∞
4+1 4+∞ 4+3 ∞
{5} 8 7 ∞
5+4 5+1 5+4
8 {6} 9
6+∞
6+2
vj
v1
v2
v3
v4
v5
v6
v7
T (v j)
{8}
8
第6次 迭代
P(v5) l5 j T (v j)
vj
v1
初始值 T ( v j ) {0}
第一次 迭代
P(v1) l1 j
T (v j)
第二次 迭代
P(v2) l2 j
T (v j)
第三次 迭代
P(v3) l3 j
T (v j)
第四次 迭代
P(v4) l4 j
T (v j)
第五次 迭代
P(v6) l6 j
v2
v3
v4
v5
v6
v7
∞ ∞ ∞ ∞ ∞∞
把k赋给i,从搜索节点集合中去掉vk,重新搜索 vk(将vk作为vi)到其余节点的最短距离。
算法思想示意图
ik
v1
T (v j)
i k T (v j )
vj S
vj S
vk vn
T (v j)
T (v j)
ik vj S
vj S
例5-3 用狄克斯拉算法 求解图5-1所示最短路问题。
v2
6
v5
2
反向追踪寻找最短路线,得:
最短路线为 vs v1vt,最短路权为5。
计算过程详示:
d( j1 )w 1j js,1 ,2 ,3 ,t
d(2) s
m i (idni(1)wis)
=min(0+0,4+ -,1+(-1),- + -,- + -)
=0
d(2) 1
=mm iin((idn0i(1+)4,wi41)+0,1+
v2 -,-
+
-,-
+(-1))
=4
……… …
依此类推… vs
vs
v1
反向追踪过程: 寻求一点vk,使 dkl1wk tdtl ,本题中vk 即为v1,所以找到弧(v1,vt);
再寻求一点vi ,使 dil1wi1d4l ,这里, vi即为vs ,所以找到弧( vs,v1);
于是得最短路线 vs v1vt
地向外探寻,每向外延伸一步都要求是最 短的(两层最小化的含义)。 (2)使用条件——网络中所有的弧权均
非负,即 wij 0 。
(3)选用符号的意义:
①标号 P(固定标号或永久性标号)
——从始点到该标号点的最短Baidu Nhomakorabea权。
②标号 T(临时性标号)
——从始点到该标号点的最短路权上界。
②在v1到所有其他节点的最短距离中选择最小的距 离,找到节点 vk,使下式满足:
②优点:可以在有负权的情况下,寻求从
起点到各个点的最短路线和最短路长。
3. 海斯算法
(1)算法思想:
利 用 vi 到 vj 的 一 步 距 离 求 出 vi 到 vj 的两步距离,再由两步距离求出四步 距离,经有限步迭代即可求得vi到vj的 最短路线和最短距离。
(2)算法步骤:
令 di(0 j)lij i1 ,2 , ,n
d d k min
j
i
k 1
j
wij
j2,3,,N
其中,
d
k
j
表示从起点 v 1 到点 v
j 走k步
的最短距离;
③当迭代到第 l步,有
d d l l1时,收敛;
j
j
d
l
j
就是从起点
v
1
到各点的最短距离;
④反向追踪求出最短路线。
例5-4:计算下图中从vs到vt的最短路 线和最短路长
v1
-1 4
求 min{T(vj )}
v k 满足 T(vk)m vj inS{T(vj)}
令:P(vk)T(vk)
比较v1到所有其它节点的最短距离,找到 节点vk,并将最小的距离记录在P(vk)中。
③如果已经搜索到最后一个节点即
已经求出了v 1 到 v n 的最短距离 P ( v
vk
n)
vn ;
,那么就
否则,令 i k ,从 S 中删去 v k ,转①继续搜索。
5-2. 最 短 路 问 题
一、问题的提法及应用背景
(1)问题的提法——寻求网络中两点间 的最短路就是寻求连接这两个点的边的 总权数为最小的通路。(注意:在有向 图中,通路——开的初等链中所有的弧 应是首尾相连的。)
(2)应用背景——管道铺设、线路安排、 厂区布局、设备更新等。
二、最短路算法:
1. D氏标号法(Dijkstra) (1)求解思路——从始点出发,逐步顺序
4 4
1
v1
2
5
v4
1
1
4
v7
2
v3
3
v6
图5-1 例5-3网络图
解:先将图5-1的网络用矩阵形式表示出来:
v1 v2 v 3 v4 v 5 v 6 v 7
V10 2 5 V22 0 2 4 6
DV V4 3 5
2 4
0 1
1 0
4
3 1
4
V5
6
4
0
1
V6 3 1 0 2
V7 4 1 2 0
8+1 8
如果选择v7, 则k=7=n,迭代结束。
T (v j)
8
{8}
反向追踪,得到最优路线: v1 v2 v3 v4 v6 v7
v5
讨论:若先把v7的标号改为永久性标号, 会怎样?
(5) D氏标号法(Dijkstra)的 优缺点(获得的附加信息):
v 能得到从 1 (起点)到各点的最短
路线和最短路长。
vs
-2
-1 1
v2 3
1
6
vt
2
v3
vs v1
v2
v3
vt
d
(1) j
d
(2) j
d
(3) j
vs 0 4 1 --- --- 0 0 0
v1 --- 0 -2 6 1 4 4 4
v2 -1 --- 0 3 --- 1 1 1
v3 --- --- --- 0 2 --- 4 4
vt --- -1 --- --- 0 --- 5 5
2 v1
v3 -5
v2 3
网络中有负权 时,D氏标号 法失效
2. 列表法(Ford算法)
求从点v 1
到任何一点v

j
j2,3,,N)
的最短路。
(1)使用条件—没有负回路
(2)步骤:


d1 j
w1j,j2,3,,N,其中
w
1
j 为起点v 1
到 v j 的弧(v 1 , v j )的权;
②用下列递推公式进行迭代:
相关文档
最新文档