总结:最大权闭合子图

这两天学习了最大权闭合子图的模型以及将其转化为最大流求解的方法(见这里),这里就不再重复说明了,在这里我就再添加一些我自己对该模型的理解。

这个模型可以解决的是有约束条件的点集的最佳选择问题,而这些约束条件通常都是“要选择点A,必须同时选择点B”这样的形式,称作A依赖B,在这样的情况下使得选择的点集中点权最大,这样的问题就可以用最大权闭合子图的模型来解决,只需要对于所有X依赖Y的情况,连接有向边(X,Y)即可。

然而这个模型中点和点之间的依赖情况分为两种,一种是“无序依赖”,一种是“有序依赖”,分别是什么意思呢?无序依赖就是指“要选择点A,必须同时选择点B”这样的形式,这样的话点集的选择一般也是无序的,即可以同时选择A,B。而有序依赖是指“要选择点A,必须选择点B”,这样的话点集的选择也是有序的,即必须先选择点B,再选择点A。那么对于无序依赖的模型,直接套用最大权闭合子图的模型求解即可,麻烦的是有序依赖的模型。由于有序依赖的特殊性,导致如果有序依赖的关系形成一个“依赖环”,那么依赖环上的点显然是取不了了。同时,如果有点有序依赖该依赖环上的点,这样的点也不能取。这样扩展下去,最后就成为:如果一个点有一条有向路径通向一个依赖环,那么这个点就不能取。因此在求解最大权闭合子图之前必须要把这些点去除。怎么去除呢?我们知道求环可以使用拓补排序,所以这里用拓补排序就可以很快的去除掉不能取的点:对于原图的反图进行拓补排序,最后没有入过队的点就是不能取的,可以证明这些点要么在环上,要么在去环的路上。于是我们就解决了有序依赖的模型。

目前最大权闭合子图的题目我做的不多,但是估计大体上就是以上我所说的两种模型了,这里就贴一些题以及我写的题解:

无序依赖模型:

NOI2006-最大获利 题解

有序依赖模型:

NOI2009-植物大战僵尸 题解

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值