运筹学第六章 图与网络模型 第3节 最短路问题
合集下载
运筹学课件 第六章图与网络分析(清华大学出版社)

w(P ) = min w(P) 0
P
路P0的权称为从vs到vt的距离,记为:d( vs,vt )
OR3 12
– 最短路算法
Dijkstra算法 :有向图 ,wij≥0 一般结论:
vs到 j的 短 v 最 路
vs ,...,vi ,...,vj ⇒ vs ,...,vi
vs到 i的 短 v 最 路
OR3 17
4 )
标号的点,考察弧( v 4 为刚得到 P 标号的点,考察弧( v 4 , v 6),( v 4 , v 7)的端点 v 6,v 7: T ( v ) = min [T ( v ), P ( v ) + l ] = min [13 , 9 + 9 ] = 13 46 6 6 4 T ( v ) = min [T ( v ), P ( v ) + l ] = min [14 , 9 + 7 ] = 14 47 7 7 4 标号, 最小, 比较所有 T 标号, T ( v ) 最小,所以令 P ( v ) = 13 。 6 6 此时 P 标号的点集 S = { , , , v , v , v } v1 v 2 v 3 5 4 6 。 6 7)v 为刚得到 P 标号的点,考察弧( 标号的点,考察弧( v 6 , v 7),( v 6 , v 8)的端点 v 7, 8: v 6 T ( v ) = min [T ( v ), P ( v ) + l ] = min [14 ,13 + 5 ] = 14 67 7 7 6 T ( v ) = min [T ( v ), P ( v ) + l ] = min [+ ∞ ,13 + 4 ] = 17 68 8 8 6 标号, 最小, 比较所有 T 标号, T ( v ) 最小,所以令 P ( v ) = 14 。 7 7 此时 P 标号的点集 S = { , , , v , v , v , v } v1 v 2 v 3 5 4 6 7 。 7
P
路P0的权称为从vs到vt的距离,记为:d( vs,vt )
OR3 12
– 最短路算法
Dijkstra算法 :有向图 ,wij≥0 一般结论:
vs到 j的 短 v 最 路
vs ,...,vi ,...,vj ⇒ vs ,...,vi
vs到 i的 短 v 最 路
OR3 17
4 )
标号的点,考察弧( v 4 为刚得到 P 标号的点,考察弧( v 4 , v 6),( v 4 , v 7)的端点 v 6,v 7: T ( v ) = min [T ( v ), P ( v ) + l ] = min [13 , 9 + 9 ] = 13 46 6 6 4 T ( v ) = min [T ( v ), P ( v ) + l ] = min [14 , 9 + 7 ] = 14 47 7 7 4 标号, 最小, 比较所有 T 标号, T ( v ) 最小,所以令 P ( v ) = 13 。 6 6 此时 P 标号的点集 S = { , , , v , v , v } v1 v 2 v 3 5 4 6 。 6 7)v 为刚得到 P 标号的点,考察弧( 标号的点,考察弧( v 6 , v 7),( v 6 , v 8)的端点 v 7, 8: v 6 T ( v ) = min [T ( v ), P ( v ) + l ] = min [14 ,13 + 5 ] = 14 67 7 7 6 T ( v ) = min [T ( v ), P ( v ) + l ] = min [+ ∞ ,13 + 4 ] = 17 68 8 8 6 标号, 最小, 比较所有 T 标号, T ( v ) 最小,所以令 P ( v ) = 14 。 7 7 此时 P 标号的点集 S = { , , , v , v , v , v } v1 v 2 v 3 5 4 6 7 。 7
运筹学——.图与网络分析-最短路

可选择的最短路为
(v5 , v6 ), (v5 , v7 ).
min{ k24, k34, k56, k57} min{9,10,13,14} 9
① 给(v2 , v4 )
划成粗
线②。给v4 标号(9)。
③ 划第5个弧。
v2 (4) 5 v4(9) 9 v6 (13)
4 4
v1 (0)
1
75
v2 (4)
5
v4
9
v6
4
1
v1 (0)
4
75
5
v8
①
64
1
②
v3(6)
7 v5 6
v7
③
3)接着往下考察,有三条路可走:(v1, v3 ), (v2, v4 ), (v2 , v5 ).
可选择的最短路为
min{ k13, k24, k25} min{l13, l12 d24,l12 d25} min{ 6,4 5,4 4} 6
第6章 图与网络分析
本章内容重点
图的基本概念与基本定理 树和最小支撑树 最短路问题 网络最大流
引
言
图论是应用非常广泛的运筹学分 支,它已经广泛地应用于物理学控制论,信 息论,工程技术,交通运输,经济管理,电 子计算机等各项领域。对于科学研究,市场 和社会生活中的许多问题,可以同图论的理 论和方法来加以解决。例如,各种通信线路 的架设,输油管道的铺设,铁路或者公路交 通网络的合理布局等问题,都可以应用图论 的方法,简便、快捷地加以解决。
若已知设备在各年的购买费,及不同机器役龄时的残值与 维修费,如表2所示.
项目 购买费 机器役龄 维修费 残值
第1年 11 0-1 5 4
运筹学(第6章 图与网络分析)

