最小权点覆盖集 与 最大权独立集
最小权点覆盖集
一、定义
什么是点覆盖集呢?就是图中所有点的一个子集,首先他是一个点集,然后图中所有边的两个端点的其中一个都在这个点集中,就是说这个点集中包含了所有边的至少一个端点,这个点集就覆盖了所有边。那么对于每个点我们给他一个权值,所有点覆盖集中,总权值和最小的一个就是所说的最小权点覆盖集。
这个问题是一个NP完全问题,就是没有一个更快的算法,只能通过枚举暴搜来实现,但这里我们来看一种特殊的最小权点覆盖集,就是对于一个二分图而言的。
在二分图中,有一个特殊的性质:当所有点权都为1时,最大匹配数 = 最小权点覆盖集;最大权独立集 = n - 最小权点覆盖集。
二、具体做法
我们利用最小割来求解最小权点覆盖集,首先我们是在二分图上来做,如果点权为负数,那么我们直接选,因为选了这个点后,依旧是点覆盖集,而总权值会缩小,所以我们肯定选;而对于所有点权为正数的点,我们用以下方法来解决。我们将所有二分图的点看成两个集合X和Y,从s向所有X集合的点连一条容量为点权的边,从所有Y集合的点向t连一条容量为点权的边(只对于点权为正的点,因为网络流的容量必须是正的),X集合和Y集合之间建原图存在的边,容量为正无穷。然后求s到t的最小割就是最小权值和。
三、证明
我们现在要证明新建的流网络的所有割集和原图的点覆盖集是一一对应的,并且数量关系也是对应的,所以原图的最小权点覆盖集就是流网络中的最小割。那么这里我们要用到简单割(就是所有的割边都是和s、t相连的边),之前也证过,对于此图,简单割的最小割一定是所有割集的最小割。
对于一个简单割来说,其所有割边所连的点,就是我们的一个点覆盖集,如下图。我们可以用反证法来证明一下这个结论,在这个二分图中看最小割就很形象,对于割的定义就是将原图的所有点分成两个集合S和T,使得源点s在S集合中,汇点t在T集合中。如果原图有一条边的两个端点都不在割边所连的点中,那就说明这两个端点的左右两条边都不在割集中,而这两个端点所连的点就是s和t,就说明这两割端点和s和t在同一个集合S或T中,和割的定义相矛盾,所以原图中的每条边的两个端点一定有一个是割边所连的点,就是我们要求的点覆盖集。而任意一个点覆盖集(为使权值减小,我们去掉多余的点)也可以用同样的办法来构造一个割集,所以这两个一一对应。
下面我们还要看一下最小权和最小割之间的数量关系。我们建图时割边的容量就是所连点的权值,那么我们求得的割就是所连点的权值和,最小割就是最小权值和。
四、经典例题
传送门: POJ 2125:Destroying The Graph
最大权独立集
一、定义
独立集是和点覆盖集对偶的一个概念,独立集是指一个点集,点集中任意两点之间是不存在边的,也就是点和点之间相独立,并不相连。而在所有独立集中,总点权最大的一个就是最大权独立集。
最大权独立集问题也是一个NP完全问题,但我们也依旧只在二分图这个特殊的情况下来看。
二、做法
最大权独立集 = 所有点的权值之和 - 最小权点覆盖集
三、证明
我们记一个图的点集是V,点覆盖集是V1,设V = 是V - V1,我们猜测V2是一个独立集。那么我们用反证法来证明一下这个猜测,我们假设V2点集不是独立集,说明V2内有两个点之间是有一条边的。而对于点覆盖集的概念来说,任意一条边的其中一个端点一定在V1中,而这里的两个端点都在V2中,互相矛盾,所以V2是一个独立集。同理任给一个独立集V2,记V1 = V - V2,则V1一定是一个点覆盖集。因此点覆盖集和独立集是互补的,这个性质是对所有图都适用的。
元素对应证明完了,我们就要证明一下数量关系,从而证明上面的等式成立。我们将W看作一个点集的点权总和,因为V1和V2是互补的,所以W(V1) + W(V2) = W(V),而W(V)就是所有点权的总和,是一个定值,因此为使后者最大,就应使前者最小,从而有等式最大权独立集 = 所有点的权值之和 - 最小权点覆盖集。
四、经典例题
传送门:Acwing 2326:王者之剑
最小权点覆盖集 与 最大权独立集相关推荐
- POJ 2125 Destroying The Graph Acwing 2325. 有向图破坏(拆点+最小权点覆盖集)
原题链接 POJ 2125:Destroying The Graph Acwing 2325:有向图破坏 题目大意 我们要删除一个有向图中的所有边,有两种删法,一是删除某点的所有入边,二是删除某点的所 ...
- luogu2774 方格取数问题 二分图最小权点覆盖集
题目大意:在一个有 m*n 个方格的棋盘中,每个方格中有一个正整数.现要从方格中取数,使任意 2 个数所在方格没有公共边,输出这些数之和的最大值. 思路:这种各个点之间互相排斥求最大值的题,往往需要利 ...
- Acwing 2326:王者之剑(网格图之网络流 最大权独立集)
原题链接 传送门:Acwing 2326:王者之剑 题目大意 给一个网格图,每个点是宝石的数量,现在从0秒开始可以从任意一个点作为起点开始走,每秒顺序执行下面三件事:1.拿走该点的宝石.2.如果当前是 ...
- 【二分图|最小点覆盖集】König定理及其证明
转自Matrix67 二分图最大匹配的König定理及其证明 如果你看不清楚第二个字母,下面有一个大号字体版本: 二分图最大匹配的König定理及其证明 本文将是这一系列里最短的一篇,因为我只打算把K ...
- 无归岛【仙人掌图 最大权独立集】
题目链接 BZOJ 1487 在解决这个问题之前,我们可以先了解一下这个问题:仙人掌图的最大独立集.稍有些许差别,不带权值. 好了,回到这个问题上来,那么此题的题意讲的那么繁杂,到底讲的是个什么玩意儿 ...
- 最小点权覆盖集最大点权独立集
最小点权覆盖集 最小点权覆盖集解决的是这样一个问题: 在二分图中,对于每条边,两个端点至少选一个,求所选取的点最小权值和. 方法: 1.先对图二分染色,对于每条边两端点的颜色不同 2.然后建立源点S, ...
- KM算法 最优匹配(最大权匹配) hdu 2255 奔小康赚大钱 最小权匹配 poj 2195 Going Home
最大权二分匹配问题就是给二分图的每条边一个权值,选择若干不相交的边,得到的总权值最大.解决这个问题可以用KM算法.理解KM算法需要首先理解"可行顶标"的概念.可行顶标是指关于二分图 ...
- CodeForces - 103E Buying Sets(最小权闭合子图)
题目链接:点击查看 题目大意:给出n个数列集合,每个集合都有一个权值,现在要求从中选出k个集合(k可以为0),要求满足: 权值和最小 k个集合取并集后的集合大小等于k 题目要求输出最小权值和 题目分析 ...
- UVA 1349 Optimal Bus Route Design (二分图最小权完美匹配)
恰好属于一个圈,那等价与每个点有唯一的前驱和后继,这让人想到了二分图, 把一个点拆开,点的前驱作为S集和点的后继作为T集,然后连边,跑二分图最小权完美匹配. 写的费用流..最大权完美匹配KM算法没看懂 ...
最新文章
- .NET开发人员值得关注的七个开源项目
- web socket 心跳包的实现方案
- 设计模式你怎么看?--抽象工厂模式
- matlab把每次循环的结果保存idx,来自Matlab的循环Python
- matlab怎么算2乘2矩阵,【Matlab】2.矩阵的运算
- hdu 5327 Olympiad
- 望SQLServer 高手指点
- gdb调试常用命令速查(段错误调试)
- 汽车熄火是什么原因?
- java8 stream中 forEach和 forEachOrdered 当parallel时候执行过程安全问题深入理解
- 2020 年前端技术发展盘点
- JAVA中将标准的IEEE754 4字节16进制数据转换为float类型数据
- win10 永久关闭自动更新
- 一个DDD指导下的实体类设计案例
- C++11 std::this_thread::sleep_for让我睡一会再干活
- win7底部任务栏还原方法
- WPF UnhandledException
- win10安装Geany编辑器
- root联通定制机顶盒,root 机顶盒
- Ubuntu出现device not managed 如何解决?