[吐槽]

  嗯好吧这个东西吧。。其实是一开始做一道最小点覆盖的题的时候学到的奇妙深刻的东西

  然后发现写了很长

  然后就觉得不拎出来对不起自己呀哈哈哈哈

  咳咳好的进入正题

[正题]

  在这里码一下最小点覆盖的相关知识

  http://www.matrix67.com/blog/archives/116 (二分图最大匹配的König定理及其证明)

  (所以说其实我也很想知道为什么那个o上面有两个点啊哈哈哈哈)

  

  嗯还是把自己对于上面那篇东西的理解写一下吧整理整理qwq

  König定理

  一个二分图中最大的匹配数=该图中最小点覆盖数

  嗯首先还是先把定义搬出来吧

  点覆盖:就是一个点集,满足该图的所有边都有至少一个顶点在这个点集中,点集大小最小的成为最小点覆盖

  

  证明的话稍微整理一下(learn from matrix67%%%)

  假设我们现在已经跑出了一个最大匹配,匹配数为$m$,考虑构造一种点覆盖的可行方案

   一个简单的想法:

  我们按照一种方式给这堆点打上标记,以B部分中所有没有被匹配到的点为起点,顺着匈牙利算法中的交错轨(也就是匹配边和非匹配边交替着走)遍历直到不能走下去了为止,并给沿路上的点全部打上标记

  现在我们将B部分中没有打上标记的点和A部分中打上标记的点变成一个点集

  这个点集就是一种可行的点覆盖,而且是最小点覆盖

  为啥?

  我们先将交错轨标号所有的一些奇妙性质列出来再进行证明会比较方便一点

  对于一条在交错轨上的边$(u,v)$,必定满足:

  1.$u,v$均为标号点

  2.若该边为匹配边,则遍历时先走到$u$再走到$v$,即从A部分到B部分

  3.若改变为非匹配边,则遍历时先走到$v$再走到$u$,即从B部分走到A部分

  首先,证明一下这是一个点覆盖

  我们可以把边分为两类,一类是在某条交错轨上的边,一类不在

  对于在交错轨上面的边,显然我可以通过选取A部分中打上标记也就是遍历到的点来覆盖掉

  而对于不在交错轨上且没有被覆盖到的边,它在B部分的端点一定是没有被标记的

  (否则就说明其在A部分的端点一定是没有被标记的,

  而这种边是不可能存在的,用反证法

  设存在一条边$(u,v)$,$u$没被标记,$v$被标记,

  则$v$应该被交错轨经过

  若这条边是匹配边,则一定是由$u$走到$v$,也就是说$v$的标记一定来自$u$,

  因此$u$也应该有标记,矛盾

  若这条边是非匹配边,则到$v$的交错轨可以继续走下去

  这条边也应该在交错轨上,矛盾

  综上,不存在这种边)

  所以这种选法就一定可以保证所有的边都被覆盖到啦

  第二,证明一下这个点覆盖的大小$=m$

  首先看我们选的用来覆盖交错轨上的边的点

  因为我们在标记的时候走的是一段段的交错轨,并且我们的起点是在右边

  所以左边的A部分中被标记的点的个数必定与交错轨中匹配边的个数相等

  接着看剩下的部分

  由于交错轨标号方式,交错轨上的边的两端的点必定都是被标记的点

  换句话来说就是非交错轨上的且没有被覆盖到的边的右端点肯定连到的是未被标记的B部分的点

  而每个未被标记的B部分的点必定会连且只会连出一条匹配边(继续反证嗯,比较简单不写了)

  所以数量也是相同的  
  

  所以两个加一下就是$m$啦

  最后,证明这是最小点覆盖

  嗯。。一句话搞定:覆盖$m$条匹配边最少都要$m$个点,所以当然就是最小的啦

  搞掂捞面ovo

