浅谈最大权闭合子图的网络流求法

问题内容:

有向图里,每个点有点权,点权有负值。对于任意一条有向边i和j,选择了点i就必须选择点j,你需要选择一些点使得得到权值最大

要解决这样一个问题,一看好像很复杂的样子,其实可以转化为网络流的问题,我们可以用最大流最小割定理,来用最大流求最小割,方法是把源点S连向所有正值,把所有负值的绝对值连向汇点T

这里写图片描述

为什么把原来的边设成INF呢,因为选了i一定要选j,所以i和j一定不能割开,如果是INF,一定不会被割开
而如图所示的情况跑完最大流之后的图应该是这样(流量为0则割掉)

这里写图片描述

此时已经没有增广路了
最大流为27,正数和为31,则最大权闭合子图的值为31-27=4
原因很显然:
1.我们不可能在i为正数,j为负数的情况下只选一个负数j而不选正数i
2.在选择i,j时,如果j大于i,显然最大流可以限制i点对最大流的贡献最多为该点的权值,因此不可能出现选了一对i,j,并且j的绝对值大于i的情况
3.可以这样思考,一条路径进行增广之后,观察残余网络,如果该边残余在左边,显然该残量是该边对最大全闭合子图答案的贡献,显然在该边的正权值减去该边最大流就是残量(而所有的正权值之和减去整个图的最大流即是整个图的最大全闭合子图的值)

这里写图片描述

如果右边有残量,那么我们会发现如果选这样的一对i,j,对答案的贡献一定是负的,所以我们不选他,那么怎么处理这个不选呢,之前加上了所有的正权值之和,我们发现该边的最大流显然不能超过左边点的容量,所以如果出现这样的情况,会在加该点的容量后减去最大流(也就是该点的容量)

这里写图片描述
所以这样的处理方式是正确的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值