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

上下界网络流

时间:2018-02-24 23:08:23      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:blog   平衡   没有   div   网络图   最大的   line   下界   最大   

上下界网络流


模型

给定一个网络,一个加权的有向图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的边都需要满流。

问题:为什么从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的边,同理。

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

未完~

上下界网络流

标签:blog   平衡   没有   div   网络图   最大的   line   下界   最大   

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

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