最短路问题Dijkstra Floyd 算法PPT学习教案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
∴ 点v3得永久标号, 3=1 ,X2={v1,v4 ,v3}, X2={v2, v5,v6 ,v7,v8 ,v9},
在所有vj∈X2中, ∵ u2= 6 ,u3+w32=3+2=5, 即 u3+w32< u2
∴ 修改临时标号u2= 5 ,2=3 ,其余标号不变。
第21页/共58页
k=2 +1=3 ∵ min{u5,u6,u7,u8,u9} =min{6,11, ,,}
=6= u5
∴ 点v5得永久标号, 5=2 ,
X4={v1,v4 ,v3 ,v2, v5}, X4={v6 ,v7,v8 ,v9}, 在所有vj∈X4中, ∵ u6= 11 ,u5+w56=6+4=10, 即 u5+w56< u6 u7= ,u5+w57=6+3=9, 即 u5+w57< u7 u8= ,u5+w58=6+6=12, 即 u5+w58< u8
1, ∞
v8
第13页/共58页
图上标号法:
v2
3,5
1
v1
0,0
6 2
3
1,3
v3
6
1
2
10
v4
1,1
2,6
v5
2
6
3
4 10
4
v6 2 v7
1,∞
4,11
1, ∞
v9
3
1, ∞
v8
第14页/共58页
图上标号法:
v2
3,5
1
v1
0,0
6 2
3
1,3
v3
6
1
2
10
v4
1,1
2,6
v5
2
6
3
4 10
第6页/共58页
图上标号法:
v2
1,6
1
1, ∞
v5
2
v1
0,0
6 2
3
1,3
v3
6
1
2
10
v4
1,1
6
3
4 10
4
v6 2
v7
1, ∞
1, ∞
1, ∞
v9
3
1, ∞
v8
第7页/共58页
图上标号法:
v2
1,6
1
1, ∞
v5
2
v1
0,0
6 2
3
1,3
v3
6
1
2
10
v4
1,1
6
3
4 10
4
v6 2
v7
∴ 点v8得永久标号, 8=5 ,
即从v1到v8的最短路长为u8=12,
∵ 8=5 , 5=2 , 2=3 , 3=1 ,
知从v1到v8 的最短路为:
P1,8=P(v1,v3 , v2, v5,v8)
v
1
v5
2
v9
62 2
6
3
v1
3 v3 6
3 4 10
1
2
v4
10
4
v6 2 v7
v8
第24页/共58页
K=4 +1=5 ∵ min{u6,u8,u9}=min{10,12,} =10= u6 ∴ 点v6得永久标号, 6=5 ,
X6={v1,v4 ,v3 , v2, v5,v7 ,v6},X6={v8 ,v9}, 点v8,v9临时标号不变。
第23页/共58页
K=5 +1=6 ∵ min{u8,u9}=min{12,} =12= u8
6
1
2
10
v4
1,1
6
3
4 10
4
v6 2
v7
1, ∞
4,11
1, ∞
v9
3
1, ∞
v8
第10页/共58页
图上标号法:
v2
13,5
Байду номын сангаас
1
1, ∞
v5
2
v1
0,0
6 2
3
1,3
v3
6
1
2
10
v4
1,1
6
3
4 10
4
v6 2
v7
1, ∞
4,11
1, ∞
v9
3
1, ∞
v8
第11页/共58页
图上标号法:
v2
u5(2) u3(1) w35 1, l(u5 ) 3
u3(4) u3(3) w33 3, l(u3 ) 2
u2(3) u2(2) w22 1, l(u2 ) 1
u4(4) u5(3) w54 2, l(u4) 5
u3(3) u3(2) w33 3, l(u2 ) 2
令 j=i,uj=ui+wij否则, i,,uj 不变,把k换成k+1,
返回第2步。
第18页/共58页
例 用Dijkstra算法求前面例子中从v1到各点的最短路。
v
1
v5
2
v9
62 2
6
3
v1
3 v3 6
3 4 10
1
2
v4
10
4
v6 2 v7
v8
解:u1=0,u2=6,u3=3,u4=1,u5=u6=u7=u8=u9=+ ,
uk (m)
min
1 k n
+ wkj
ur(m)+wrj
=

