离散数学图论最短路径与关键路径
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3 5
1
V5
7
v2 v3 v4 v5 v6 v7
step1 2 5 3 ∞ ∞ ∞
step2
4 3 ∞ 9∞
step3 4 8 9 ∞
step4
7 9∞
2(v2)第1短 3(v4)第2短 4(v3)第3短 7(v5)第4短
step5
8 14 8(v6)第5短
step6
13 13(v7)第6短
4.5 最短路径及关键路径
7 (v1,v2 ,v3,v5)
0 3 (v1,v2)
9 (v1,v2 ,v3,v5 ,v4)
4 (v1,v2, v3)
P={v1,v2 , v3, v5 v4 , v6} T={}
4.5 最短路径及关键路径
V1
10
50
V5 100 30
10
20
V2
10 5
V4 50 V3 20 V6
step1 step2 step3 step4 step5
号的集合,另一部分成为具有T(暂时性)标号的集合。所 谓结点v的P标号是指从v1到v的最短路径的长度;而顶点u 的T标号是指从v1到u某条路径的长度。 Dijkstras算法首先 将v1取为P标号,其余结点取为T标号,然后逐步将具有T标 号的结点改为P标号。当结点vn已被改为P标号时,就找到 了一条从v1到vn的最短路径。
P标号,且P=P∪{vl},T=T-{vl}。 Step3:修改
修改与vl 相邻的结点的T标号的值。
viT :
d(vl)+W(vl,vi) 若d(vl)+W(vl,vi)<d(vi)
d(vi)=
d(vi)
否则
4.5 最短路径及关键路径
Step4:重复(2)和(3),直到vn改为P标号为止。 【例】试求无向赋权图中v1到v6的最短路径。
4.5 最短路径及关键路径
v2 v3 v4 v5 v6
50 30 100 10/V∞1
50 30 20/V5 ∞
40 30/V1
∞
10(v5)第1短 20(v4)第2短
30(v3)第3短
35/V3
50 35(v2)第4短
45/V2 45(v6)第5短
4.5 最短路径及关键路径
V2
7
22
V1 5
V3 5 V6 5
V7
3
1
V4
P={v1,v2 , v3, v5} T={v4,v6}
4.5 最短路径及关键路径
1 (v1)
7 (v1,v2 ,v3,v5)
0 3 (v1,v2)
9(v1,v2 ,v3,v5)
4 (v1,v2, v3)
P={v1,v2 , v3, v5 , v4} T={v6}
4.5 最短路径及关键路径
1 (v1)
离散数学
Discrete Mathematics
第4章 图 论
计算机与信息工程学院
内容提要
4.1 图的基本概念 4.2 路和回路 4.3 连通图 4.4 图的矩阵表示
内容提要
4.5 欧拉图和哈密顿图 4.6 树 4.7 二部图及匹配 4.8 平面图
4.5 最短路径及关键路径
定义: 设G=(V,E,)为无向简单图,对于每一条边e∈E,均有一 个正实数W(e)与之对应,称w为G的权函数,并称G为带有 权W的图,又称赋权图,权也称为边的长度。
v2
7
1
v1
2
5
4
v3
1
v4
2
3 v6
6
v5
4.5 最短路径及关键路径
1(v1) 0
4(v1)
∞
∞ ∞
P={v1} T={v2 , v3,v4,v5,v6}
4.5 最短路径及关键路径
1 (v1) 0
3(v1,v2)
8(v1,v2)
∞
6(v1,v2)
P={v1,v2} T={v3,v4,v5,v6}
边(vi,vj)的权
带权图
4.5 最短路径及关键路径
求给定两点间的最短距离 ——两点之间的最短路径问题
求从某个源点到其余各点的最短路径 每一对顶点之间的最短路径
4.5 最短路径及关键路径
求从源点到其余各点的最短路径的算法的基本思想: 依最短路径的长度递增的次序求得各条路径
源点
其中,从源点到顶点v1的
v1
最短路径是所有最短路径
v2
中长度最短者。
…
4.5 最短路径及关键路径
路径长度最短的最短路径的特点: 在这条路径上,必定只含一条弧,并且这条弧的权值最小。
下一条路径长度次短的最短路径的特点: 它只可能有两种情况:或者是直接从源点到该点(只含 一条弧); 或者是从源点经过顶点v1,再到达该顶点(由两 条弧组成)。
4.5 最短路径及关键路径
1 (v1)
8(v1,v2)
0
∞
3 (v1,v2)
4(v1,v2, v3) P={v1,v2 , v3} T={v4,v5,v6}
4.5 最短路径及关键路径
1 (v1) 0
3 (v1,v2)
7(v1,v2 ,v3,v5)
10(v1,v2 ,v3,v5)
4 (v1,v2, v3)
4.5 最短路径及关键路径
• 从源点到其余各点的最短路径
Dijkstra算法(1959) 设G有n个顶点;边的长度ℓij≥0;若结点vi和vj 没有边相连(不是邻接点),则令ℓij=∞,对每个 结点vi,令ℓij=0。
4.5 最短路径及关键路径
Dijkstras基本思路: 将顶点集V分成两部分,一部分成为具有P(永久性)标
4.5 最短路径及关键路径
Step1:
初始化:将v1置为P标号,d(v1)=0,P={v1},vi(i≠1)置
vi 为T标号,即T=V-P,且
d(vi)=W(v1, vi) 若viadjvi
d(vi)=∞
else
4.5 最短路径及关键路径
Step2:找最小
寻找具有最小值的T标号的结点。若为vl,则将vl的T标号改为
4.5 最短路径及关键路径
再下一条路径长度次短的最短路径的特点:
它可能有三种情况:或者是直接从源点到该点(只含一 条弧); 或者是从源点经过顶点v1,再到达该顶点(由两 条弧组成);或者是从源点经过顶点v2,再到达该顶点。
其余最短路径的特点: 它或者是直接从源点到该点(只含一条弧); 或者是从源 点经过已求得最短路径的顶点,再到达该顶点。
试用Dijkstra算法求下列简单无向赋权图中
V1到V11的最短路径。 v2 1 v5 2 v8
2 65
39 7
9Hale Waihona Puke Baidu
v1
8 v3
1 v6 6
v9 2
v11
1
72 4 3
1
4
v4 9 v7 1 v10
4.5 最短路径及关键路径
求每一对顶点之间的最短路径
——求任意两点间最短距离的Floyd算法 基本思想: 从 vi 到 vj 的所有可能存在的路径中,选出一条长度最 短的路径。