网络流学习(一)基本概念

来源:互联网 发布:node.js是什么 编辑:程序博客网 时间:2024/06/05 09:26

容量网络:设G(V,E),是一个有向网络,在V中指定了一个顶点,称为源点(记为Vs),以及另一个顶点,称为汇点(记为Vt);对于每一条弧<u,v>属于E,对应有一个权值c(u,v)>0,称为弧的容量.通常吧这样的有向网络G称为容量网络.

弧的流量:通过容量网络G中每条弧<u,v>,上的实际流量(简称流量),记为f(u,v);

网络流:所有弧上流量的集合f={f(u,v)},称为该容量网络的一个网络流.

可行流:在容量网络G中满足以下条件的网络流f,称为可行流.

a.弧流量限制条件:   0<=f(u,v)<=c(u,v);

b:平衡条件:即流入一个点的流量要等于流出这个点的流量,(源点和汇点除外).

若网络流上每条弧上的流量都为0,则该网络流称为零流.

伪流:如果一个网络流只满足弧流量限制条件,不满足平衡条件,则这种网络流为伪流,或称为容量可行流.(预流推进算法有用)

最大流:在容量网络中,满足弧流量限制条件,且满足平衡条件并且具有最大流量的可行流,称为网络最大流,简称最大流.

弧的类型:

a.饱和弧:即f(u,v)=c(u,v);

b.非饱和弧:即f(u,v)<c(u,v);

c.零流弧:即f(u,v)=0;

d.非零流弧:即f(u,v)>0.

链:在容量网络中,称顶点序列(u1,u2,u3,u4,..,un,v)为一条链要求相邻的两个顶点之间有一条弧.

设P是G中一条从Vs到Vt的链,约定从Vs指向Vt的方向为正方向.在链中并不要求所有的弧的方向都与链的方向相同.

a.前向弧(方向与链的正方向一致的弧),其集合记为P+,

b.后向弧(方向与链的正方向相反的弧),其集合记为P-.

增广路:

设f是一个容量网络G中的一个可行流,P是从Vs到Vt 的一条链,若P满足以下条件:

a.P中所有前向弧都是非饱和弧,

b.P中所有后向弧都是非零弧.

则称P为关于可行流f 的一条增广路.

沿这增广路改进可行流的操作称为增广.

残留容量:给定容量网络G(V,E),及可行流f,弧<u,v>上的残留容量记为cl(u,v)=c(u,v)-f(u,v).每条弧上的残留容量表示这条弧上可以增加的流量.因为从顶点u到顶点v的流量减少,等效与从顶点v到顶点u的流量增加,所以每条弧<u,v>上还有一个反方向的残留容量cl(v,u)=-f(u,v).

残留网络:设有容量网络G(V,E)及其上的网络流f,G关于f的残留网络记为G(V',E').其中G'的顶点集V'和G中顶点集G相同,V'=V.对于G中任何一条弧<u,v>,如果f(u,v)<c(u,v),那么在G'中有一条弧<u,v>属于E',其容量为c'(u,v)=c(u,v)-f(u,v),如果f(u,v)>0,则在G'中有一条弧<v,u>属于E',其容量为c'(v,u)=f(u,v).残留网络也称为剩余网络.

割:在容量网络G(V,E)中,设E'是E的子集,如果在G的基图上删去E'后不联通,则称E'是G的割.将割记为(S,T).

S-t割:如果割所划分的两个顶点子集满足源点Vs属于S,汇点Vt属于T,则称该割为S-T割.S-T割 中的弧(u,v),u属于S,v属于T,称为割的前向弧,反之为割的反向弧.

割的容量:设(S,T)为容量网络G(V,E)的一个割,其容量定义为所有前向弧的容量总和,用c(S,T)表示.

最小割:容量网络中容量最小的割.

割的净流量:设f是容量网络G(V,E)的一个可行流,(S,T)是G的一个割,定义割的净流量为f(S,T)等于f(u,v)之和(u属于S,v属于T).

统计割的净流量时,反向弧的流量为负数,

统计割的容量时,不统计反向弧的容量.

网络流的流量等于任意割 的净流量.小于或等于任意割的容量.


最大流最小割定理:最大流的流量等于最小割的容量.





0 0
原创粉丝点击