+ wkj
。设
步骤2 若m+1=n-1,结束。若 m+1<n- 1,置 m=m+1, 转 步 骤 1
l(vj)
l(vj) 若r=j
=
r
其它
第27页/共58页
v2
2
v3
2
1
5
-4
3 3
v1
v5
l(v1)=0, l(vj)=1 (j=2,3,4,5)
旅行路线总费用
路上所有弧权之和。
第2页/共58页
最短路问题
给定有向网络D=(V,A,W),任意弧aij∈A,
有权w( aij )=wij,给定D中的两个顶点vs,vt。设P
是D中从vs到vt的一条路,定义路P的权(长度)是P 中所有弧的权之和,记为w(P)。最短路问题就是 要在所有从vs到vt的路中,求一条路P0 ,使
∴ 修改临时标号u6= 10 ,6=5 , u7=9 ,7=5 , u8= 12 ,8=5第2,2页/共58页
K=3 +1=4 ∵ min{u6,u7,u8,u9} =min{10,9,12,} =9= u7
∴ 点v7得永久标号, 7=5 ,
X2={v1,v4 ,v3 , v2, v5,v7},X2={v6 ,v8 ,v9}, 在vj∈X5中,临时标号不变。
v4
u1(1)
0,
u
(1) 2
1,
u
(1) 3
5,
u
(1) 4
, u5(1)
3
u2(2) u2(1) w22 1, l(u2 ) 1 u3(2) u2(1) w23 3, l(u3 ) 2 u4(2) u5(1) w54 6, l(u4 ) 5
u4(3) u5(2) w54 4, l(u4 ) 5 u5(3) u3(2) w35 1, l(u5 ) 3 u2(4) u2(3) w22 1, l(u2 ) 1
ui min uj 如果ui=+ ,停止, v jX K
从vs到XK中各点没有路;否则,转第3步。
第3步:(给点vi永久性标号) 令Xk+1= Xk∪﹛vi﹜,Xk+1=
Xk\﹛vi﹜
如果Xk+1 =,结束,到所有的点的最短路已经求 得 ;否则,转第4步。
第4步:(修改临时标号)对所有 v j X k1 如, 果 ui wij uj
最短路问题Dijkstra Floyd 算法
会计学
1
一、最短路问题
例 下图为单行线交通网,每弧旁的数字表示通过这条
线所需的费用。现在某人要从v1出发,通过这个交
通网到v8去,求使总费用最小的旅行路线。
v
1
v5
2
v9
62 2
6
3
v1
3 v3 6
3 4 10
1
2
v4
10
4
v6 2 v7
v8
第1页/共58页
j=1 (j=2,3,…,9)
X0={v1} ,X0={v2,v3,…,v9}
第19页/共58页
K=0 ∵ min{u2,u3,u4,u5,u6,u7,u8,u9}
=min{6,3,1,,,,,}
v
=1= u4
1
v5
2
v9
62 2
6
3
v1
3 v3 6
3 4 10
1
2
v4
10
4
v6 2 v7
v8
∴ 点v4得永久标号, 4=1 ,X1={v1,v4},
vi X0
取最小值的点为v1, ∴P1=P(vs,v1) 假定 u0,u1,…,uk的值已求出,对应的最短 路分别为
P1=P(vs,v1), P2=P(vs,v2),…, Pk=P(vs,vk)
第5页/共58页


