1 基本概念和术语

1 网络

G 是一个简单有向图, G=(V,E)V={12n} 。在 V 中指定一个顶点 s ,称为 和另一个顶点 t ,称为 。有向图 G 的每一条边 (v,w)E ,对应有一个值 cap(v,w)≥0 ,称为边的容量 。这样的有向图 G 称作一个网络

2 网络流

网络上的 是定义在网络的边集合 E 上的一个非负函数 flow={flow(v,w)} ,并称 flow(v,w) 为边 (v,w) 上的流量

3 可行流

满足下述条件的流 flow 称为可行流
容量约束 : 对每一条边 (v,w)E0≤flow(v,w)≤cap(v,w)
平衡约束 :
对于中间顶点:流出量 = 流入量。
即对每个 vV(v≠s,t) 有:顶点 v 的流出量-顶点 v 的流入量 =0 ,即最大网络流_有向图

 

对于源 ss 的流出量- s 的流入量 = 源的净输出量 f ,即最大网络流_网络_02

对于汇 tt 的流入量- t 的流出量的 = 汇的净输入量 f ,即最大网络流_工具_03

式中 f 称为这个可行流的流量,即源的净输出量 ( 或汇的净输入量 ) 。可行流总是存在的。
例如,让所有边的流量 flow(v,w)=0 ,就得到一个其流量 f=0 的可行流 ( 称为 0)

4 边流

对于网络 G 的一个给定的可行流 flow ,将网络中满足 flow(v,w)=cap(v,w) 的边称为饱和边flow(v,w)<cap(v,w) 的边称为非饱和边flow(v,w)=0 的边称为零流边flow(v,w)>0 的边称为非零流边 。当边 (v,w) 既不是一条零流边也不是一条饱和边时,称为弱流边

5 最大流

最大流问题即求网络G 的一个可行流 flow ,使其流量 f 达到最大。即 flow 满足:0≤flow(v,w)≤cap(v,w)(v,w)E;且

 最大网络流_工具_04

6 流的费用

实际应用中,与网络流有关的问题,不仅涉及流量,而且还有费用的因素。此时网络的每一条边(v,w) 除了给定容量 cap(v,w) 外,还定义了一个单位流量费用 cost(v,w) 。对于网络中一个给定的流 flow,其费用定义为:

最大网络流_网络_05

 

7 残流网络

对于给定的一个流网络 G 及其上的一个流 flow ,网络 G 关于流 flow 的残流网络 G*G 有相同的顶点集 V ,而网络 G 中的每一条边对应于 G* 中的 1 条边或 2 条边。
(v,w)G 的一条边。
flow(v,w)>0 时,( w,v )是 G* 中的一条边,该边的容量为 cap*(w,v)=flow(v,w)
flow(v,w)<cap(v,w) 时, (v,w)G* 中的一条边,该边的容量为cap*(v,w)=cap(v,w)-flow(v,w)
按照残流网络的定义,当原网络 G 中的边 (v,w) 是一条零流边时,残流网络 G* 中有唯一的一条边 (v,w) 与之对应,且该边的容量为 cap(v,w)
当原网络 G 中的边 (v,w) 是一条饱和边时,残流网络 G* 中有唯一的一条边 (w,v) 与之对应,且该边的容量为 cap(v,w)
当原网络 G 中的边 (v,w) 是一条弱流边时,残流网络 G* 中有 2 条边 (v,w)(w,v) 与之对应,这 2 条边的容量分别为 cap(v,w) -flow(v,w)flow(v,w)
残流网络是设计与网络流有关算法的重要工具。

增广路算法

 1 算法基本思想
设P是网络G中联结源s和汇t的一条路。定义路的方向是从s到t。将路P上的边分成2类:一类边的方向与路的方向一致,称为向前边 。向前边的全体记为P+。另一类边的方向与路的方向相反,称为向后边 。向后边的全体记为P-。
设flow是一个可行流,P是从s到t的一条路,若P满足下列条件:
(1)在P的所有向前边(v,w)上,flow(v,w)<cap(v,w),即P+中的每一条边都是非饱和边;
(2)在P的所有向后边(v,w)上,flow(v,w)>0,即P-中的每一条边都是非零流边。
则称P为关于可行流flow的一条可增广路 。
可增广路是残流网络中一条容量大于0的路。
将具有上述特征的路P称为可增广路是因为可以通过修正路P上所有边流量flow(v,w)将当前可行流改进成一个流值更大的可行流。
增流的具体做法是:
(1)不属于可增广路P的边(v,w)上的流量保持不变;
(2)可增广路P上的所有边(v,w)上的流量按下述规则变化:
· 在向前边(v,w)上,flow(v,w)+d;
· 在向后边(v,w)上,flow(v,w)-d。
按下面的公式修改当前的流。

最大网络流_网络流_06


其中d称为可增广量,可按下述原则确定:d取得尽量大,又要使变化后的流仍为可行流。按照这个原则,d既不能超过每条向前边(v,w)的cap(v,w)-flow(v,w),也不能超过每条向后边(v,w)的flow(v,w)。因此d应该等于向前边上的cap(v,w)-flow(v,w)与向后边上的flow(v,w)的最小值。也就是残流网络中P的最大容量。
增广路定理 :设flow是网络G的一个可行流,如果不存在从s到t关于flow的可增广路P,则flow是G的一个最大流。