有上下界限制的网络流

Posted HWIM

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有上下界限制的网络流相关的知识,希望对你有一定的参考价值。

有上下界限制的网络流

 

模型


给定一个网络,一个加权的有向图G,其中的每条边都有一个容量上界C。其中的两点:S只有出度没有入度,T只有入度没有出度。求S到T最大可以流过的流量,这是最大流的模型。
且满足以下条件:

  • 容量限制:每条边的流量$0\leq f\leq C$ 
  • 流量平衡:任意一个点i,$\sum\limits_{(u,i)\in E}f(u,i) = \sum\limits_{(i,v)\in E}f(i,v)$

那么f是G的一个可行流。最大流即满足容量限制和流量平衡的最大的流。

如果在网络中,每条边增加一个流量下界B,这就是有上下界限制的网络流的模型了。
那么有上下界限制的网络流也是满足两个条件:

* 容量限制:每条边的流量$B\leq f\leq C$
* 流量平衡:任意一个点i,$\sum\limits_{(u,i)\in E}f(u,i) = \sum\limits_{(i,v)\in E}f(i,v)$

有上下界限制的网络流一般分为三类:

* 无源汇有上下界可行流
* 有源汇有上下界最大流
* 有源汇有上下界最小流

下面分别阐述其求法

 

预备知识

B(u,v): u->v的流量下界
C(u,v): u->v的流量上界
f(u,v): u->v的流量

 

无源汇上下界可行流

顾名思义,无源汇上下界可行流:没有源点S,汇点T。在网络中求可行流或者指出不存在。

对于这个问题,不好处理,但是如果我们去掉流量下界限制B,那么就是最大流的模型了,问题就可以解决了。

 

直接去掉B是不对的。我们规定初始流:每条边先流过B的流量。但是初始流可能会不满足流量平衡。即可能存在:

$\sum\limits_{(u,i)\in E}B(u,i) \neq \sum\limits_{(i,v)\in E}B(i,v)$

那么我们加上一个$g$(附加流)是其满足流量平衡。

$\sum\limits_{(u,i)\in E}B(u,i)+g(u,i) = \sum\limits_{(i,v)\in E}B(i,v)+g(i,v)-----(1)$

$B + g$ 也就是实际的流量$f$。

此时我们去掉了流量下界限制B,那么网络中每条边的容量上界限也要减去,即新网络图中每条边的流量上界限制为$C‘ = C - B $,下界限制0。

 

用最大流求解:

将(1)式移项:

$\sum\limits_{(u,i)\in E}B(u,i)-\sum\limits_{(i,v) \in E}B(i,v) = \sum\limits_{(i,v)\in E}g(i,v) - \sum\limits_{(u,i)\in E}g(u,i)$

 

 

 

 

$M(i) = \sum\limits_{(u,i)\in E}B(u,i)-\sum\limits_{(i,v) \in E}B(i,v)$

 

 

原式:

$M(i) = \sum\limits_{(i,v)\in E}g(i,v) - \sum\limits_{(u,i)\in E}g(u,i)$

M(i)是已知的,i点的流入的下界之和减流出的下界之和。

 

1、如果$M(i) \geq 0$

$\sum\limits_{(i,v)\in E}g(i,v) = \sum\limits_{(u,i)\in E}g(u,i)+ M(i)$

那么我们发现附加流中流出的需要比流入的多M(i)才可以达到流量平衡,那么这些流从哪来呢。建一个源点SS,建一条从SS到i的边,容量为$M(i)$。

2、如果$M(i) \leq 0$

$\sum\limits_{(i,v)\in E}g(i,v) - M(i) = \sum\limits_{(u,i)\in E}g(u,i)$

同理,发现附加流中流入的需要比流出的多M(i)才可以达到流量平衡。建一汇点TT,建一条从i到TT点边,容量$-M(i)$,容量也就变成正的了。

建图完毕。从SS到TT跑一遍最大流即可。原图中存在解的条件是:每条从SS连出的边与连向TT的边都需要满流。

 

 

问题:

1、为什么从SS连出的边与连向TT的边满流后才存在解,不满流就不存在解?
设从SS连出的边其中一条指向a,容量M。思考连这条边是因为a的B中流出的大于流入的。如果这条边未满流(假设流量是M‘),那么:B1(流入的) + M‘ < B2(流出的)。a点不满足流量平衡,不存在解。
更直观的放在网络上解释:a点要满足所有的边的流量$c \leq f \leq c$,那么出边当然不能例外,那么出边的流量和最少是B2。而流入的流量和,最小是B1,由于B1比B2小,所以要加一些附加流M‘,但是即使B1+M‘也小于B2,所以这个点流入的流量是不等于流出的。所以无解。
相反,如果满流,那么说明这个点已经流量平衡了,有满足了容量限制,那么也就有解了。
对于连向TT的边,同理。

2、还有一个小问题,会不会S到a的边未满流,但是另一指向a的边使a流量平衡了。
但是仔细想一下,这是不可能存在的。最大流从S开始跑,整个图中的流量都是从S出发的,而对于S出发的指向a的一条边,它刚好使得a点流量平衡,哪会有多余的流量流给其他点呢?

无源汇上下界网络流到此求解完成。

未完~

以上是关于有上下界限制的网络流的主要内容,如果未能解决你的问题,请参考以下文章

[loj#115] 无源汇有上下界可行流 网络流

有上下界的网络流3-有源汇带上下界最小流SGU176

有上下界的网络流2-有源汇带上下界网络流ZOJ3229

网络流

网络流问题

poj 2396 Budget 边容量有上下界的最大流