Xk
uk 1
vmvsi,vXi1,nkv2u,..i.,vk
, Xk V
w(vi , v')
6 5
v5
v4
21
第29页/共58页
定义: 给定一个赋权有向图,即给了一个有向图 G=(V,A,W) ,对每一个弧aij =(vi,vj)∈A ,
1, ∞
1, ∞
1, ∞
v9
3
1, ∞
v8
第8页/共58页
图上标号法:
v2
1,6
1
1, ∞
v5
2
v1
0,0
6 2
3
1,3
v3
6
1
2
10
v4
1,1
6
3
4 10
4
v6 2
v7
1, ∞
4,11
1, ∞
v9
3
1, ∞
v8
第9页/共58页
图上标号法:
v2
1,56
1
1, ∞
v5
2
v1
0,0
6 2
3
1,3
v3
问题:①本例中,v1到v9的最短路?
②无向网络: wij
vi
w无ij 向网络vj中,最短路→v最i 短链。
vj
③负权弧时。
wij
v1
1
v2
2
-3
Dijkstra算法失效
v3
④多个点对之间最短路?
第25页/共58页
三、Ford算法
算法思想:逐次逼近
每次逼近是求D中从顶点V1到其余各点的带有限制的最短路。
\
Xk
v 'X k
使上式达到最小值的点v’ 可取为vk+1。
计算过程中可采用标号方法。
Xk中的点,ui 值是vs 到vi 的最短路长度,相应的
点记“永久”标号;
XK中的点,ui值是vs到vi的最短路长度的上界, 相应的点记“临时”标号,供进一步计算使用。
前点标号i : 表示点vs到vj的最短路上vj的前一点。 如i=m,表示vs到vj的最短路上vj前一点是vm。
4
v6 2 v7
1,∞
4,11
1, ∞
v9
3
1, ∞
v8
第15页/共58页
图上标号法:
v2
3,5
1
v1
0,0
6 2
1,3
3 v3
6
1
2
10
v4
1,1
2,6
v5
2
6
3
4 10
4
v6 2 v7
5,9
5,10
1, ∞
v9
3
5,12
v8
第16页/共58页
图上标号法:
v2
3,5
1
v1
0,0
6 2
3
1,3
v3
w(P0
)
mi P
nw(P)
称P0是从vs到vt的最短路。路P0的权称为从vs到vt 的路长。记为ust。
第3页/共58页
二、Dijkstra算法 当所有 wij ≥0 时,本算法是用来求给定点vs
到任一个点vj 最短路的公认的最好方法。 事实:如果P是D中从vs到vj的最短路,vi是P中的一 个点,那么,从vs沿P到vi的路是从vs到 vi的最短路。
6
1
2
10
v4
1,1
2,6
v5
2
6
3
4 10
4
v6 2 v7
5,9
5,10
1, ∞
v9
3
5,12
v8
第17页/共58页
Dijkstra算法步骤:
第1步:令us= 0,uj=wsj (1≤j≤n)若asjA,则
令wsj=+ , X0={vs} ,X0=V\X0 ,k=0, i=0 (0 ≤j≤n)
第2步:(选永久标号)在XK中选一点vi,满足
u5(4) u5(3) w55 1, l(u5 ) 3
第28页/共58页
7.3最短路问题
7.3.1最短路问题定义
如下图所示的单行线交通网,每弧旁的数字代 表通过这条单行线所需要的费用。现在某人要从 vs 出发,到达v5 ,求使费用最小的旅行路线。
2
v1
9
vs
4
15
v2
2 3
35 16
v3
7
3,5
1
1, ∞
v5
2
v1
0,0
6 2
3
1,3
v3
6
1
2
10
v4
1,1
6
3
4 10
4
v6 2
v7
1, ∞
4,11
1, ∞
v9
3
1, ∞
v8
第12页/共58页
图上标号法:
v2
3,5
1
1, ∞
v5
2
v1
0,0
6 2
3
1,3
v3
6
1
2
10
v4
1,1
6
3
4 10
4
v6 2
v7
1, ∞
4,11
1, ∞
v9
3
第一次:自顶点到vj由一条弧组成的路中找一条最短的
第二次:自顶点到vj由不多于两条弧组成的路中找一条最短的 第m次:自顶点到vj由不多于m条弧组成的路中找一条最短的 最多进行n-1次逼近 定理:设网络D不含负回路,pj(m)是D的自顶点v1到顶点vj由不 多于m条弧组成的路中长度最小者,w(pj(m))=uj(m),j=2,3,…,n, 则对于一切2 j n,有
uj(1)
= w1
j
uj(m)
uk(m-1)
2 m n-1
= min
+
1 k n
第26w页/k共j 58页
算法步骤:
相关文档
最新文档