poj 2987 Firing 最大权闭合子图

来源:互联网 发布:button click 执行PHP 编辑:程序博客网 时间:2024/06/06 19:43

最大流-最小割定理:最大流=最小割

闭合子图:选择一个节点就要选择它能达到的所有节点

最大权闭合子图:节点有权值,使选择的节点权值和最大

解法:将源与权值为正的点连有向边,权值为点权,汇与权值为负的点连有向边,权值为点权的绝对值,相关的点之间连一条权值为INF的有向边,答案为正权值和-最大流

理解:首先选择所有权值为正的点。求选择这些点后能带来的负值最大为多少(负值大于权值的情况有源到这个点的容量限制,最多能减掉的是这个点的权值,表示不选择这个点),相减之后得到净增值。

本题还要求最小的裁员数

 

证明:(转自http://hi.baidu.com/sector/blog/item/3389372a2bd82bf099250ab1.html)

命题: 根据闭合图定义建图G,在对图G运行最大流后,最大权闭合图V的势是唯一的.

证明:设两个个最大全闭合图V1,V2,它们的权值相等,不失一般性,假设|V1|<|V2|.考虑以下情况:

1)若V1包含于V2,因为|V1|<|V2|,则V2-V1不等于空集.同时,不存在从V1到V2-V1的边,否则根闭合图定义矛盾.由于V1和V2的权值相同,则说明V2-V1的权值为0.根据最大权闭合图的求法以及运行过最大流可知,源点S不可能到达V2-V1.否则与V2-V1权值为0矛盾.进而,运行最大流以后,实际上只有|V1|大小的最大权闭合图.

2)若V1∩V2等于空集,则把V1和V2合并将产生一个更大的闭合图.因此,V1∩V2不等于空集,不妨记为S=V1∩V2,则不存在从S到V1-S或V2-S的边,若存在x属于V1-S,则对于V2来说,与闭合图定义矛盾,同理知V1.根据已知有,W(S)+W(V1-S)=W(S)+W(V2-S),即W(V1-S)=W(V2-S),若W(V1-S)>0,则将V1,V2合并会产生更大的闭合图,矛盾;若W(V1-S)<0,则将V1-S和V2-S去掉,使得S本身为一个闭合图,且它的权比V1或V2大,矛盾.因此W(V1-S)=W(V2-S)=0,由1)的证明知,从源点不可达V1-S或V2-S,因此,实际上得到的最大权闭合图就是S,其权值与V1,V2相同.

综上所述,运行最大流后,最大权闭合图的势是唯一的.


0 0