第四节 最大流问题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
行流量调整。 (1)找增广链
如vt 的第一个标号为k(或-k),则弧(vk,vt) ∈µ(或弧(vt,vk) ∈µ)。检查vk 的第一个标号,若为i
(或-i),则(vi,vk) ∈µ(或(vk,vi) ∈µ)。再检查vi 的第一 个标号,依此下去,直到vs 。被找出的弧构成了增广链 µ。
15
(2)流量调整
(v3,vt): f(' v3,vt)= 3+(l vt)= 3+ 2= 5
后向弧 (v1,v2): f(' v1,v2)= 2-(l vt)= 2- 2= 0
于是调整后流量如下图所示。 25
v1 (5,3)
(3,3)
vs
(6,4)
(2,0) (2,2)
v2
(3,2)
v3
(6,5)
(2,0) vt
第4节 网络最大流问题
例 连接某产品产地vs和销地vt的交通网如下:
v1
4
v3
3
5
vs
1
5
2 1
vt
2
v2
2
v4
弧(vi,vj):从vi到vj的运输线,
弧旁数字:这条运输线的最大通过能力,
制定一个运输方案,使从vs到vt的产品数量最多。 1
v1
4
v3
弧旁数字:
3
vs
1
5
2
1
5
运输能力。
vt
2
v2
2
l( v4 ) minl( v2 ),( c24 f24 ) min1,1 1,
(5)检查v3,在弧(v3,vt)上,f3t=1, c3t=2,
f3t<c3t, 给vt标号 (3, l(vt)), 这里
l( vt ) minl( v3 ),( c3t f3t ) min1,1 1,
vt得到标号,标号过程结束。
饱和弧:fij =cij 零流弧:fij =0
链的方向:若µ是联结vs和vt的一条链,定义链的方向是从vs到 vt 。
v2
(5 ,2)
v4
(10,5)
(3,2)
(11,6)
v1
(4,1)
(8,3)
(5,1)
(3,3)
v6
(17 ,2)
v3
(6,3)
v5
8
v2
(10,5)
v1
(4,1)
(8,3)
(5,2) (3,2) (5,1)
则称(S*,S*)为G上的最小截,C(S*,S*) 为上的最小截量。
11
性质 任何一个可行流的流量V(f)都不会超过任一截集的容
量。即
V ( f ) C(V1,V1)
可行流f*,截集(V1*,V1*), 若V(f*)=C( V1*,V1*),
则f*必是最大流, (V1*,V1*) 必是D的最小截集。
19
(二)调整过程 :从vt 开始逆向追踪,找到增广链。
v (-v1,1)
2
(4,3) v4 (v2,1)
(3,3)
(1,1)
(5,3)
(0,∞) vs
(1,1)
(3,0)
vt (v3,1)
(5,1)
(2,1)
µ(vs,v1,v2,v3,vt) =1,
v (vs,1 4)
(2,2)
在µ上进行流量
v2
令调整量是 l(vt),构造新的可行流 f ′,

f
' ij
f ij f ij
f ij
(vi , v j ) u (vi , v j ) u(vi , v j ) u
去掉所有的标号,对新的可行流 f ′={ fij′},重新进 入标号过程。
16
例 用标号法求下图网络的最大流。弧旁的数字是( cij , fij)。
3
(a)图是一个网络
v2
10
v1
4
弧旁数字: 8
容量
v3
v2
弧旁数字: 5
流量 v1
1
3
5
3
5 6
2
2
1
v3
3
v4
11
3
v6
17
v5
v4
6
3
v6
2
v5
4
vi
cij fij
vj
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)
(vs ,v j )A
(v j ,vs )A
vt :
ftj
f jt V( f )
(vt ,v j )A
(v j ,vt )A
可行流总是 存在的
如所有fij=0, 零流。
V( f ) 称为可行流 f 的流量,即发点的净输出量。 6
(3). 最大流 若 V(f *) 为网络可行流,且满足:
V(f *)=Max{V(f )∣f }为网络D中的任意 一个可行流,则称f *为网络的最大流。
v2
(4,3) v4
(3,3)
(1,1)
(5,3)
(0,∞)vs
(5,1)
(1,1)
(3,0)
vt
(2,1)
(vs,4)v1 (2,2) v3
解:(一)标号过程。
(1)给vs标上(0,∞); (2)检查vs,在弧(vs,v1)上,fs1=1,cs1=5,
fs1<cs1, 给v1标号(s, l(v1)), 其中
v4
问题:这个运输网络中,从vs到vt的最大输送量是多少?
2
7.4.1最大流的基本概念与定理 (1). 网络流
网络流 对于网络G=(V,A,C) ,定义在弧集合A上的 一个函数f = {f(vi ,vj)} 称为网络流, f(vi , vj) (简称fij)为弧 aij ∈A上的流。
容量:在有向图上,每条弧上给出的最大通过能力(最大可 能负载)。cij 流量:网络中加在弧上的负载量(实际负载量)。 fij
(3)检查v1,在弧(v2,v1)上,f21>0, 给v2标号
(-1, l(v2)), l( v2 ) minl( v1 ), f 21 min4,1 1,
Fra Baidu bibliotek
在弧(v1,v3)上,f13=2, c13=2,不满足标号条件。 (4)检查v2,在弧(v3,v2)上,f32=1>0, 给v3标号
(-2, l(v3)), 这里 l(v3) min l(v2 ), f32 min 1,1 1, 18
(4).前向弧与后向弧
设μ=(x,…,u,v,…A)是网络G中的一条初等链并且
定义链的方向是从x到A。若D中有弧(u,v),与μ方向 一致,则称(u,v)为链μ的前向弧,若D中有弧(u,
v),与μ方向相反,则称(v, u),为链μ的后向弧。
7
(5). 增广链
对可行流 f ={ fij }:
非饱和弧:fij < cij 非零流弧:fij >0
l(vj)=min[l (vi), cij-fij], vj 成为标号而未检查的点。
(2)若弧(vj,vi)上,fji>0,则给vj 标号(-i, l (vj)),
vi
l
(vj)=minv[j l
(vi),
fji],
vj (i
成为标号而未检查的点。
, l(vj)) vi
vj (-i , l(vj))
v3 (v1,2)
(3,3) (2,2)
(6,3)
(0, +∞) vs
(2,2) (2,0) vt (v3,2)
(6,2)
(5,2)
v (vs,4) 2
(3,2)
v(4 v2,1)
在增广链上进行了流量调整。
前向弧(vs,v2):f(' vs,v2)= 2+(l vt)= 2+ 2= 4 (v1,v3): f(' v1,v3)= 1+(l vt)= 1+ 2= 3
v5
5
(2). 可行流
可行流 满足下述条件的流 f 称为可行流: 1)容量限制条件: 对每一弧(vi , vj )∈A 0≤fij ≤cij 2)平衡条件: 对中间点vi (i≠s,t ),有
fij
f ji 0
(vi ,v j )A
(v j ,vi )A
vs :
fsj
f js V( f )
按点的第一个标号,以vt点开始,回溯找到一条增广
链, 如下图红线所示:
23
v (-v2,2) 1 (5,1)
v3 (v1,2)
(3,3) (2,2)
(6,3)
(0, +∞) vs
(2,2) (2,0) vt (v3,2)
(6,2)
(5,2)
v (vs,4) 2
(3,2)
v(4 v2,1)
24
v (-v2,2) 1 (5,1)
定理 若f*是网络G=(V,A,C)上的可行流,则 可行流f*为最大的充要条件为μ中不存在关 于f*的增广链。
最大流最小截量定理。任一个网络D中,从vs 到 vt的最 大流的流量等于分离vs,vt的最小截集的容量。
12
7.4.2寻求最大流的标号法(Ford—Fulkerson) 从任一个可行流 f 出发(若网络中没有给定 f ,
,vs成为已标号已检查的点,v2成为已标号未检查的点。
(3)检查v2,给v1标号(-v2,l(v1)) l(v1) min4,2 2
。同理给v4标号为(v2,1),v2成为已标号已检查的 点,v1,v4成为已标号未检查的点。
(4)检查v1,给v3标号为(v1,2),v3成为已标号未检 查的点。
(5)检查v3,给vt标号为( v3 ,2)。 因为vt已被标号,所以说明找到一条增广链。 调整过程
l( v1 ) minl( vs ),( cs1 fs1 ) min ,5 1 4
在弧(vs,v2)上, fs2=cs2=3, 不满足标号条件。17
(-vv21,1) (4,3)
v4
(3,3)
(1,1)
(5,3)
(0,∞) vs
(5,1)
(1,1)
(3,0)
vt
(2,1)
(vvs,1 4) (2,2) (v-v32,1)
µ=
(v1,v2v,v33,v4,v5,v6
(6,3)
)
v4
(11,6)
(3,3)
v6
(17,2)
v5
µ+={(v1,v2) ,(v2,v3), (v3 , v4),(v5,v6)}
µ- ={(v4,v5)}
9
增广 链 设 f 是一个可行流, µ是从vs 到vt 的一条链,若µ满 足下 列条件,称之为关于可行流 f 的一条增广 链。
fij<cij
f ji>0
l(vj)=min[l(vi),cij-fij],
l(vj)=min[l(vi),fji]
14
重复上述步骤,一旦vt被标号,则得到一条vs到vt的 增广链。若所有标号都已检查过,而vt尚未标号,结束, 这时可行流,即最大流。
(二)调整过程 从vt 开始,反向追踪,找出增广链 µ,并在µ上进
v(3 -v2,1) (4,3) v4
(3,3)
(1,0)
(5,3)
=1的调整,得 可行流 f ′ 如右
vs
(5,2)
(1,0)
(3,0)
vt
(2,2)
图所示:
v1 (2,2) v3
20
去掉各点标号,从vs开始,重新标号。
v2
(3,3)
(4,3) (1,0)
v4 (5,3) 点v1:标号过程
(0,∞)vs
则从零流开始),经过标号过程与调整过程。 (一)标号过程
网络中的点标号点已未检检查查 未标号点
13
标号:
开始,vs 标上(0,∞),vs 是标号未检查的点, 其余点都是未标号点,一般地,取一个标号未检查 的点vi ,对一切未标号的点vj 。
(1)若弧(vi,vj)上,fij<cij,则给vj 标号(i,l(vj)),
(5,2)
(1,0)
(3,0)
无法进行,所以
vt
(2,2)
f ′即为最大流。
v(1 vs,(32),2)
v3
V(f ′)=3+2=5
V1=(vs,v1)
V1=(v2,v3,v4, vt)
截集:[V1,V1]=[(vs,v2),(v1,v3)]
V(f ′)=C[V1,V1]=5
问题:(v2,v1)是不是截集[V1,V1]中的弧?
v (-v1,1) 2
(4,3) v4 (v2,1)
(3,3)
(1,1)
(5,3)
(0,∞) vs
(1,1)
(3,0)
vt (v3,1)
(5,1)
(2,1)
v (vs,14) (2,2)
v(3 -v2,1)
在弧(v2,v4)上,f24=3,c24=4,f24<c24, 给v4标号
(2, l(v4)), 其中
则称弧集
(S,S)= a|a=(u,v),u S,v S
为网络G的一个截集,并将截集中所有弧容量之和称为截容量,
即C(S, S)= C(a)为截集 (S,S ) 的截容量(简称为截量)。 a(S, S)
(7)最小截与最小截量
若 (S*,S*)是容量网络中所有截集中截量最小的截集,即
C(S*,S*)= min C(S,S)|(S,S)为网络G的一个截量
(5,2)
v4
21
例 用标号法求下图网络的最大流。弧旁的数字是( cij , fij)。
v1 (5,1)
(3,3)
vs
(2,2) (2,2)
(6,2)
v2
(3,2)
v3
(6,3)
(2,0) vt
(5,2)
v4
22
解: 第一轮
标号过程
(1)vs标(0,+∞),vs为已标号未检查点。
(2)检查vs,给v2标号(vs,l(v2))l(v2 ) min,6 - 2 4
(vi , vj ) ∈ µ+ 0≤ fij <cij 前向弧是 非饱和弧, (vi , vj ) ∈ µ- 0 < fij ≤ cij 后向弧 是非零流弧,
v1
(8,4)
(6,0)
v2
v3
(6,5)
v4 (3,3) v5
(5,4)
v6
10
(6). 截集与截量
对于有向网络G=(V,A,C) ,若S为V的子集,S=V - S ,
相关文档
最新文档