运筹学图与网络分析-最短路
(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
3
1
4
3
1
6
7
(1,3)
5
④重复上述步骤,直至全部的
点都标完。
(1,2)
2
2
0
1
2
5
4
7
3 5 55
7
1
3
3
1
4
6
7
(1,3)
5
④重复上述步骤,直至全部的
点都标完。
一个图有5个点,8条边。这个图一定是
A.连通图 B.树 C.完全图 D.不连通图
连通图G有n个点,其部分树是T,则有
A.T有n个点n条边 B.T的长度等于G的每条边的长度之和 C.T有n个点n-1条边 D.T有n-1个点n条边
某人要从上海乘飞机到奥地利首都维也纳, 他希望选择一条航线,经过转机,使他在空 中飞行的时间尽可能短。该问题可转化为
v7 2
v4
v9
4 v8
1,3 3 0 v1
4
v5
3
5
v2
3
v6
2.5
2 2,5 3
1
2
v3
1,4
3
v4
v7 2
v9
4 v8
1,3 3 0 v1
4
v5
3
5
v2
3
v6
2.5
2 2,5 3
27
2
2
15
3 5 55 7
1
3
3
1
4
6
7
5
2
权wij(dij) 距离、价格
2
2
15 3
点(vi)
边eij或记为(vi,vj)
①从点1出发,因L11=0, 在点1处标记 0
27
02
2
15
3 5 55 7
3
1
4
3
1
6
7
5
从已标号的点出发,找与这些
相邻点最小权数(距离)者,找
2 到之后:标号;边变红。
A.最短路线问题求解 B.最大流量问题求解 C.最小树问题求解 D.中国邮递员问题求
21
2
6
5
08
7
1
17
2
1
9
32
5
9 3
79
66
11 2 13
431 4
9
1
10
21
2
6
5
08
7
1
17
2
1
9
32
5
9 3
79
66
11 2 13
431 4
9
1
10
一般的最短路问题描述:
给定一个赋权有向图D=(V,A),对每一个弧a=(vi,vj),相应 地有权w(a)=wij,又给定D中的任何两个顶点vs和vt ,设P是 从vs到vt的路,定义路P的权是P中所有弧之和,记为w(P), 最短路问题就是要在所有从vs到vt的路中,求一条权最小的路, 即一条从vs到vt的路P0使得:
最短路问题
最短(通)路问题是最重要的 优化问题之一,例如各种管道的 铺设、线路的安排、厂区的布局、 设备的更新及运输网络的最小费 用流等。(最短距离、费时最少、 费用最省)
破圈法是:任取一圈,去掉圈中最长边,直 到无圈
避圈法是:去掉图中所有边,从最短边开始 添加,加边的过程中不能形成圈,直到连通 (n-1条边)
一个连通的无向图叫做树 树 无圈,但不相邻的两个点之间加一条边, 得到一个圈 树 中任意两个顶点之间,恰有且仅有一条链
下图中右图是支撑树
v2
e1 v1
e6 e7
e2
v3
e8 e9
e3
v7
e10 v4 e11 e4
v6 e5 v5
(a)
v2
e1
e8
v1
e6 e7 v7
v6 e5
v5
(b)
一个连通图能一笔画的条件是: 它没有奇点;或者它恰好有一个奇点。
2
0
1
2
5
(2,4)
3
5
78
55
7
1
3
3
1
4
6
7
(1,3)
5
(3,7)
(1,2)
2
2
0
1
2
5
(2,4)
3
7
5
(6,8)
55
7
1
3
3
1
4
6
7
(1,3)
5
(3,7)
(1,2)
2
2
0
15
1 3
4
(1,3)
2
(2,4)
3
5
7 (6,8)
5 55
3
1
6
7
(3,7)
(5,13)
7
(1,2)
2
2
0
15
1 3
2
7 2
0
15
3 5 55 7
1
3
3
1
4
6
7
5
(1,2)
2
2
0
7 2
15
3 5 55 7
1
3
3
1
4
6
7
5
③从已标号的点出发,找与这
(1,2)
2
些相邻点最小权数(距离)者, 找到之后:标号;边变红。
2
0
2
7
1
5 3 5 55 7
1
3
3
1
4
6
7
5
③从已标号的点出发,找与这
(1,2)
2
些相邻点最小权数(距离)者, 找到之后:标号;边变红。
4
(1,3)
2
(2,4)
3
5
7 (6,8)
5 55
3
1
6
7
(3,7)
(5,13)
7
对有向图同样可以用标号算法:
例2 如图,有一批货物要从v1运 到v9,弧旁数字表示该段路长, 求最短运输路线。
3 0 v1
4
v5
3
5
v2
3
2
v6
2.5
3
1
2
v3 3
v7 2
v4
v9
4 v8
v5
3
5
1,3
3 0 v1
V1={v1} 2、在未标号点集V2中找出与标号点集V1中的顶点vi有弧相连
(并且以vi为起点)的点vj, 3、在第2步选出的点中,选出满足下面条件的点vk,并给vk标
号(l,L1k),其中l为第一标号, L1k为第二标号
L1k L1l ωlk min L1i ωij vi V1 ,v j V2
v2
3
2
v6
2.5
3
1
2
v3
4
v7 2
3
v4
v9
4 v8
v5
3
5
1,3
3 0 v1
v2
3
2
v6
2.5
3
1
2
v3
4
v7 2
3
v4
v9
4 v8
v5
3
5
1,3
3 0 v1
v2
3
2
v6
2.5
3
1
2
v3
4
1,4
3
v7 2
v4
v9
4 v8
v5
3
5
1,3
3 0 v1
v2
3
2
v6
2.5
3
1
2
4 1,4
v3 3
为从v1到vk的最短路的长度,l表示在从v1到vk的最短路上,与vk 相邻的点是vl 4、若最后一个顶点vn未标号,则转回第2步;若vn已标号,则 从vn开始,按照第一个标号逆向追踪,直到v1,就得到从v1到 vn的最短路,vn的第二个标号表示最短路的长度。