其他分享
首页 > 其他分享> > 带上下界的网络流

带上下界的网络流

作者:互联网

带上下界的网络流的学习笔记啦~



注意:代码还在路上。



无源汇上下界可行流 



模型


给定一个网络,求一个流,满足每条边的流量都 \(min⩽flow⩽max\) ,并且每个点都满足 总流入量=总流出量(流量守恒) ,没有源汇。


思路


核心是将一个不满足流量守恒的初始流调整成满足流量守恒的流

初始流,不一定满足流量守恒,每条边的流量都是这条边的流量下界

附加流,不一定满足流量守恒,但是和初始流的叠加流满足流量守恒

新增虚拟源点汇点\(s,t\)

设\(d[i]=\)流入量-流出量

  • \(d[i]>0\) ,\(s\)向\(i\)连流量为\(d[i]\)的边
  • \(d[i]<0\),\(i\)向\(t\)连流量为\(-d[i]\)的边

每条边的流量变为\(up-down\),就是上界减下界

有可行流的必要条件是\(s\)的出边的流量总和等于\(t\)的入边的流量总和

存在可行流的条件\(s\)到\(t\)的最大流\(=\sum_{d[i]>0} d[i]\)

最后,每条边的实际流量就是初始流+附加流

Code


咕咕咕





有源汇上下界可行流 



模型


满足源点流出量\(=\)汇点流入量,其它节点流量守恒,每条边都满足上下界限制


思路


建一条从\(t\)到\(s\)的边上界为\(inf\),下界为\(0\),这样就可以转化成无源汇的模型

然后最后整个网络的流量就是边\(t \rightarrow s\)的流量

Code


咕咕咕





有源汇上下界最大流 



模型


有源汇的可行流的情况下满足总流量最大


思路


最大流\(=\)可行流流量\(+\)新增广的\(s\)到\(t\)的最大流

在求完可行流之后,在对原图的残余网络求一次最大流

因为是在更改附加流,对原来的流量上界不会造成影响

Code


咕咕咕





有源汇上下界最小流 



模型


有源汇的可行流的情况下满足总流量最小


思路


最大流\(=\)可行流流量\(-\)新增广的\(t\)到\(s\)的最小流

相当于是在跑反向边,跑的过程中是不会改变流量守恒的

而且是在更改附加流,对原来的流量下界也不造成影响

Code


咕咕咕





无源汇上下界最小/大费用可行流 



模型


在无源汇上下界可行流的基础上,要求费用最小/大。


思路


每条边的费用是不变的,和虚拟源汇的边费用是\(0\)

把跑最大流改为跑最小/大费用最大流

Code


咕咕咕





无源汇上下界最小/大费用可行流 



模型


在有源汇上下界可行流的基础上,要求费用最小/大。


思路


每条边的费用是不变的,和虚拟源汇的边费用是\(0\)

把跑最大流改为跑最小/大费用最大流

Code


咕咕咕






Blog来自PaperCloud,未经允许,请勿转载,TKS!

标签:可行,守恒,网络,流量,下界,Code,带上,汇上
来源: https://www.cnblogs.com/PaperCloud/p/ud_liu.html