最大权闭合子图模型
最大权闭合子图模型
写了几道这类题,觉得很有意思,有必要总结一下
什么是闭合子图?
对于一个有向无环图,它的一个闭合子图满足对于其中的任意一个点,从它出发能够到达的所有点都和它在同一个闭合子图中
比如下面这个图
它的所有闭合子图集合为:
其实就是走不到集合外的点,“闭合”的子图
——GoldenPotato
什么是最大权闭合子图?
对于一个点带正/负权的有向无环图,其最大权闭合子图在所有的闭合子图中,点权和最大
怎样用到题目中?
建立超级源点和超级汇点,从向所有点权为正的点连边,边权为点权;从所有点权为负的点向连边,边权为点权的相反数;原图中原本就存在的边之边权设为正无穷
那么最大权闭合子图的权值等于所有正权点之和减去最小割
证明:
以下引自https://www.cnblogs.com/TreeDream/p/5942354.html
字母比较多,请注意辨别和理解
首先我们要证明两个引理:
1.最小割一定是简单割
简单割指得是:割中每一条割边都与或者关联,这样的割叫做简单割。
因为在图中将所有与相连的点放入割集就可以得到一个割,且这个割不为正无穷。而最小割一定小于等于这个割,所以最小割一定不包含无穷大的边。因此最小割一定一个简单割。
2.简单割一定和一个闭合子图对应
闭合子图和源点构成集,其余点和汇点构成集。
首先证明闭合子图是简单割:若闭合子图对应的割不是简单割,则存在一条边,且c(u,v)=。说明的后续节点不在中,产生矛盾。
接着证明简单割是闭合子图:对于中任意一个点,。的任意一条出边,不会在简单割的割边集中,因此不属于,。所以的所有点均在中,因此是闭合子图。
由上面两个引理可以知道,最小割也对应了一个闭合子图,接下来证明最小割就是最大权的闭合子图。
首先有割的容量中所有正权点的权值之和中所有负权点的权值绝对值之和。
闭合子图的权值中所有正权点的权值之和中所有负权点的权值绝对值之和。
则有中所有正权点的权值之和中所有正权点的权值之和=所有正权点的权值之和。
所以所有正权点的权值之和
由于所有正权点的权值之和是一个定值,那么割的容量越小,也就越大。因此当取最小割时,也就达到了最大权。
形象理解
emmmm这个证明似乎有点看不懂
我们可以用 「Luogu2762」太空飞行计划问题煮个梨子
W教授YY他可以白嫖所有实验的收益(正权点权值之和)
但是他很快意识到他是要交钱的(选择某些正权点时必须也要选择负权点)
于是他画了个图来算花费(网络流图)
他必须舍弃一些实验的收益(割掉源与这个实验的连边)
或者保留这个实验并且吃掉所需仪器的而收费(割掉所需仪器与汇的连边)
他希望舍弃的收益和仪器的花费最少(最小割)
最终所有的收益减去这些舍弃的收益和仪器的花费即是W教授能赚到的最多钱
求方案
最大权可以通过跑最大流求得,那……如何求最大权闭合子图的点集呢?
证明中提到是一个闭合子图,那么我们只需要跑完最小割之后,找到所有仍与相连的点即可
即最后一次增广(失败)找到阻塞流时,所有被分层了的点