当前位置:文档之家› 最大流与最小费用流

最大流与最小费用流

eN ( v )

f (e)
eN ( v )

f (e), v I ,
其中: N (v) 表示 v 的所有出弧的集, N (v) 表示 v 的所有 入弧的集。则称 f 是网络 N 的一个流, f (e) 是边 e 的流量。 注 1: (1) 容量约束表示通过边的流量不能超过改边的 容量; 守恒条件表示在每个中间点, 流进与流出该点的总流 量相等,即保持中间点的流量平衡。 ( 2) 任一网络至少存在一个流, 如零流 ( f (e) 0, e V ) 。
定理 3
f 是网络 N 的最大流的充要条件是 N 不含 f 增广链。
最大流算法的基本思想(Ford-Fulkerson 算法): 判别网络 N 中当前给定的流 f (初始时,取 f 为零流)是否 存在增广链,若没有,则该流 f 为最大流;否则,求出 f 的改进流
f ' ,把 f ' 看成 f ,再进行判断和计算,直到找到最大流为止。 算法(标号法) : 这种方法分为以下两个过程: A.标号过程:通过标号过程寻找一条可增广轨。 B.增流过程:沿着可增广轨增加网络的流量。
Val f ' Val f
则称 f 为 N 的最大流。 定义 6 若 A V , s A, t A V A , 则称 N 中弧的集合 ( A, A) 是网络 N 的一个割 (cut) , 记作 K , 称 C( A , ) A 的容量。 设 K 是一个割, 若不存在割 K , 使得 C ( K ' ) C ( K ) , 则称 K 是
同理对 s 的邻接点 b 标 (s , 4) 。如图 a
( s ,3) a 3, 0 5, 0
c
3, 0பைடு நூலகம்
s ( s , )
4
5, 0
2, 0
1, 0 5, 0
t
b ( s , 4)
3, 0
d
(a)
(3)对与 a 相邻的点 c,标 (a ,3) ;与 b 相邻的点 d,标 (b ,3) ; 与 c 相邻的点 t,标 (c ,3) ,此时 t 3 ,同时得增广链 sact。如图 b
'
(2) E E {(s, x) | x X } {( y, t ) | y Y } ;
'
(3)c c(e), e E ;c (s, x) , x X ,c ( y, t ) , y Y 。 图 1 所示网络等价于图 2 所示的单源单汇网络。
' ' '
x1
, 2
例:单源单汇网络和多元多汇网络。
a
3, 3 5, 4
c
3, 3
s
4, 4
5,1
2, 0
1,1
5, 4
t
b
3, 3
d
x1
1,1
2, 2
6,1 3, 0
v1
4, 0
1, 0 5, 3
5,1
1, 0 2,1
y1
2, 2
v4
3, 2
3,1
s
4, 4
6, 0
y2
6, 4
x2
v3
y3
定义 2 设 N 为一个网络, f 是 E 上的非负函数,如果: (1)容量限制条件: 0 f (e) c(e) , e E ; (2)流量守恒条件:
标号为 ( x , y ) ,若 f ( y, x) 0 ,则不给 y 标号。 (iii)不断地重复步骤(ii)直到收点 t 被标号,或不再有顶点可以标号 为止。 当 t 被标号时, 表明存在一条从 s 到 t 的可增广轨, 则转向增流过程 (B) 。 如若 t 点不能被标号,且不存在其它可以标号的顶点时,表明不存在从 s 到 t 的可增广轨,算法结束,此时所获得的流就是最大流。
例 1:图 1 表示一个网络及网络流
x1
1,1 2, 2
6,1 3, 0
v1
4, 0
1, 0 5, 3
5,1
1, 0 2,1
y1
2, 2
v4
3, 2
3,1
s
4, 4
6, 0 6, 4
y2
x2
v3
y3
图1
发点集: 收点集:
X {x1 , x2} Y { y2 }
中间点集: I {v1, v2 , v3 , v4 , y1 , y2}
6,1
v1
3, 0
5,1 4, 0
1, 0
y1
2,1
1,1
2, 2
1, 0
2, 2
s
, 4
v4
3, 2
5,3
3,1
s 6, 0
6, 4 4, 4
,0 , 6 t y2 ,0
x2
v3
图2
y3
二、最大流与最小割
最大流问题是一类应用极为广泛的问题, 例如在交通运输网络中 有人流、车流、货物流,供水网络中有水流,金融系统中有现金流, 通讯系统中有信息流,等等。 定义 5 设 N (V , E, c, s, t ) 是一个网络, f 是一个流,若不存在 流 f ' ,使
c(e) f (e) e P 定义 9 设 l ( P) min l (e) ,其中 l (e) , eE ( P ) e P f (e) (1)若 l ( P) 0 ,则称 P 链为 f 饱和链; (2)若 l ( P) 0 ,则称 P 链为 f 非饱和链。 定义 10 设 f 是一个流, P 是从源 s 到汇 t 的一条链,若 P 满足 (1)在弧 e P 上, 0 f (e) c(e) ,即 P 中每条弧都是不饱和弧; (2)在弧 e P 上, 0 f (e) c(e) ,即 P 中每条弧都是非零弧; 则称 P 是关于流 f 的一条增广链。 显然一条 f 增广链就是一个从发点 s 到收点 t 的 f 非饱和链。若在 网络中存在一条 f 增广链,则表明 f 不是最大流。
'
( ,) i j A iS , jS

uij 为割 ( A, A)
N 的最小割。
注 4:割是从 A 到 A 的有向弧组成的
最大流与最小割的关系:
定理 1 设 f 是 N 的流, ( A, A) 是一个割,则: (1) Val f
eN ( A)

f (e)
eN ( A)

( s ,3) a (a ,3) c
5, 0
3, 0
3, 0
5, 0
s ( s , )
4, 0
2, 0
1, 0
t (c ,3)
增广链及最大流算法
定义 7 若 f 是网络 N 的一个流,对 e E , (1)若 f (e) c(e) ,则称 e 为 f 的饱和弧; (2)若 f (e) c(e) ,则称 e 为 f 的不饱和弧; (3)若 f (e) 0 ,则称 e 为 f 的正弧; (4)若 f (e) 0 ,则称 e 为 f 的零弧; 定义 8 若 P 是网络 N 中从源 s 到汇 t 的一条初等链(点、边 不重复的有向路) , 定义链的方向为从 s 到 t, 则链上的弧 (有向边) 分为两类: 正向弧:弧的方向与链的方向一致,正向弧的全体记作 P ; 反向弧:弧的方向与链的方向相反,反向弧的全体记作 P 。
这两个过程的步骤分述如下:
(A)标号过程:
xy , ) 0 (i) 对任意的弧 e ( x, y) E , 置 f(
令 s ;
; 给发点标号为 ( s , ) ,

(ii)若顶点 x 已经标号,则对 x 的所有未标号的邻接顶点 y 按以下规 则标号: ① 若(x , y ) Î E ,且 f ( x, y) c( x, y) 时,令
例2:求图3中网络的最大流。
a
3
5
c
3
s
4
5
2
1
t
5
b
3
图3
d
解: (1)对所有 ( x, y) E ,令 f (x,y) 0 ,如图 a 各边的第二个数。 标 s 为 ( s , ) ,令 s 。
(2)对 s 的邻接点 a 标 (s ,3) 。这里因 s 指向 a,故标 s 的上标为+,又 a min{c(s, a) f (s, a), s} min{3 0, } 3
(B)增流过程 (i)令 u t 。 (ii)若 u 的标号为 (v , t ) ) ,则 f (v, u) f (v, u) t ;若 u 的 标号为 (v , t ) ,则 f (u, v) f (u, v) t 。 (iii)若 u s ,把全部标号去掉,并回到标号过程(A) 。否 则,令 u v ,并回到增流过程(ii) 。 注: (1)标号 ( x , y ) 表示从 x 流入 y 的流可增加 y ; ( x , y ) 表示从 y 流入 x 的流可减少 y ; ( s , ) 表示发点可提供任意多的流 到别的点。 (2)算法终止后,令已标号的点的集合为 A ,则割 ( A, A) 即为 最小割,从而最大流的流量 Val f C( A, A) 。
y min{c( x, y) f ( x, y), x } ,
则给顶点 y 标号为 ( x , y ) ,若 f ( x, y) c( x, y) ,则不给顶点 y 标号。 ② 若(y, x )
y,x) 0 , 且 f( 令y m 则给 y n i{ ( , f) , y }x x , Î E,
定义 4 设 f 是网络 N 的一个流,则 f 的流的价值 Val f 定义为
Val f =
eN ( X )
相关主题