当前位置:文档之家› 运筹学-图论4

运筹学-图论4

fs1<Cs1, 给v1标号(s, l(v1)), 其中
l(v1) min l(vs ), (Cs1 fs1) min ,5 1 4
在弧(vs,v2)上, fs2=Cs2=3, 不满足标号条件。
v2
(4,3) v4
(3,3)
(1,1)
(5,3)
(0,∞)vs
(1,1)
(5,1)
(3,0) vt
vi fij>0
vj (-i , l(vj))
l(vj)=min[l(vi),fji]
vj成为标号而未检查的点
重复上述步骤,一旦vt被标号,则得到一条vs到vt的 增广链。若所有标号都已检查过,而vt尚未标号,结束, 这时可行流,即最大流。
(二)调整过程 从vt开始,反向追踪,找出增广链µ,并在
µ上进行流量调整。 (1)找增广链
在弧(v2,v4)上,f24=3,C24=4,f24<C24, 给v4标号(2, l(v4)), 其中
l(v4 ) min l(v2 ), (C24 f24 ) min 1,1 1,
(-1,1)
v2
(4,3)
(2,1)
v4
(3,3)
(1,1)
(5,3)
(0,∞)vs
(1,1)
(5,1)
(s,v14) (2,2)
后向弧:弧的方向与链的方向相反,后向弧全体记为µ-。
v2
10.5
v1 4.1
8.3
v3
5.2
3.2 5.1
6.3
v4
11.6
3.3
v5
v6
17.2
后向弧
µ=(v1,v2,v3,v4,v5,v6)
µ+={(v1,v2) ,(v2,v3), (v3 , v4),(v5,v6)} µ- ={(v5,v4)}
(2,1)
(s,v14) (2,2) v3
(3)检查v1,在弧(v2,v1)上,f21>0, 给v2标号
(-1, l(v2)), 这里 l(v2 ) min l(v1), f 21 min 4,1 1,
在弧(v1,v3)上,f13=2, C13=2,不满足标号条件。
(-1,1)
v2
(4,3)
(3,3)
定义3 设f是一个可行流, µ是从vs到vt的一条链,若µ满 足下列条件,称之为(关于可行流f的)一条增广 链。
(vi,vj) ∈ µ+ (vi,vj) ∈ µ-
0≤fij<Cij 0 < fij ≤ Cij
前向弧是 非饱和弧, 后向弧 是非零流弧,
8.4 V1
5.0
3.3
V2
V3
5.4
V4
Cij.fij
(1,1)
(0,∞)vs
(1,1)
(5,1)
(s,v14) (2,2)
v4
(5,3)
(3,0) vt
(2,1)
v3
(4)检查v2,在弧(v3,v2)上,f32=1>0, 给v3标号
(-2, l(v3)), 这里 l(v3) min l(v2 ), f32 min 1,1 1,
(-1,1)
v2
(4,3)
流: 定义在弧集A上的一个函数f={f(vi,vj)},并称 f(vi,vj)为弧(vi,vj)上的流量.(简记fij)
如(a)图是一个网络
v2
10
v1
4
弧旁数字:容量
8
v3
如(b)图是网络上的一个流v2
5
弧旁数字:流量 v1
1
3
v3
5
3
5 6
(a)
2
2
1
3
(b)
v4
11
3
v6
17
v5
v4
6
3
v6
2
v5
v2
10.5
vs 2.2
5.5
v1
4.3 v4
8.6 1.0
3.3
v5
5.4
8.7
v3
Cij.fij
Vi
Vj
2、可行流与最大流
定义2 满足下述条件的流f称为可行流: 1)容量限制条件: 对每一弧(vi,vj)∈A
0≤fij≤Cij 2)平衡条件: 对中间点vi(i≠s,t),有
fij
记V1*=V\ V1*,得截集( V1*, V1*),显然有
f
* ij
C ij
0
(v i
,
v
j
)
(V1* ,
*
V1
)
(v i
,
v
j
)
*
(V1
,
V 1*
)
所以V(f*) = C( V1*, V1*)。于是f*必是最大流
定理2 最大流最小截定理。任一个网络D中,从vs到 vt的最大流的流量等于分离vs,vt的最小截集 的容量。
(3,0) vt
(2,1)
v3
解:(一)标号过程
(1)给vs标上(0,∞);
例 用标号法求下图网络的最大流。弧旁的数字是(Cij,fij)。
v2
(4,3)
(3,3)
(1,1)
(0,∞)vs
(1,1)
(5,1)
v1
(2,2)
v4
(5,3)
(3,0) vt
(2,1)
v3
解:(一)标号过程
(1)给vs标上(0,∞); (2)检查vs,在弧(vs,v1)上,fs1=1,Cs1=5,
(1,1)
vs
(1,1)
(5,1)
v1
(2,2)
v4
(5,3)
(3,0) vt
(2,1)
v3
解:(一)标号过程
(1)给vs标上(0,∞);
例 用标号法求下图网络的最大流。弧旁的数字是(Cij,fij)。
v2
(4,3)
(3,3)
(1,1)
v (0,) s
(1,1)
(5,1)
v1
(2,2)
v4
(5,3)
v2
(4,3)
(2,1)
v4
(3,3)
(1,1)
(5,3)
(0,∞)vs
(1,1)
(5,1)
(s,v14) (2,2)
(3,0) vt
(2,1)
v(3 -2,1)
(4)检查v2,在弧(v3,v2)上,f32=1>0, 给v3标号
(-2, l(v3)), 这里 l(v3) min l(v2 ), f32 min 1,1 1,
不难验证,
f ** ij
是一个可行流,且
V(f **) V(f *) V(f *)
这与f*是最大流的假设矛盾。 设D中不存在关于f *的增广链,证明f *是最大流。
定义V1 * ,令vs∈V1*,若vi∈V1*,且弧(vi,vj)上, fij*<Cij,则令vj∈ V1*,若vi∈V1*,且弧(vj,vi)上, fji*>0,则令vj∈ V1*。 因为不存在关于f*的增广链,故vt ∈V1*,
(-1,1)
v2
(4,3)
v(4 2,1)
(3,3)
(1,1)
(5,3)
(0,∞)vs
(1,1)
(5,1)
µ(vs,v1,v2,v3,vt) =1,
(s,v14)
在µ上进行流量
v2
(3,3)
(2,2) (4,3) (1,0)
(3,0) vt(3,1)
(2,1)
v3
(-2,1)
v4
(5,3)
=1的调整,得 可行流f ’如右
弧旁数字:运输数量。
问题:这个运输网络中,从v1到v6的最大输送量是多少?
一、基本概念与定理
1、网络与流
定义1 给定一个有向图D=(V,A),在V中指定 一点vs称为发点,指定另一点vt称为收点, 其余点称中间点。任意弧(vi,vj)∈A,有 Cij≥0,称为弧的容量。称D为一个容量网 络。记为D=(V,A,C)。
vs
(1,0)
(5,2)
(3,0) vt
(2,2)
图所示:
v1
(2,2) v3
去掉各点标号,从vs开始,重新标号。
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 ’即为最大流。
量),记为C (V1,V1), 即
C(V1, V1)
Cij
(vi ,v j )(V1 ,V1 )
不难证明:任何一个可行流的流量V(f)都不会
超过任一截集的容量。即 V(f) C(V1, V1)
可行流f*,截集(V1*,V1*), 若V(f*)=C( V1*,V1*), 则f*必是最大流, (V1*,V1*) 必是D的最小截集。
v4
(3,3)
((5,1)
(3,0) vt
(2,1)
(s,v14)
(2,2)
v3
(-2,1)
(4)检查v2,在弧(v3,v2)上,f32=1>0, 给v3标号
(-2, l(v3)), 这里 l(v3) min l(v2 ), f32 min 1,1 1,
(-1,1)
3、增广链
对可行流f={fij}:
非饱和弧:fij<Cij 非零流弧:fij>0
饱和弧:fij=Cij 零流弧:fij=0
链的方向:若µ是联结vs和vt的一条链,定义链的
方向是从vs到vt。 v2
相关主题