图与网络规划.ppt
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例 用标号法求下图网络的最大流。弧旁的数字是(Cij,fij)。
v2
(4,3) v4
(3,3)
(1,1)
(5,3)
(0,∞)vs
(1,1)
(5,1)
(3,0) vt
(2,1)
(s,4)v1
(2,2) v3
解:(一)标号过程
(1)给vs标号(0,∞);未检查的标号点为vs。
(2)检查vs,在vs的前向弧(vs,v1)上,fs1=1,
不满足标号条件。此时,未检查的标号点为v2
(-1,1)
v2
(4,3)
v(4 2,1)
(3,3)
(1,1)
(5,3)
(0,∞)vs
(1,1)
(5,1)
(3,0) vt
(2,1)
(s,v14)
(2,2)
v3
(-2,1)
(4)检查v2,在v2的后向弧(v3,v2)上,f32=1>0, 给
v3标号 (-2, l(v3)), 这里 l(v3) min l(v2 ), f32 min 1,1 1,
对发点 vs :
fsj
f js V(f)
(vs ,v j )A (vj ,vs )A
0
对收点 vt :
ftj f jt V(f)
0
(vt ,v j )A (vj ,vt )A
V(f)称为可行流 f 的流量,即发点的净输出量。
如(b)图是网络上的一
个可行流(运输方案) v2
10.5
(二)调整过程。找出增广链µ,并沿增广链µ调整流量 。
(1)找增广链:从vt开始,反向追踪,找出增广链µ, 如vt的第一个标号为k(或-k),则得到前向弧(vk,
vt)或后向弧(vt,vk)。检查vk的第一个标号,若为i(或i),又得到前向弧(vi,vk) 或后向弧(vk,vi) 。再检查vi的第 一个标号,依此找下去,直到vs。被找出的弧构成了增广链µ
(vi,vj) ∈ µ+ (vi,vj) ∈ µ-
0≤fij<Cij 0 < fij ≤ Cij
前向弧是 非饱和弧, 后向弧 是非零流弧,
8.4 V1
5.0 V2
3.3
V3
5.4
V4
Cij.fij
V5
4、截集与截量
定义4:网络D=(V,A,C),若点集V被剖分为两个非 空集合V1 和 V1,使vs∈V1,vt ∈ V1,V1V1= , 则把所有始点在V1中,终点在V1中的弧构成的集合 (V1,V1)称为是分离vs和vt的截集。
8.3
3.3
v6
17.2
v3
6.3
v5
不难证明,任何一个可行流的流量V(f)都不会超过任一
截集的容量。即 V(f) C(V1, V1)
最小截集的容量是网络中的瓶颈容量。
定理1 最大流最小截定理。任一个网络D中,从vs到 vt的最大流的流量等于分离vs,vt的最小截集 的容量。
定理2 可行流f*是最大流 不存在关于f*的增广链。
3.2 5.1
6.3
µ=(v1,v2,v3,v4,v5,v6)
v4
11.6
3.3
v5
v6
17.2
后向弧
µ+={(v1,v2) ,(v2,v3), (v3 , v4),(v5,v6)}
µ- ={(v5,v4)}
定义3 设f是一个可行流, µ是从vs到vt的一条链,若µ满 足下列条件,称之为(关于可行流f的)一条增广链。
标号过程首先给vs标号(0,+∞),此时vs是未检查 的标号点,其余各点都是未标号点。
取一个未检查的标号点vi进行检查,给与vi相邻的 所有未标号点vj标号: (1)如果在前向弧(vi,vj)上,有fij<cij,则给vj标号
(vi,l(vj))。其中l(vj)=min{l(vi),cij-fij},此时新 标号点vj成为未检查的标号点。 (2)如果在后向弧(vj,vi)上,有fji>0,则给vj标号 (-vi,l(vj))。其中l(vj)=min{l(vi),fji},此时新标 号点vj成为未检查的标号点。 至此,点vi成为已检查过的标号点。重复标号过程,一旦 vt被标号,即得到一条从vs到vt的增广链µ,转入调整过程。
链的方向:若µ是联结vs和vt的一条链,定义链的
方向是从vs到vt。 v2
5.2
v4
10.5
3.2
11.6
v1
4.1 5.1
8.3
v3
6.3
3.3
v6
17.2
v5
前向弧:与链的方向一致的弧。前向弧全体记为µ+。
后向弧:与链的方向相反的弧。后向弧全体记为µ-。
v2
10.5
v1 4.1
8.3
v3
5.2
Cs1=5, fs1<Cs1, 给v1标号(s, l(v1)), 其中
l(v1) min l(vs ), (Cs1 fs1) min ,5 1 4
(-1,1)v2
(3,3)
(4,3) (1,1)
v4
(5,3)
(0,∞)vs
(1,1)
(5,1)
(s,v14) (2,2)
(3,0) vt
(2,1)
量),记为C (V1,V1), 即
C(V1 , V1 )
Cij
(v i , v j )(V1 , V 1 )
v2
5.2
v4
10.5
3.2
11.6
v1
4.1 5.1
8.3
3.3
v6
17.2
v3
6.3
v5
C (V1,V1)=5+3+5+6=19
v2
5.2
v4
10.5
3.2
11.6
v1
4.1 5.1
弧旁数字:流量
v1
4.1
8.3
v3
5.2
3.2 5.1
6.3
v4
11.6
3.3
v6
17.2
v5
可行流总是存在的,例如所有弧的流量fij=0—零流。 所谓最大流问题就是寻找流量最大的可行流。
3、增广链
对可行流f={fij}的弧有
饱和弧:fij=Cij
非饱和弧:0<fij<Cij
零流弧:fij=0
非零流弧:0<fij≤ Cij
v3
(-2,1)
在µ上进行流量=1的调整,
v2
(4,3)
f ij
(vi , vj)u
(3,3)
(1,0)
f
' ij
f ij
f
ij
(vi , vj)u (vi , vj)u
vs
(1,0)
(5,2)
得可行流f ’如右图所示:
v1
(2,2)
v4
(5,3)
(3,0) vt
(2,2)
v3
去掉各点标号,从vs开始,重新标号。
至此,vt得到标号,转入调整过程。
(二)调整过程: 从vt开始逆向追踪,找到增广链。
(-1,1)
v2
(4,3)
v(4 2,1)
(3,3)
(1,1)
(5,3)
(0,∞)vs
µ(vs,v1,v2,v3,vt) (5,1)
(1,1)
(3,0) vt(3,1)
(2,1)
= l(vt)=1,
(s,v14) (2,2)
继续检查v2,在v2的前向弧(v2,v4)上,f24<C24, 给
v4标号 (2, l(v4)), 这里 l(v4 ) minl(v2 ), C24 f24 min1,1 1,
此时,未检查的标号点为v3和v4,在v3和v4中可任 选一点进行检查,不妨检查v3。
(-1,1)
v2
(4,3)
(3,3)
(4,3)
(3,3)
(1,0)
(0,∞) vs
(1,0)
(5,2)
(sv,1 3) (2,2)
v4
(5,3)
(3,0) vt
(2,2)
v3
标号点集V1=(vs,v1)
未标号点集V1=(v2,v3,v4,vt)
截集:(V1,V1)={(vs,v2),(v1,v3)} 最大流量 V(f ’)=最小截量C(V1,V1)=5
第十章 图与网络优化
主要内容: 图论的基本概念 最小支撑树问题 最短路问题 最大流问题 最小费用最大流问题
第四节 网络最大流问题
一、基本概念与定理
1、容量网络与流 定义 给定一个有向图D=(V,A),在V中指定一个
发点vs,和一个收点vt,其余点称中间点。对任
意弧(vi,vj)∈A,有权Cij≥0,称为弧的容量。称
用之差 b( f′) - b( f ) =?
b( f ′) -b( f )
bij
(
f
' ij
fij )
bij
(
f
' ij
பைடு நூலகம்
fij )
bij bij
-1
+1
为增广链 µ的费用。
例: vs
v5
3
5 v2 4
7 1 v4
v1
v3
6
.vt
增广链 µ的费用=(3+4+1+6)-(5+7)=2
f ij
f
ij
(vi , vj)u (vi , vj)u (vi , vj)u
二、寻求最大流的标号法
从任一个可行流f出发,若网络中没有给定f,则从 零流开始。
(一)标号过程。通过标号来寻找增广链µ。
网络中的点标号点已未检检查查 未标号点
每个标号点vj的标号包含两部分(vi,l(vj)) : 第一个标号vi表示标号点的前一点,以便找出增广链µ; 第二个标号l(vj)是为了确定增广链µ的调整量用的。
如(b)图是网络上的
一个流(运输方案)
v2
5
v1
1
3
弧旁数字:流量
v3
2
2
1
3
(b)
v4
6
3
v6
2
v5
第四节 网络最大流问题
例 连接某产品产地v1和销地v6的交通网如下:
v2
5
v4
10
3
11
v1
4
8
5
3
v6
17
v3
6
v5
(a)
弧(vi,vj):从vi到vj的运输路线,
弧旁数字:这条运输路线的最大通过能力。
v2
(4,3) v4
(3,3)
(1,0)
(5,3)
(0,∞) vs
(1,0)
(5,2)
(3,0) vt
(2,2)
(sv,1 3) (2,2) v3
点v1:标号过程无法进行,所以f ’即为最大流。
vs的净输出量=最大流量V(f ’)=3+2=5=vt的净输入量
与此同时,可找到最小截集(V1,V1)
v2
v3
继续检查vs,在vs的前向弧(vs,v2)上, fs2=Cs2=3, 不满足标号条件。此时,未检查的标号点为v1
(3)检查v1,在v1的后向弧(v2,v1)上,f21>0, 给v2标
号(-1, l(v2)), 这里 l(v2 ) min l(v1), f 21 min 4,1 1,
继续检查v1,在v1的前向弧(v1,v3)上,f13=C13=2,
D为一个容量网络。记为:D=(V,A,C)。
如(a)图是一个容量网络 v2
10
5
3
v4
11
v1
4
弧旁数字:容量
8
5
3
v6
17
v3
6
v5
(a)
网络D中的任一条弧(vi,vj)的流量记为f(vi,vj),(简 记fij),显然, fij≤Cij;一系列流量的集合 f={f(vi,vj)}构成网络D上的流(运输方案)。
(1,1)
v(4 2,1)
(5,3)
(0,∞)vs
(1,1)
(5,1)
(s,v14) (2,2)
(3,0) vt (3,1)
(2,1)
v(3 -2,1)
(5)检查v3,在v3的前向弧(v3,vt)上,f3t=1, C3t=2,f3t<C3t, 给vt标号 (3, l(vt)), 这里
l(vt ) min l(v3), (C3t f3t ) min 1,1 1,
目标:制定一个运输方案,使从v1到v6的产品运量最大。
2、可行流与最大流 满足下述条件的流 f 称为可行流:
1)容量限制条件: 对每一弧(vi,vj)∈A
0≤fij≤Cij 2)平衡条件: 对中间点vj(j≠s,t),有
fij
f jk 0
(v i , v j )A (v j , v k )A
由定理2可得到寻找最大流的方法: 1 、从一个可行流f开始,寻找关于f的增广链;
2、如果不存在关于f的增广链,可行流f就是最大流f*;
3、如果存在关于f的增广链,则以适当的调整量对
可行流f进行调整,得到一个流量更大的可行流,不断
重复调整过程,直到不再存在增广链时,就得到了最大流。
f ij
f
' ij
V1
V1
v2
10.5
v1
4.1
8.3
v3
5.2
3.2 5.1
6.3
v4
11.6
3.3
v6
17.2
v5
V1 =(v1,v2,v3)
V1=(v4,v5,v6)
截集为红色弧集;
由图可见,截集不是唯一的。
每个截集相当于从发点vs到收点vt的必经之路,去掉截 集所有的弧,就不存在从发点vs到收点vt的路。
定义5 给定截集(V1,V1),把截集(V1,V1)中所 有弧的容量之和称为这个截集的容量(简称为截
第五节 最小费用最大流问题
网络D=(V,A,C),每一弧(vi,vj)∈A,给出 (vi,vj)上单位流量的费用b(vi,vj)≥0,(简记bij)。
最小费用最大流问题:
求一个最大流 f,且使流的总费用
b( f )
bij fij
取最小值。
(vi ,v j )A
一、求解原理
设对可行流 f 存在增广链 µ,当沿 µ以=1调整f, 得新的可行流 f ' 时,(显然 V(f ')=V(f )+1),两流的费
(2)调整流量
令调整量= l(vt),沿增广链µ构造新的可行流f ’,
f ij
f
' ij
f ij
f
ij
(vi , vj)u (vi , vj)u (vi , vj)u
去掉所有的标号,对新的可行流f '={f 'ij},重新进行 标号。
重复标号过程和调整过程,直到标号过程进行不下去 且vt未获得标号为止,说明当前可行流不存在增广链,即 得到了最大的可行流。