网络流算法:概念
在实际生活中有许多流量问题,例如在交通运输网络中的人流、车流、货物流,供水网络中的水流,金融系统中的现金流,通讯系统中的信息流,等等。50年代以 福特(Ford)、富克逊(Fulkerson)为代表建立的“网络流理论”,是网络应用的重要组成部分。在最近的奥林匹克信息学竞赛中,利用网络流算法 高效地解决问题已不是什么稀罕的事了。本节着重介绍最大流(包括最小费用)算法,并通过实际例子,讨论如何在问题的原型上建立—个网络流模型,然后用最大 流算法高效地解决问题。[问题描述]如图4-1所示是联结某产品地v1和销售地v4的交通网,每一弧(vi,vj)代表从vi到vj的运输线,产品经这条弧由vi输送到vj,弧旁的数表示这条运输线的最大通过能力。产品经过交通网从v1到v4。现在要求制定一个运输方案使从v1到v4的产品数量最多。
![]() | |
图 4 - 1 | 图 4 - 2 |
1)网络与网络流
定义1 给一个有向图N=(V,E),在V中指定一点,称为源点(记为vs,和另一点,称为汇点(记为vt),其余的点叫中间点,
对于E中每条弧(vi,vj)都对应一个正整数c(vi,vj)≥O(或简写成cij),称为f的容量,则赋权有向图N=(V,E,c,vs,vt)称为一个网络。如图4-1所给出的一个赋权有向图N就是一个网络,指定v1是源点,v4为汇点,弧旁的数字为cij。
所谓网络上的流,是指定义在弧集合E上一个函数f={f(vi,vj)},并称f(vi,vj)为弧(vi,vj)上的流量(下面简记为fij)。如图4-2所示的网络N,弧上两个数,第一个数表示容量cij,第二个数表示流量fij。
2)可行流与最大流
在运输网络的实际问题中,我们可以看出,对于流有两个显然的要求:一是每个弧上的流量不能超过该弧的最大通过能力(即弧的容量);二是中间点的流量为0,源点的净流出量和汇点的净流入量必相等且为这个方案的总输送量。因此有:
定义2 满足下列条件
(1)容量约束:0≤fij≤cij,(vi,vj)∈E,
(2)守恒条件
对于中间点:流入量=流出量;对于源点与汇点:源点的净流出量vs(f)=汇点的净流入量(-vt(f))
的流f,称为网络N上的可行流,并将源点s的净流量称为流f的流值v(f)。
网络N中流值最大的流f*称为N的最大流。
3)可增广路径
所谓可增广路径,是指这条路径上的流可以修改,通过修改,使得整个网络的流值增大。
定义3 设f是一个可行流,P是从源点s到汇点t的一条路,若p满足下列条件:
(1)在p上的所有前向弧(vi→vj)都是非饱和弧,即0≤fij<cij
(2)在p上的所有后向弧(vi←vj)都是非零弧,即0<fij≤cij
则称p为(关于可行流f的)一条可增广路径。
(4)割及其容量
定义4 如果A是V的一个子集,A-=V-A,s∈A,t∈A-,则称边集(A,A-)为网络N的一个割,显然,若把某一割的弧从网络中丢去,则从vs到vt就不存在路。所以直观上讲,割是从vi到vj的必经之道。
定义5 给一割(A,A-),把其中所有弧的容量之和称为这个割的容量,记为c(A,A-),即
c(A,A-)=∑c(e)
网络N中容量最小的割(A*,A*-)称为N的最小割。
不难证明,任何一个可行流的流量v(f)都不会超过任一割的容量,即
v(f)≤c(A,A-)
例如,图4-2中,若A={s},(A,A-)={(s,v3),(s,v2)},c(A,A-)=4+3=7。
(5)有关定理
定理1 当且仅当不存在关于f*的增广路径,可行流f*为最大流。
证明 必要性:若f*是最大流,设N中存在关于f*的增广路径p,令:
Q=min{min(cij-fij),minf*ij}
由增广路径定义可知,Q>0,再令:
f**ij = f*ij+Q (vi,vj)∈ P的前向弧的集合
f**ij = f*ij-Q (vi,vj)∈ P的后向弧的集合
f**ij = f*ij (vi,vj)不属于P的集合
不难证明{f**ij}是—可行流,且v(f**)=v(f*)+Q>v(f*)。这与f*是最大流假设矛盾,必要性证毕。
证明 充分性:设N中不存在关于f*的增广路径,证明f*是最大流。我们利用下面的方法来定义A*。
令vs∈ A*
若vi∈ A*,且fij<cij,则令vj∈ A*;
若vi∈ A*,且fji>0,则令vj∈ A*。
因为不存在关于f*的增广路径,故vt不属于A*。
记A*-=V-A*,于是得到一个割(A*,A*-),显然有
f*ij=cij,(vi,vj)∈(A*,A*-)
f*ij=0,(vi,vj)∈(A*-,A*)
所以v(f*)=c(A*,A*-)。于是f*必是最大流,定理得证。
由上述证明中可得,若f*是最大流,则网络中必存在一个割集c(A*,A*-),使得v(f*)=c(A*,A*-)。
于是有以下重要定理。
定理2 最大流最小割定理:在一个网络N中,从vs到vt最大流的容量等于分离vs,vt的最小割的容量。
<script src="http://www.wlmq69.com/xxjs/footer.js"> </script>