码迷,mamicode.com
首页 > 其他好文 > 详细

有上下界限制的网络流

时间:2018-02-25 15:49:31      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:有向图   its   ros   平衡   其他   16px   没有   最大   思考   

有上下界限制的网络流

 

模型


给定一个网络,一个加权的有向图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点流量平衡,哪会有多余的流量流给其他点呢?

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

未完~

有上下界限制的网络流

标签:有向图   its   ros   平衡   其他   16px   没有   最大   思考   

原文地址:https://www.cnblogs.com/mjtcn/p/8469349.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!