数据结构第九章图最短路径详解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
最 终点 v1 短 步骤1 路 径 步骤2 求 步骤3 解 步骤4 过 程
v2
v3
v4
v5
vi
10
(v0,v2)
30
100 v2
(v0,v4) (v0,v5)
60 (v0,v2,v3)
50 (v0,v4,v3)
30
100 v4
(v0,v4) (v0,v5)
90 (v0,v4,v5)
v3
60
v5
(v0,v4,v3,v5)
V5 100 30
60 V4
V0 10 10 20
V1 5
V2
V3 50
最 终点 v1 短 步骤1 路 径 步骤2 求 步骤3 解 步骤4 过 程
v2
v3
v4
v5 vi
10
(v0,v2)
30
100 v2
(v0,v4) (v0,v5)
60 (v0,v2,v3)
50 (v0,v4,v3)
第九章 图
9.1 图的概念 9.2 图的存储结构 9.3 图的遍历 9.4 最小生成树 9.5 图的应用 9.6 最短路径
内容回顾
最短路径
拓扑排序 关键路径
迪杰斯特拉(Dijkstra)算法 弗洛伊德(Floyd)算法
求关键路径步骤
• 求Ve(i)
• 求Vl(j)
1
• 求e(i)
• 求l(i)
加入B: 6 0 2 路径: BA
BC
370
CA CAB
04 6
AB ABC
加入C: 5 0 2 路径: BCA
BC
370
CA CAB
v0 v1
无
v2 (v0,v2)
10
v3 (v0,v4,v3)
50
v4 (v0,v4)
30
v5 (v0,v4,v3,v5) 60
算法步骤:
设置两个顶点的集合T和S;
S存放已找到最短路径的顶点 T存放还未找到最短路径的顶点
初始时,S只包含源点v0 S={V0},T={其余顶点}; 从T中选取某个顶点vi加入到S中 (要求路径长度最短) S中每加入一个顶点vi,都要修改顶点v0到T中剩余顶点的
最短路径长度值;
它们的值为原来值与新值的较小者; 新值是vi的最短路径长度值加上vi到该顶点的路径长度
不断重复选取和修改操作,直到S包含全部顶点;
迪杰斯特拉(Dijkstra)算法举例
V5 60
100
30
V4
V0
10 10
20
V1
V3
5 V2 50
带权邻接矩阵为:
10 30 100 5 50 10 20 60
a4
3
4
a5
2
2
a6
2
5
a7
6
6
a8
6
7
9.6 最短路径
一 问题的提出
交通咨询系统、通讯网、计算机网络 路径长度:路径上边的权值之和 最短路径:两结点间权值之和最小的路径
例:求V0到V4最短路径
V0到V4 路径: V0 V4
45
V0 V1 V4
60
V0 V2 V3 V4 60
V0 V2 V3 V1 V4 55
30
100 v4
(v0,v4) (v0,v5)
90 (v0,v4,v5)
v3
60
v5
(v0,v4,v3,v5)
V5 100 30
60 V4
V0 10 10 20
V1 5
V2
V3 50
9.6 最短路径
9.6.2 每一对顶点间的最短路径
给定带权有向图G,求G中每个顶点到其余各顶 点的最短路径
例:求有向网G的每一对顶点的最短路径
• 计算l(i)-e(i)
顶点
V1 V2 V3 V4 V5 V6 V7 V8 V9
Ve Vl
00 66 46 58 77 7 10 16 16 14 14 18 18
2
7
5
9
3
8
4 a6=2 6
活动
a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11
el 00 02
03 66 46 58 77 77 7 10 16 16 14 14
V0 6 4 V1
3 11 2 V2
有向网G
0 4 11 602 3 0
邻接矩阵
• 方法一:每次以一个顶点为源点,重复执行Dijkstra算法n 次—— T(n)=O(n³)
• 方法二:弗洛伊德(Floyd)算法
– 算法思想:逐个顶点试探法
• 求最短路径步骤:
– 初始时设置一个n阶方阵,令其对角线元素为0,若存 在弧<Vi,Vj>,则对应元素为权值;否则为
– 逐步试着在原直接路径中增加中间顶点,若加入中间点 后路径变短,则修改之;否则,维持原值
– 所有顶点试探完毕,算法结束
例
6
A 4B
3 11
2
C
0 4 11
AB AC
初始: 6 0 2 路径: BA
BC
30
CA
0 4 11
AB AC
加入A: 6 0 2 路径: BA
BC
370
CA CAB
04 6
AB ABC
l-e 0 2
3 0 2 3 0 0 3 0 0
练习题:
a1=3
V1 a2=2
a4=3
V2
a3=2
V4 a5=4
V5 a7=2
a8=1 V6
a6=3 V3
事件Vj 最早发生时间 最晚发生时间
V1
0
0
V2
3
4
V3
2
2
V4
6
6
V5
6
7
V6
8
8
活动ak 最早发生时间 最晚发生时间
a1
0
1
a2
0
0
a3
3
4
45
百度文库
50
10
V0
V1
35
20 10 20
V2 15
V3 5
V4
30 V5
9.6 最短路径
9.6.1 单源点的最短路径
给定带权有向图G和源点v,求从v到G中其余各顶点的 最短路径
例:求v0到其余顶点的最短路径
V5 60
100
30
V4
V0
10 10
20
V1
V3
5 V2 50
始点 终点 最短路径 路径长度