有上下界限制的网络流
模型
给定一个网络,一个加权的有向图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点流量平衡,哪会有多余的流量流给其他点呢?
无源汇上下界网络流到此求解完成。
未完~