首页 > 其他 > 详细

最大权闭合子图

时间:2017-04-03 16:59:43      阅读:173      评论:0      收藏:0      [点我收藏+]

现在有一个有向图,每个点有点权,点权可正可负。对于任意一条有向边i和j,选择了点i就必须选择点j,你需要选择一些点使得得到权值最大。 
这个问题可以用网络流解决。 
建图方法:对于任意点i,如果i权值为正,s向i连容量为其权值的边,否则i向t连容量为其权值的绝对值的边。原图所有边容量为正无穷。则最大权=正权和-最大流。 
如何证明呢?我们把最大流理解成最小割,那么割掉的边一定不可能是正无穷的边。 
我们发现,选择一个正权点即不割掉s到其的边,选择一个负权点即割掉其到t的边。 
现在证明方案合法。 
对于依赖关系i到j: 
假设i点权为正j点权为负。选了i不选j即没有割掉s到i的边而且没有割掉j到t的边,显然s和t联通,不符合最小割定义。 
假设i点权为负j点权为正。选了i不选j即割掉i到t的边而且割掉s到j的边,由于s到t现在不连通,我们不割这两条边同样s和t是不联通的,那么割这两边不满足割量最小,不符合最小割定义。 
其余情况同理,不符合割量最小。 
注意这个算法不需要原图是DAG。

最大权闭合子图

原文:http://www.cnblogs.com/baocong/p/6662226.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!