a1 (v1) 赵
(v2)钱
a2 a3 a4 a14 a15
a8 a9
a7 (v4) 李
(v3)孙
a5 (v5) 周 a6 a10 (v6)吴
图6-3
a12 a11 a13
(v7)陈
定义: 图中的点用v表示,边用e表示。对每条边可用它
所连接的点表示,记作:e1=[v1,v1]; e2=[v1,v2];
树是图论中结构最简单但又十分重要的图。在自然和社会领 域应用极为广泛。 例6.2 乒乓求单打比赛抽签后,可用图来表示相遇情况,如 下图所示。
运动员 A
B C
D
E
F G
H
例6.3 某企业的组织机构图也可用树图表示。
厂长
人事科
财务科
总工 程师
生产副 厂长
经营副 厂长
开发科
技术科
生产科
设备科
供应科
动力科
e2
(v1) 赵
e1
e3
e4 孙(v3) 李(v4)
周(v5)
图6-2
e5 吴(v6) 陈(v7)
(v2)钱
如果我们把上面例子中的“相互认识”关系改为“认识” 的关系,那么只用两点之间的联线就很难刻画他们之间的关 系了,这是我们引入一个带箭头的联线,称为弧。图6-3就是 一个反映这七人“认识”关系的图。相互认识用两条反向的 弧表示。
端点,关联边,相邻 若有边e可表示为e=[vi,vj],称vi和
e2 v2 e6 e1 e4 v1 e3 v3 e8
vj是边e的端点,反之称边e为点vi
或vj的关联边。若点vi、vj与同一条 边关联,称点vi和vj相邻;若边ei和
e5
e7
(v2)钱
a2 a3 a4 a14 a15
a8 a9
a7 (v4) 李
(v3)孙
a5 (v5) 周 a6 a10 (v6)吴
图6-3
a12 a11 a13
(v7)陈
定义: 图中的点用v表示,边用e表示。对每条边可用它
所连接的点表示,记作:e1=[v1,v1]; e2=[v1,v2];
树是图论中结构最简单但又十分重要的图。在自然和社会领 域应用极为广泛。 例6.2 乒乓求单打比赛抽签后,可用图来表示相遇情况,如 下图所示。
运动员 A
B C
D
E
F G
H
例6.3 某企业的组织机构图也可用树图表示。
厂长
人事科
财务科
总工 程师
生产副 厂长
经营副 厂长
开发科
技术科
生产科
设备科
供应科
动力科
e2
(v1) 赵
e1
e3
e4 孙(v3) 李(v4)
周(v5)
图6-2
e5 吴(v6) 陈(v7)
(v2)钱
如果我们把上面例子中的“相互认识”关系改为“认识” 的关系,那么只用两点之间的联线就很难刻画他们之间的关 系了,这是我们引入一个带箭头的联线,称为弧。图6-3就是 一个反映这七人“认识”关系的图。相互认识用两条反向的 弧表示。
端点,关联边,相邻 若有边e可表示为e=[vi,vj],称vi和
e2 v2 e6 e1 e4 v1 e3 v3 e8
vj是边e的端点,反之称边e为点vi
或vj的关联边。若点vi、vj与同一条 边关联,称点vi和vj相邻;若边ei和
e5
e7
运筹学:第6章 图与网络分析

