网络流基本概念

引语

  网络流是图论中一个博大精深的分支。其最主要的难点在于各种模型的建立,我们需要熟练掌握其中的算法模板并且充分理解其原理,积累建图经验,才能在遇到网络流的题目时从容应对。

  本篇blog主要介绍网络流的基本概念,弄清楚这些概念、定理及理解其证明,对于后面的学习会颇有助益。

基本概念

流网络

  一个流网络G=(V,E)是一张有向图,图中每条有向边(x,y)∈E都有一个给定的权值c(x,y),称为边的容量。特殊地,若(x,y)不属于E,则c(x,y)=0。图中还有两个特殊的点s,t∈V(s≠t),称为源点汇点

可行流

  定义网络的流函数f:对于(x,y)∈E,f(x,y)称为边的流量

  对于任意一个可行流,需要满足两个条件:

    ①容量限制:0<=f(x,y)<=c(x,y);

    ②流量守恒:除源点和汇点外,对于图中任意一个点,流入该点的流量之和等于从该点流出的流量之和;形式化地来看,即对于任意x∈V(x≠s,t),∑f(y,x)=∑f(x,y),其中(x,y),(y,x)∈E。

  整个网络的流量值|f|=∑f(s,v)-∑f(v,s),其中(s,v),(v,s)∈E。

最大流

  最大流即最大可行流,指流网络的所有可行流中流量最大者。