【learning】二分图最大匹配的König定理的更多相关文章

  1. 二分图最小点覆盖König定理的简单证明 (加入自己理解)

    第一次更改:http://blog.sina.com.cn/s/blog_51cea4040100h152.html 讲的更细致 增广路:https://blog.csdn.net/qq_374572 ...

  2. Asteroids POJ - 3041 匈牙利算法+最小点覆盖König定理

    题意: 给出一个N*N的地图N   地图里面有K个障碍     你每次可以选择一条直线 消除这条直线上的所有障碍  (直线只能和列和行平行) 问最少要消除几次 题解: 如果(x,y)上有一个障碍 则把 ...

  3. 二分图最小点覆盖构造方案+König定理证明

    前言 博主很笨 ,如有纰漏,欢迎在评论区指出讨论. 二分图的最大匹配使用 \(Dinic\) 算法进行实现,时间复杂度为 \(O(n\sqrt{e})\),其中, \(n\)为二分图中左部点的数量, ...

  4. 二分图最大匹配的König定理及其证明

     二分图最大匹配的K?nig定理及其证明 本文将是这一系列里最短的一篇,因为我只打算把K?nig定理证了,其它的废话一概没有.    以下五个问题我可能会在以后的文章里说,如果你现在很想知道的话,网上 ...

  5. UVA 11419 SAM I AM(最大二分匹配&最小点覆盖:König定理)

    题意:在方格图上打小怪,每次可以清除一整行或一整列的小怪,问最少的步数是多少,又应该在哪些位置操作(对输出顺序没有要求). 分析:最小覆盖问题 这是一种在方格图上建立的模型:令S集表示“行”,T集表示 ...

  6. 二分图最大匹配(匈牙利算法)简介& Example hdu 1150 Machine Schedule

    二分图匹配(匈牙利算法) 1.一个二分图中的最大匹配数等于这个图中的最小点覆盖数 König定理是一个二分图中很重要的定理,它的意思是,一个二分图中的最大匹配数等于这个图中的最小点覆盖数.如果你还不知 ...

  7. 最小点覆盖(König定理)

    König定理是一个二分图中很重要的定理,它的意思是,一个二分图中的最大匹配数等于这个图中的最小点覆盖数.如果你还不知道什么是最小点覆盖,我也在这里说一下:假如选了一个点就相当于覆盖了以它为端点的所有 ...

  8. POJ 2226二分图最大匹配

    匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名.匈牙利算法是基于Hall定理中充分性证明的思想,它是二部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图 ...

  9. "《算法导论》之‘图’":不带权二分图最大匹配(匈牙利算法)

    博文“二分图的最大匹配.完美匹配和匈牙利算法”对二分图相关的几个概念讲的特别形象,特别容易理解.本文介绍部分主要摘自此博文. 还有其他可参考博文: 趣写算法系列之--匈牙利算法 用于二分图匹配的匈牙利 ...

随机推荐

  1. Docker安装Nginx1.11.10+php7+MySQL

    Docker安装php-fpm 1.编辑Dockerfile FROM php:7.1.3-fpm ADD sources.list /etc/apt/sources.list RUN cp /usr ...

  2. 关于Frame加背景的那点事?

    最近新生问我一个问题,继承自Frame(可不是继承自JFrame)的框架怎样添加背景图片, 真够坑的,当时还真懵了,废话少说直接上代码: import java.awt.*; import java. ...

  3. Linux常见目录及其作用

    在Linux操作系统中,所有文件和目录都被组织成一个以根节点开始的倒置的树状结构.如下图 系统一般以 / 来表示根目录.在根目录之下的可以是目录也可以是文件,而每一个目录中又可以包含子目录文件.如此反 ...

  4. 发布iOS应用时,Xcode报错:Application failed codesign verification.

    如下图,在发布应用时,因为codesign问题卡住了.尝试修改Target中的code sign setting,没有效果. 接着,在Developer Center删除所有证书,甚至包括Apps I ...

  5. Eclipse 安装 SVN 插件的两种方法

    eclipse里安装SVN插件,一般来说,有两种方式: 直接下载SVN插件,将其解压到eclipse的对应目录里 使用eclipse 里Help菜单的“Install New Software”,通过 ...

  6. 《android开发艺术探索》读书笔记(十)--Android的消息机制

    接上篇<android开发艺术探索>读书笔记(九)--四大组件 No1: 消息队列MessageQueue的内部存储结构并不是真正的队列,而是采用单链表的数据结构来存储消息列表,因为单链表 ...

  7. javascript正则表达式的一些笔记

    正则表达式:Regular Expression.使用单个字符串来描述,匹配一系列符合某个句法规则的字符串.即按照某种规则去匹配符合条件的字符串.正则表达式就是规则. \b 单词边界 regexp对象 ...

  8. hihoCoder1310 岛屿 (dfs)

    思路:首先dfs求得所有联通块,再搜索的同时把每个联通块的坐标都保存下来,然后把每个联通块处理一下–首先得到某个联通块的最小横坐标和纵坐标,然后让每个坐标去减去这个横坐标和纵坐标.相当于使得所有联通块 ...

  9. C. Polycarp at the Radio

    这题题意不太好理解,但是可以通过样例推.主要考察思维的全面性,注意把b[m]特殊处理下. AC代码: #include<cstdio> #include<cstring> co ...

  10. mongodb Decimal Spring data mongodb Decimal128 SpringMvc 序列化字符串 json converter

    Mongodb 3.4 就开始支持Decimal 类型,解决double的精度问题,但是不太好用,MapReduce的时候Array.sum 也不能计算 Decimal.比较坑,但是聚合可以用 Spr ...