最小割模型总结

最小割之算法模板

最小割之直接应用

  • AcWing 2279. 网络战争
    01分数规划,对答案进行二分查找,不断建图并使用最小割来作二分查找的check函数
    最小化的是:选定边集的总权值和 - 边集的大小*枚举的平均值,则合并一下,最小化(选定的边集中所有边权减平均值的权值和)即可,注意减成负数的边必选,直接累计其原始边权值(不是减去平均值后的负数),并将这正反一对边的容量置零,防止跑最小割时出错

  • AcWing 2280. 最优标号
    将多个数按二进制位处理,2^31-1,即31位,根据当前数在枚举的二进制位上,是0或1来建图,建31次图跑31次最小割

插曲:最小路径覆盖

最小路径覆盖:选择最少的路径(从任意一个点开始,到任意一个不为起点的点结束),将所有点都覆盖
最小路径覆盖 = 总点数 - 最大匹配

  • P2764 最小路径覆盖问题
    将所有点都拆成一对出点和入点,源点连所有入点,所有出点连汇点,容量均为1
    对于给出的图中边(a,b),我们残留网络连边(a的入点,b的出点,INF),这样就构造了一条S->a(入)->b(出)->T的路径,跑最大流即可获的最大匹配数,即在每个点的出点入点都最多选择一次的情况下,选择了最大数量(即流量)的边,而对于每一条边,都可以将这一对点合并,则选择了多少条边就最多可以合并多少个点,每合并一个点就少一条路径,所以最小路径覆盖 = 总点数 - 最大匹配

最小割之最大权闭合图

最大权闭合图:选择若干个点构成点集,不存在从该点集内部指向点集外部的有向边(点集闭合),同时使选择的点总权值和最大

适用模型:对于一个点集A,选择其中一点可以得到相应点权的价值,但是对于属于点集A的任何一点a,可以选择它的前提是选择若干个它的必要点,并会损失选择这些必要点的点权的价值(若能选a的前提是选择b和c,则我们最终选择a能得到的价值为:-b-c+a),要求使最终价值最大化,和对应的一种方案。

建图(残留网络):
我们称能获得价值的点为正权点,而选择它需要先选择的若干必要点位称为负权点
1、从源点向正权点连边,容量为正权值
2、从负权点向汇点连边,容量为权值绝对值
3、其他点与点之间,按给出的关系连边,容量为INF ==> 最小割一定不会选容量为INF的边,则保证了选出的点集一定是合理的(点集闭合)

答案:所有正权点权值和,减去最小割,

1、理解:
因不能使容量为INF的边成为割边,我们假设流量从正权点g流出,一定要经过所有它能到达的负权点,若不能把所有负权点流满或者刚刚好流满,则说明选这个正权点g能得到的代价,小于等于损失的代价,这个点就是废点,我们肯定不选,注意:此时边S->g的容量为0,若全流满,说明选这个正权点g能得到的代价,大于损失的代价,注意:此时边S->g的容量有剩余。

2、证明:
证明可得(此处省略),任何一个闭合图都可以对应一个简单割,而构造这个简单割就对应了我们不选哪些"废点",和选了哪些"好点"对应的损耗。

除了中间因相互制约而出现的容量为INF的边以外,剩下的边有两种,从源点出来向正权点的边,和负权点通往汇点的边,且割边必须是这两种边:
①若割边是从源点出来的边,代表在最大流中,这条边比它的必要点的权值总和小,是废点,割边容量为该正权点的点权
②若割边是通往汇点的边,代表在最大流中,这条边比它的必要点的权值总和大,是好的,割边容量为该负权点的点权
综上,最小割容量表示的是:所有没有选上的正权点的权值,和所有负权点中,与选上了的正权点相关的点的权值,则正权点权值总和与最小割相减,自然就减去了没选的正权点,还减去了选了的正权点对应的负权消耗。

最大权闭合图的方案:注意,根据以上"1、理解"推导可知,最大权闭合子图选上的点是割集S,即从源点沿容量不为零的边能遍历到的所有点

最小割之最大密度子图

最大化子图的密度,其密度的分式:边权和 / 点集大小
符合01分数规划,则使用二分来枚举答案,不断建新图和跑最小割来作二分查找的check()函数
二分最大化的是E-g×V,则改为最小化g×V-E,就可以使用最小割,式子最终化简为 U×n - 最小割
(这里的g指的是二分枚举的密度值,n为点的总数)

建图(残留网络):
1、根据题意点与点直接的关系建图,双向关系建容量相等的一对边
2、为保证边权始终为正,源点流出和流入汇点的边都加上一个偏移量U,此操作在这里的合理性可证,其他情况不可随意对图中的边权做加减操作
3、则源点向所有点连边,容量为U,所有点向汇点连边,容量为U + 2g - du【i】,这里的U是权值偏移量,g指的是二分枚举的密度值,du【i】指的是该点的度数(出度+入度)

最小割之最小点权覆盖集

最小点权覆盖集:指选择任意数量的点构成点集,并使图中任意一条边都至少有一个顶点被选中,最小化选中点的权值和

本题可转化为,求:对于图中任意一条边,都至少选中其中一个顶点,并最小化选中点的点权和
将所有点分为“出”和“入”两种,
源点向所有出点连边,容量为出点权,
所有入点向源点连边,容量为入点权,
然后对于原图中的有向边(X,Y),从X的出点向Y的入点连边,容量为INF。

①与最大权闭合图原理类似,最小割一定不会选容量为INF的边,即割边一定是S->X,或X->T这样的边,
②保证了对于一条容量INF的边,两个点不会同时被选,因为此时即存在了S->X->Y->T这样的边,不符合割的定义,
③对于割边,若它是起点为S的边,则选择这个入点,若它是终点为T的边,选择这个出点。

最小点权覆盖集的值 等于 最小割的容量 的充分必要性证明:
1、一个简单割是否是一个点覆盖集?对于原图的边(X,Y),在残留网络中以S->X->Y->T这样的形式存在,X-Y的边必不是割边,若S->X,Y->T也均不是割边的话,即S->X->Y->T这三条边都在割的左部分或右部分,但S和T不应在同一部分。所以S->X和Y->T必有其一且只能是其一被选(②),即满足点覆盖集的概念。
2、一个点覆盖集是否是一个简单割?对于边(X,Y),若选择了X,则将S->X设为割边,若选择了Y,则将Y->T设为割边,证明类似,略。

最小点权覆盖集的方案:在残留网络中,若存在容量不为0,且是割集S->割集T的边,则其为割边,为S->Z的类型则选择出点Z,为Z->T的类型则选择入点Z。

最小割之最大点权独立集

独立集:指在选出的点集中,任意两点间都不存在任何有向边
点覆盖集的补集一定是一个独立集,反之也成立:独立集的补集一定是一个点覆盖集

可证(证明略),任意一个独立集都可以对应一个覆盖集,那么公式:
最大点权独立集 = 所有点权总和 - 最小点权覆盖集

适用模型:对于图中的给定的二元关系,它们是互斥的,即选择了A就不能选择B,那么我们就连边A->B(容量为INF)表示这两个点应该相互独立,求选择若干个独立点的最大价值

建图(残留网络):
创建虚拟源汇点S,T,将所有方格(x,y)按(x+y)%2,分成奇偶两类,一类全部由源点进来,一类全部到达汇点,容量均为点的权值

那么在问题转化为求最小点权覆盖集后,很明显,同一有向边的两个端点不能同时选,对应到问题中就是当前位置与上下左右四个方位相邻的位置连边,容量为INF,表示不能同时选择任何两个相邻的方格。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_45928596

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值