最短路问题__迪杰斯特拉算法

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

T (v3 ) ? min[ T (v3 ), P (v1 ) ? l13 ] ? min[ ?? , 0 ? 5] ? 5
min{T
vj? s
(v
j
)}
?
min{T(v2 ),T(v3 ),T(v4 ),T(v5 ),T(v6 )}
? T (v2 ) ? 3, 所以有, p(v2 ) ? 3
例一、
求从1到8的最短路径
2
6
1
2
3
1
10
5
9
3
4
7
5
6
5
2
3
4
6
7
4
8 8
X={1}
p1=0
2
6
1
2
3
1
10
p4=1
5
9
3
4
7
5
6
5
2
3
4
6
7
4
8 8
min {d12,d14,d16}=min {0+2,0+1,0+3}=min {2,1,3}=1 X={1,4}, p4=1
X={1,4}
p1=0
X={1,2,4,6,7}
p1=0 1
3
p2=2 2
2
1
10
p4=1
4
7Fra Baidu bibliotek
6
5
9
p5=6
5
p3=8 3
6
5
2
3
4
6
7
8
4
8
p6=3
p7=3
min {d23,d53,d58,d78}=min {2+6,6+9,6+4,3+8}=min {8,15,10,11}=8
X={1,2,3,4,5,6,7}, p3=8
vj s
)? A ;

s
为T
标号点集. ,并将结
果仍记v j为T(vj)。
min{T(vj ), p(v1) ? l1 j}
= l1j
若网络图中已无满足此条件的T标号点,停止计算。
第三步:
令T (vj0 )
?
min{T
vj? s
(v
j
)}
, 然后将vj0
的T 标号改成P 标号,转入第二步。此时,
要注意将第二步中的v1 改为vj0 。
4
6
7
4
p6=3
8 8
min {d16,d23,d25,d47}=min {0+3,2+6,2+5,1+2}=min {3,8,7,3}=3
X={1,2,4,6}, p6=3
X={1,2,4,6}
p1=0
p2=2
2
6
1
2
3
1
10
p4=1
5
9
3
4
7
5
6
5
2
3
4
6
7
8
4
8
p6=3
p7=3
min {d23,d25,c47,d67}=min {2+6,2+5,1+2,3+4}=min {8,7,3,7}=3
例一、
用Dijkstra算法求下图从v1到v6的最短路。
v2 2
3
v1
1
2
v4
4
2
v6
5 v3 4
2 v5
解 (1)首先给v1以P标号,给其余所有点T标号。
P (v1 ) ? 0
T (vi ) ? ?? (i ? 2, 3,? , 6)
(2) T(v2 ) ? min[T(v2 ) , P (v1) ? l12 ] ? min[ ?? , 0 ? 3] ? 3
p2=2
2
6
1
2
3
1
10
p4=1
5
9
3
4
7
5
6
5
2
3
4
6
7
4
8 8
min {d12,d16,d42,d47}=min {0+2,0+3,1+10,1+2}=min {2,3,11,3}=2 X={1,2,4}, p2=2
X={1,2,4}
p1=0
p2=2
2
6
1
2
3
1
10
p4=1
5
9
3
4
7
5
6
5
2
3
X={1,2,3,4,6,7}
用Dijkstra算法求下图从v1到v6的最短路。
v2 2
3
v1
1
2
v4
4
2
v6
5 v3 4
2 v5
(4)T (v3 ) ? min[ T (v3 ), P (v2 ) ? l23 ] ? min[ 5 , 3 ? 1] ? 4
T (v4 ) ? min[ T(v4 ), P (v2 ) ? l24 ] ? min[ ?? , 3 ? 2] ? 5
T (v5 ) ? min[ T (v5 ), P(v2 ) ? l25 ] ? min[ ?? , 3 ? 2] ? 5
min{T
vj? s
(v
j
)}
?
min{T (v3 ),T (v4 ),T(v5 ),T(v6 )}
? T(v3 ) ? 4, 所以有, p(v3) ? 4
v2 2
3
v1
1
2
v4
最短路问题
一、问题的提法及应用背景
(1)问题的提法——寻求网络中两点间 的最短路就是寻求连接这两个点的边的 总权数最小的通路。(注意:在有向图 中,通路——开的初等链中所有的弧应 是首尾相连的。)
(2)应用背景——管道铺设、线路安排 、厂区布局、设备更新等。
二、最短路算法
1. D氏标号法(Dijkstra);边权非负 2. 列表法(福德法);有负权,无负回路
X={1,2,4,6,7}, p7=3
X={1,2,4,6,7}
p1=0
p2=2
2
6
1
2
3
1
10
p4=1
5
9
p5=6
3
4
7
5
6
5
2
3
4
6
7
8
4
8
p6=3
p7=3
min {d23,d25,d75,d78}=min {2+6,2+5,3+3,3+8}=min {8,7,6,11}=6
X={1,2,4,5,6,7}, p5=6
4
2
v6
5 v3 4
2 v5
(5)T(v5 ) ? min[T (v5 ), P (v3) ? l35 ] ? min[ 5, 4 ? 4] ? 5
min{T
vj? s
(v
j
)}
?
min{T (v4 ),T(v5 ),T(v6 )}
?
T (v4 )
?
T (v5 )
?
5,
所以有, p(v4 ) ? 5, p(v5 ) ? 5
——从始点到该标号点的最短路权
② T 标号(Temporary临时性标号)
——从始点到该标号点的最短路权上界
(4) 计算步骤及例子:
第一步:给起始点v1标上固定标号p(v1) ? 0 ,
其余各点标临时性标号 T(vj)=? , j? 1;
第二步:考虑满足如下条件的所有点 vj
修改①②与v的j vT具1标相有号邻T为的标点号,,即即(vv1j?,
6
v2
v5
2
4
1
4
2 v1
5
v4 1
1
4
v7
2
v3
3
v6
1.D氏标号法( Dijkstra )
(1)求解思路——从始点出发,逐步顺序 地向外探寻,每向外延伸一步都要求是最 短的。
(2)使用条件——网络中所有的弧权均 非负,即 lij ? 0 。
(3)选用符号的意义:
① P 标号(Permanent固定/永久性标号)
(6) T (v6 ) ? min[T (v6 ) , P (v4 ) ? l46 , P (v5 ) ? l56 ] ? min[?? , 5 ? 4,5 ? 2] ? 7
min{T
vj? s
(v
j
)}
?
min{T(v6 )} ?
7,
所以有,p(v6 ) ? 7
反向追踪得v1到v6的最短路为:v1 ? v2 ? v5 ? v6
相关文档
最新文档