上下界网络流学习小计

概述

有上下界的网络流。

建图

网络流有了建图,其他都是浮云。设立超级源ss和超级汇tt,原来的s和t还是有的。
上下界网络流的建图最好感性的理解,因为证明很复杂,就当做黑盒算法。
t向s连一条容量为+∞的边。
有一条u连向v的边,下线为l,上限为r,那么我们从s到u连+∞的边,v到t连+∞的边,从u到v连一条r-l的边。然后从ss到v连一条l的边,再从u到tt连一条l的边。如图所示。上下界网络流学习小计_第1张图片
首先,我们要从ss到tt做最大流,这样就满足了下限了。

可行流

如果要求上下界可行流,从ss到tt求最大流。

最小费用流

在ss到v的边和u到v的边上加上费用就可以了。然后再从ss到tt求最小费用最大流。

最大流

首先从ss到tt求最大流a,然后删去t到s的边和ss,tt;
其次从ss到tt求最大流b
最后最大流就是a+b
因为像建图所说的,建立ss和tt显然是为了满足下界,下界满足后第二次在最大流就可以了。所以a+b就是最大流。

最小流

首先不连t到s的边,然后从ss到tt做最大流;
其次连t到s的边,然后再对ss到tt做最大流;
最后t到s的流量为最小流
证明:_DMute的上下界网络流总结

另一种建图方法

这个就要用到双关键字网络流的技巧。
因为必须满足下界,我们就假设已经流过所有的下界l了,更新ans,然后u向v连r-l的边,其他边都减去l就可以了。
建议不要用这种方法,有时会有bug。

你可能感兴趣的:(网络流,上下界网络流)