- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
于是 vi 成为标号且已检查过的点.重复上述步骤,一旦 v t
被标上号,表明得到一条从 vs 到 v t 的增广链 ,转入调整过程.
若所有标号都已经检查过,而标号过程进行不下去时,则 算法结束,此时的可行流就是最大流.
10
2 、调整过程 (1)寻找以v t 为终点的增广链----(反向追踪法): 若vt的第一个标号为vk (或 vk ),则弧(vk , vt )(相应地(vt , vk ))是
定理2 任一个网络 D (V , A,C) 中,从 vs 到 vt 的最大流的流 量等于分离 vs , vt 的最小截集的容量.
Back 9
求最大流的标号法(Ford,Fulkerson) 1 、标号过程 开始:先给 vs 标上 (0,), 此时 vs 是标号而未检查的点,
其余都是未标号点.一般地,取一个标号而未检查的点 vi ,对 一切未标号点 v j :
在V 中指定了两点 vs , vt ,分别称为发点和收点,其余 的点叫中间点.定义弧集合 A上的一个函数
f : (vi , v j ) { f (vi , v j )},
为网络的一个流,并称 f (vi , v j ) 为弧
简记为
f ij .
(vi , v j ) 上的流量,
4
二、可行流与最大流
最小费用最大流问题
最大流问题 最小费用最大流问题
1
最大流问题 引例 基本概念
最大流算法 算例
Back 2
continued
引 例 假设某个公路网的每条公路只允许单向行驶,这样 的公路网称为单行公路网.为了保证畅通,交通部门对每条 公路在单位时间内通过的车辆数目要作一个限制.问单位时 间内最多能有多少辆车从甲地出发经过该公路网到达乙地?
2 、若 是网络中联结发点 vs 和收点 vt 的一条链,定义链的
方向是从 vs 到 vt ,则链上的弧被分为两类:一类是弧的方向 与链的方向一致,称为前向弧,前向弧的全体记为 , 另一类
弧与链的方向相反,称为后向弧,后向弧的全体记为 .
3 、设f是一个可行流, 是从到的一条链,称为一条增广链,如
f js v( f );
(vs ,v j )A
(v j ,vs )A
对于收点 vt ,记
ftj
f jt v( f ).
(vt ,v j )A
(v j ,vt )A
式中 v( f ) 称为这个可行流的流量,即发点的净输出量(或收点的
净输入量)
5
最大流问题:
maxv( f ) f
0 fij cij , (vi , v j ) A
(1)若在弧 (vi , v j )上 , fij cij , 则给 v j 标号 (vi , l(v j )) ,这 里 l(v j ) min[ l(vi ), cij fij ] .此时,点 v j成为标号而未检查的点.
(2)若在弧 (v j , vi )上 , fij 0, 则给 v j标号 (vi , l(v j )) 这 里 l(v j ) min[ l(vi ), f ji ] .此时,点 v j成为标号而未检查的点.
果
((vvii
, ,
v v
j j
) )
0 0
fij fij
cij ,即正向弧集中每一条弧是非饱和弧; cij ,即反向弧集中每一条弧是非零流弧.
7
四、截集
1 、设 S,T V , S T , 把始点在 S ,终点在 T 中的所 有弧构成的集合,记为 (S,T ).
2 、给定网络 D (V , A,C)若点集 V 被剖分为两个非空集合
c12 10, c24 3, c13 8, c34 5 容量
f12 5, f 24 2, f13 3, f34 1 流量
(v5 , v4 )是饱和弧
f 54
c54
在链 (v1, v2 , v3 , v4 , v5 , v6 )中
前向弧集合
{(v1, v2 ),(v2 , v3 ),(v3 , v4 ),(v5 , v6 )} (10,5)
后向弧集合 {(v5 , v4 )}
v1
是一条增广链
(8,3)
网络与流 增广链
v2 (5,2) (3,2)
(4,1) (5,1) (6,3)
v3
v5 (11,6) v6
(3,3) (17,2)
v4
Back 3
continued
一、网络与流
一个有向图 D (V , A,C) 称为一个网络.其中,V 为图的所 有顶点集;A 为弧集;C 为各弧上容量集{cij c(vi , v j )}.
若(vi 若(vi
, ,
v v
j j
) )Βιβλιοθήκη ,fij ,若(vi , v j ) .
去掉所有的标号,对新的可行流 f ' { fij '}, 重新进入标号过程.
链上的弧。 接下来检查vk的第一个标号, 若为vi (或 vi ), 则找 出(vi , vk )(相应地(vk , vi ))。 再检查的第一个标号, 依此下去, 直到 vs为止(2。)调此整时量被找 的l(v弧t ),就即构vt的成第了二增个广标链号。。
(3)流的调整
令
fij fij
, ,
s.t. v( f ),(i s)
fij
f ji
0, (i s,t)
(vi ,v j )A
(v j ,vi )A
v( f ),(i t)
6
三、增广链 1 、给定一个可行流
称
f
ij
fij cij的弧为饱和弧; fij cij的弧为非饱和弧; fij
0的弧为零流弧; 0的弧为非零流弧.
一个流称为一个可行流,如果满足以下条件:
(1) 容量限制条件:对 aij (vi , v j ) A 0 fij cij ;
(2) 平衡条件:
对中间点:流出量=流入量,即
i(i s,t)
fij
f ji 0;
(vi ,v j )A (v j ,vi )A
对于发点 vs ,记
f sj
__
__
__
V1, V1 使vs V1, vt V1, 则弧集 (V1,V1 ) 称为分离 vs 和 vt 的
截集.
__
3
、截集 __
(V1,V1 ) 中所有弧的容量之和称为此截集的容量,记
为 c(V1,V1 ), 即
__
c(V1,V1 )
cij
_
(vi ,v j )(V1 ,V1 )
8
定理 1 可行流f是最大流 不存在关于f的增广链.