给图中的点和边赋以具体的含义和权值,我们称 这样的图为网络图(赋权图)
2021/4/18
6
图中的点用 v 表示,边用 e 表示,对每条边可用
它所联结的点表示,如图,则有:
e1 = [v1 , v1], e2 = [v1 , v2]或e2= [v2 , v1]
2021/4/18
7
用点和点之间的线所构成的图,反映实际生产和 生活中的某些特定对象之间的特定关系。
第一种解法:
1. 在点集中任选一点,不妨取 S,令 V={S} 2. 找到和 S 相邻的边中,权值最小的 [S , A] 。
2021/4/18
22
3.V={S , A} 4. 重复第2,3步,找到下一个点。
2021/4/18
23
第二种做法求解过程:
2021/4/18
24
破圈法求解步骤:
1. 从图 N 中任取一回路,去掉这个回路中边 权最大的边,得到原图的一个子图 N1。
Dijkstra 算法假设:
1.设 dij 表示图中两相邻点 i 与 j 的距离,若 i 与 j 不相邻,令 dij =∞,显然 dii =0。 2. 设 Lsi 表示从 s 点到 i 点的最短距离。
2021/4/18
31
求从起始点 s 到终止点 t 的最短路径。 Dijkstra 算法步骤:
1.对起始点 s ,因 Lss =0 ,将 0 标注在 s 旁的小 方框内,表示 s 点已标号;
终点重合的链称为圈,起点和终点重合的路称为回
路,若在一个图中,每一对顶点之间至少存在一条
链,称这样的图为连通图,否则称该图为不连通的。
2021/4/18
12
2021/4/18
链
2021/4/18
6
图中的点用 v 表示,边用 e 表示,对每条边可用
它所联结的点表示,如图,则有:
e1 = [v1 , v1], e2 = [v1 , v2]或e2= [v2 , v1]
2021/4/18
7
用点和点之间的线所构成的图,反映实际生产和 生活中的某些特定对象之间的特定关系。
第一种解法:
1. 在点集中任选一点,不妨取 S,令 V={S} 2. 找到和 S 相邻的边中,权值最小的 [S , A] 。
2021/4/18
22
3.V={S , A} 4. 重复第2,3步,找到下一个点。
2021/4/18
23
第二种做法求解过程:
2021/4/18
24
破圈法求解步骤:
1. 从图 N 中任取一回路,去掉这个回路中边 权最大的边,得到原图的一个子图 N1。
Dijkstra 算法假设:
1.设 dij 表示图中两相邻点 i 与 j 的距离,若 i 与 j 不相邻,令 dij =∞,显然 dii =0。 2. 设 Lsi 表示从 s 点到 i 点的最短距离。
2021/4/18
31
求从起始点 s 到终止点 t 的最短路径。 Dijkstra 算法步骤:
1.对起始点 s ,因 Lss =0 ,将 0 标注在 s 旁的小 方框内,表示 s 点已标号;
终点重合的链称为圈,起点和终点重合的路称为回
路,若在一个图中,每一对顶点之间至少存在一条
链,称这样的图为连通图,否则称该图为不连通的。
2021/4/18
12
2021/4/18
链
运筹学图与网络分析-最短路

(P0
)
min P
(P)
路P0的权称为从vs到vt的距离,记为d(vs,vt)。
求网络上的一点到其它点 的最短路
Dinkstra标号法
这是解决网络中某一点到其它点的最 短路问题时目前认为的最好方法。
适用于有向图权值非负的情况
有向图权值非负---- Dijkstra算法
Dijkstra算法的基本步骤(权值非负) 1、给顶点v1标号(0),v1称为已标号点,记标号点集为
(1,2)
2
2
0
1
2
5
7
(2,4)
3 5 55
7
3
1 (4,4) 3 1
4
6
7
(1,3)
5
④重复上述步骤,直至全部的
点都标完。
(1,2)
2
2
0
1
2
5
7
(2,4)
3 5 55
7
1
3
3
1
4
6
7
(1,3)
5
7
(1,2)
2
2
0
2
7
1
5
(2,4)
35
55
7
1
3
3
1
4
6
7
(1,3)
5
(3,7)
(1,2)
2
2
0
2
7
1
5 3 5 55 7
3
1
3 1
34 5 6
7
④重复上述步骤,直至全部的
(1,2)
点都标完。
2
2
0
2
7
1
5 3 5 55 7
第6章最短路问题

