上下界网络流小结

之间一直对上下界网络流不是很熟悉,今天就来小结一下!

无源汇的上下界网络流

对于一般的网络流每条边流量的下界是0所以不需要特别处理,但是有些网络流问题每条边会有一个流量下界,我们可以用一个二元组 (low,up) 来表示一条下界为 low ,上界为 up 的边。

那么对于每个点,要满足: +=+ 。为了把之类问题转化成最大流为题,那么我们先要把所有的下界流流完。

既然如此,我们就强行让下界流流满,即我们新增两个节点 SS TT 。对于一个点,如果有一条下界为 low 的入流,那么就让 SS 向它连一天流量为 low 的边。假如有一个下届为 low 的出流,就把这个点向 TT 连一条流量为 low 的边。最后再把每条边的流量变为 (0,uplow) 。然后我们在由 SS TT 跑一遍最大流,如果 SS 连出的边都满流,那么这幅图是可以满足每条边的下界流量的,否则不行。

为什么要这样把图重建?其实我们就是强制让每条边流满下界,我们把没条边的下界流都独立出来变成从 SS TT 的必经流,并且放入我们剩下的图中跑。如果所有下界流都满流,那么肯定这幅图是可行的。否则肯定是不可行的!

有源汇的上下界最大流

有源汇相比无源汇就是增加了一个源点和一个汇点,那么我们怎么把这个问题转化成我们已经解决过的问题。那么除了上面向 SS TT 连的边,我们另外加一条特殊的边,即从 T S连一条 (0,+) ,那这就变成无源汇的网络流了!

但是我们现在要求的是最大流,第一遍 SS TT 的对最大流的贡献为 T S流的流量,即这条边的反向边的流量(这是为什么?我也不是很清楚……)但是我们只流了原图中的下界流,对于原图中的自由流可能还没流完!那么把 SS TT 删掉,把 T S的边删掉。再从 S T流一遍最大流,最后加上之前的贡献就是最大流的答案了。

有源汇的上下界最小流

最大流是在有限制流的基础上流最大的可行流,最小流就是在有限制流的基础下流最小的可行流。前面的做法一样,只不过第二次跑最大流不是从 S 跑到T,而是从 T S把可以退流的自由流退掉,那么之前的贡献减去第二次的流量就是最小流。

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值