其他分享
首页 > 其他分享> > 上下界网络流详解

上下界网络流详解

作者:互联网

上下界网络流详解

一、无源汇上下界可行流

模型

给定一个$n$个点$m$条边的图,每条边有一个下限流量$L_{i,j}$和一个上限流量$R_{i,j}$,求出是否存在一种方案使得在满足流量平衡的情况下所有边均满足上下界条件。

流量平衡:每个点流入的流量等于该点流出的流量

解决方法

首先每条边的下限肯定是要流满的,我们先让每条边流$L_{i,j}$那么多的流量,然后将其流量设为$R_{i,j}-L_{i,j}$,如图所示:

观察到只流下限时会出现流量不平衡的点,那么就会出现一些问题,如图所示:

这样一张图明显不存在可行流,但是如果我们减去$L_{i,j}$,就会得到:

如果不看约束条件的话,这张图存在着可行流,且最大流为$10$。

这些问题都是由于流量不平衡导致的,那么我们怎么使流量平衡呢?

因为在一般的网络流中,一个点的流入的流量都来自源点,流出的流量都会到汇点,所以我们可以新建超级源点和超级汇点,对于一个点,有如下三种情况:

$1.in_x>out_x:$多流入了流量应该由源点补足,连边$(s,x,in_x-out_x)$

$2.in_x=out_x:$流量平衡,不需要连边(当然如果想的话可以连)

$3.in_x<out_x:$多流出的流量应流入汇点,连边$(x,t,out_x-in_x)$

所以前面的图应变为:

然后跑最大流算法,如果从$s$流出的边均满流,那么代表所有点的流量均平衡,所得到的结果就是原图的一条可行流。

观察可得,上图无可行流。

二、有源汇上下界可行流

在原图的基础上多了源点与汇点,而这两个点肯定流量不平衡,观察到源点的流入一定等于汇点的流出,为了使两个点流量平衡,我们增加边$(t,s)$,下界为0,上界为$inf$,然后就可以使用无源汇上下界可行流的方法了。

三、有源汇上下界最大流

先跑出一条可行流

观察到上图的可行流为$95$,我们接下来看残量网络:

观察到超级源点与超级汇点连出的边已经流满(可行流存在的条件),而最大流等于可行流$+$还能向上浮动的流量,相当于尽量跑满上限,

由于原图中的源汇之间还可以继续找增广路,故还能向上浮动的流量就为$S$到$T$的最大流。

四、有源汇上下界最小流

求出可行流后,最小流即为可行流减去还能向下浮动的流量,相当于尽量接近下限,故跑出从汇点到源点的最大流即可。

注意:求出可行流后应删去边$(T,S,inf)$

 

posted @ 2020-06-18 14:58  verjun  阅读(290)  评论(0)  编辑  收藏  举报
</div><!--end: topics 文章、评论容器-->

刷新评论刷新页面返回顶部


Powered by .NET 6 on Kubernetes

标签:可行,源点,网络,流量,下界,详解,汇点,汇上
来源: https://www.cnblogs.com/caterpillor/p/15658834.html