最短路问题
X={1,2,4,6,7}
p1=0 p2=2 2 1 p4=1 4 5 6 p6=3 4 2 7 10 p3=8
1
2
5
6 p5=6 5 3 8 4 9
3
3
7
6
8
p7=3
min {c23,c53,c58,c78}=min {2+6,6+9,6+4,3+8}=min {8,15,10,11}=8
17 v5 31 23 18 v6
16 v3 17 22 30
W56 =13+5=18
最短路问题
最终得到下图,可知,v1到v6的距离是53,最短路径有两条: v1→v3→v6和 v1→v4→v6
59 22 V1 (0,s) 16 30 41 (30,1) v4 23 41 17 31 18 (41,1) v5 v6 (53,3) (53,4) 23
设备每年年初的价格表 年份 年初价格 1 11 2 11 3 12 4 12 5 13
最短路问题
设备维修费如下表
使用年数
每年维修费用
0-1
5
1-2
6
2-3
8
3-4
11
4-5
18
解:将问题转化为最短路问题,如下图:用vi表示“第i年年 初购进一台新设备”,弧(vi,vj)表示第i年年初购进的设备一 直使用到第j年年初。
最短路问题
例6.7 求从1到8的最短路径
1
1 2 10 4 5 6 4 2 7
2
5
6 9 5 3 8 4
3
3
7
6
8
最短路问题
X={1}, w1=0
p1=0
运筹学6(图与网络分析)

定义7:子图、生成子图(支撑子图)
图G1={V1、E1}和图G2={V2,E2}如果 V1 V2和E1 E2 称G1是G2的一个子图。
若有 V1=V2,E1 E2 则称 G1是G2的一 个支撑子图(部分图)。
图8-2(a)是图 6-1的一个子图,图8-2 (b)是图 8-1的支撑子图,注意支撑子图 也是子图,子图不一定是支撑子图。 e1
v2 ▲如果链中所有的顶点v0,v1,…,vk也不相
e1 e2 e4 v1 e3
v3 e5
同,这样的链称初等链(或路)。
e6
▲如果链中各边e1,e2…,ek互不相同称为简单链。
e7
e8
▲当v0与vk重合时称为回路(或圈),如果边不 v4
v5
重复称为简单回路,如果边不重复点也不重复
则称为初等回路。
图8-1中, μ1={v5,e8,v3,e3,v1,e2,v2,e4,v3,e7,v5}是一条链,μ1中因顶 点v3重复出现,不能称作路。
e1
e2 e4 v1 e3
v2
v3
e5
e6
e7
e8
v4
v5
定理1 任何图中,顶点次数的总和等于边数的2倍。
v1
v3
v2
定理2 任何图中,次为奇数的顶点必为偶数个。
e1
e2 e4 v1 e3
v2
v3
e5
e6
e7
e8
v4
v5
定义4 有向图: 如果图的每条边都有一个方向则称为有向图
定义5 混合图: 如何图G中部分边有方向则称为混合图 ② ⑤ ④
定理4 有向连通图G是欧拉图,当且仅当G中每个顶点的出 次等于入次。
② 15
9 10
运筹学第六章图与网络分析

S
2
4
7
2 A
0 5
S
5 45 B
98
14
5
13
D
T
C
E
4
4
4
7
最短路线:S AB E D T
最短距离:Lmin=13
2.求任意两点间最短距离的矩阵算法
⑴ 构造任意两点间直接到达的最短距离矩阵D(0)= dij(0)
S A B D(0)= C D E T
SABCDET 0 25 4 2 02 7 5 20 1 5 3 4 1 0 4 75 0 15 3 41 0 7 5 7 0
e1 v1
e5
v0 e2
e3
v2
e4
e6 e7
v3
v4
(4)简单图:无环、无多重边的图称为简单图。
(5)链:点和边的交替序列,其中点可重复,但边不能 重复。
(6)路:点和边的交替序列,但点和边均不能重复。
(7)圈:始点和终点重合的链。
(8)回路:始点和终点重合的路。
(9)连通图:若一个图中,任意两点之间至少存在一条 链,称这样的图为连通图。 (10)子图,部分图:设图G1={V1,E1}, G2={V2,E2}, 如果有V1V2,E1E2,则称G1是G2的一个子图;若 V1=V2,E1E2,则称G1是G2的一个部分图。 (11)次:某点的关联边的个数称为该点的次,以d(vi)表示。
步骤:
1. 两两连接所有的奇点,使之均成为偶点;
2. 检查重复走的路线长度,是否不超过其所在 回路总长的一半,若超过,则调整连线,改 走另一半。
v1
4
v4
4
1
4
v2
v5
5