残留网络

  对于原网络的任意一个可行流,存在唯一残留网络与之对应。

  我们用Gf表示残留网络,Gf=(V,E'),其中E'包含E中所有边及E中所有边的反向边。

  残留网络中边的容量记为c'(x,y)。若(x,y)∈E,即(x,y)为原网络的边,则c'(x,y)=c(x,y)-f(x,y),其中c(x,y)-f(x,y)被称为边(x,y)的剩余容量;若(x,y)不属于E,且(y,x)∈E,即(x,y)为原网络中某条边的反向边,则c'(x,y)=f(y,x)。

引理

  记f'为残留网络的流。若f为流网络的一个可行流,f'为该可行流对应的残留网络的可行流,则f+f'也是原网络的一个可行流,且|f+f'|=|f|+|f'|。

证明:

  要证f+f'是原网络一个可行流,只需考虑可行流需要满足的两个条件。

  ①容量限制:

    新可行流中的边有两种情况,一种是由原可行流与残留网络中的可行流同向的边累加,一种是原可行流与残留网络中的可行流反向的边相减(前者减后者)。

    (i) (x,y)∈E,f'(x,y)<=c'(x,y)=c(x,y)-f(x,y),∴f'(x,y)+f(x,y)<=c(x,y)。形象来看,残留网络中的属于原网络的边的容量为原边的剩余容量,则即使该边满流,则其剩余容量加上原流量后必然也满足容量限制。

    (ii)(y,x)∈E,0<=f'(x,y)<=c'(x,y)=f(y,x)<=c(y,x),∴0<=f(y,x)-f'(x,y)<=c(y,x)。形象来看,残留网络中的反向边可以看成是原网络中的原边退流,即原网络中的边的流量减去一个值,而这个值是大于0的,所以只要原网络的边满足容量限制,则减去一个大于0的值后必然也满足容量限制。

  ②流量守恒:

    由于f与f'分别满足流量守恒,则f+f'也满足流量守恒。

  而要证|f+f'|=|f|+|f'|,可以这样看,原网络中,从s流出的净流量加上残留网络中从s流出的净流量就等于新的可行流中从s流出的净流量。

证毕!

  推论:若残留网络中存在f'满足|f'|>0,则f必然不是最大流(显然f+f'的流量比f大)。

  而反之,命题“若残留网络中不存在f'满足|f'|>0,则f必然是最大流”不一定成立。

增广路径

  在残留网络中,从s出发,沿容量大于0的边走,能够走到t,则这条路径即为一条增广路径。

定理

  对于一个可行流f,在其残留网络中不存在增广路径,则f为最大流。

  为了证明该定理,我们需要引入割的概念。

  将V划分为S,T满足S∪T=V,S∩T=∮,且s∈S,t∈T,则[S,T]被称为一个割。

割的容量

  c(S,T)=∑∑c(u,v),其中u∈S,v∈T,即所有从S指向T的边的容量之和。

割的流量

  f(S,T)=∑∑f(u,v)-∑∑f(v,u),其中u∈S,v∈T,即从S流向T的流量之和减去从T流向S的流量之和。

性质1

  对于流网络的任意一个割,满足f(S,T)<=c(S,T)。

证明:f(S,T)=∑∑f(u,v)-∑∑f(v,u)<=∑∑f(u,v)<=∑∑c(u,v)=c(S,T)。

性质2

  对于流网络的任意一个割,满足f(S,T)=|f|。

  为了证明之,我们需要先清楚一些性质:

    对于任意的V的子集X,Y,定义f(X,Y)=∑∑f(u,v)-∑∑f(v,u),其中u∈X,v∈Y,设Z也是V的一个子集。

    ①f(X,Y)=f(Y,X)。

    ②f(X,X)=0。

    ③f(Z,X∪Y)=f(Z,X)+f(Z,Y),其中X∩Y=∮。

    ④f(X∪Y,Z)=f(X,Z)+f(Y,Z),其中X∩Y=∮。

性质2的证明:

  ∵S∪T=V,S∩T=∮,∴f(S,V)=f(S,S)+f(S,T)。

  ∴f(S,T)=f(S,V)-f(S,S)=f(S,V)=f({s},V)+f(S-{s},V)=f({s},V)=|f|。

  下证f(S-{s},V)=0:

    设集合S'=S-{s},则S'中既不含源点也不含汇点,故其中的点均满足流量守恒,流量为0。

    f(S',V)=∑∑f(u,v)-∑∑f(v,u)=∑(∑f(u,v)-∑f(v,u))=0,其中u∈S',v∈V。

证毕!

  注:证明参考胡伯涛《最小割模型在信息学竞赛中的应用》。

结论

  综合性质1性质2可得,对于原网络的任意一个可行流f和任意一个割,均满足|f|<=c(S,T)。

最大流最小割定理

  任何一个网络的最大流量等于最小割中边的容量之和,简记为“最大流=最小割”。

  即以下三个条件等价:

  ①可行流f是最大流。

  ②可行流f的残留网络中不存在增广路径。

  ③存在某个割[S,T],|f|=c(S,T)。

 证明:

  要证①<=>②<=>③,只需证①=>②=>③=>①。

  证①=>②:可行流f是最大流,则可行流f的残留网络中不存在增广路。

    反证法:若可行流f的残留网络中存在增广路,则必然可以找到一个可行流f'满足|f'|>0,则|f+f'|=|f|+|f'|>|f|。

  证③=>①:若存在割[S,T],可行流f满足|f|=c(S,T),则f是最大流。

    由结论,对于任意一个可行流和任意一个割均满足|f|<=c(S,T),故最大流<=最小割<=c(S,T),而最大流>=|f|,而|f|=c(S,T)>=最大流,所以|f|=c(S,T)。

    最大流<=最小割,而最小割<=c(S,T)=|f|<=最大流,故最大流=最小割。

  证②=>③:若可行流f的残留网络中不存在增广路,则必然存在某个割[S,T],某个可行流f,满足|f|=c(S,T)。

    构造集合S:在残留网络中,从s出发,沿容量大于0的边走,所有能走到的点的集合。

    由于不存在增广路径,故T=V-S,s∈S,t∈T,且S∪T=V,S∩T=∮。

    故[S,T]是合法的割。

    对于任意的x∈S,y∈T,f(x,y)=c(x,y)。

    反证法:若f(x,y)<c(x,y),则残留网络中c'(x,y)>0,则y必然能够被遍历到,则y∈S,矛盾!

    对于任意的a∈T,b∈S,f(a,b)=0。

    反证法:若f(a,b)>0,则残留网络中c'(b,a)=f(a,b)>0,则a必然会被遍历到,则a∈S,矛盾!

    ∴|f|=f(S,T)=∑∑f(u,v)-∑∑f(v,u)=∑∑c(u,v)=c(S,T),其中u∈S,v∈T。

证毕!

posted @ 2020-08-01 08:37  魑吻丶殇之玖梦  阅读(477)  评论(0编辑  收藏  举报