二分图相关定理的证明

对于任意一张有n个节点的图,有:

  • 1.最小边覆盖 + 最大匹配 = n
  • 2.最大独立集 + 最小点覆盖 = n

比如下面这张图 

  • 最小边覆盖{e1,e3,e4} 大小为3

  • 最大匹配{e1,e3} 大小为2

  • 最大独立集{v2,v4,v5} 大小为3

  • 最小点覆盖{v1,v3} 大小为2

由此看来上面的两个结论确实是正确的,那么如何证明呢?

对于定理 1 :

    假设最大匹配数为y,那么这y条边连接了2*y 个点。
    又因为是一个匹配,所以这些点都不同,所以覆盖了2*y个点
    又因为这是一个最大的匹配,所以剩下的点中任意两点没有边相连
    所以如果我们要覆盖剩下的点,我们肯定要再用(n-2*y)条边,因为没有一条边可以覆盖两个点
    所以最大边覆盖 =  y + (n-2*y) = n - y
        得证

对于定理2:

    我们把所有点的状态全部取反,原来在最小覆盖点集中的点不选,选不在最小覆盖点集当中的点
    这样得到新的点集大小就是 n - 最小覆盖点集大小
    这样我们只要证明新的点集是一个独立集即可
    假设新的点集不是一个独立集,那么一定有选择了的两个点有一条公共边
    而新的点集中的点都不是最小覆盖点集中的点,那么这两个点也不是最小覆盖点集中的点
    而这两个点却有一条边相连,那是不是说明我们原来的点集不是一个覆盖的点集?矛盾

    所以:点覆盖与独立集是一一对应的
    所以 最大独立集 = n - 最小点覆盖
    得证

而在二分图中,我们有一个更强力的性质:

  • 最大匹配数 = 最小点覆盖

比如下面这张二分图:

 

最大匹配显然为2

选择 x2,y2 两点构成点覆盖显然是最小的

由此看来,这个性质确实正确,那么证明?

假设我们求得的最大匹配为: x2-y1,x3-y2

这样,二分图中的所有边其实分为了4类.把匹配点记为P,未匹配点记为NP,可表示成下面的形式:

  • P - P
  • P - NP
  • NP - P
  • NP - NP

显然,第四种边其实是不存在的,因为我们已经求得了一个最大匹配,如果存在第四种边,那么这两个未匹配点显然可以相互匹配使匹配数 +1 ,矛盾。

我们先选择左边所有的匹配点作为初始的点集。显然,第一类和第二类边已经被覆盖了,还没有被覆盖的边只有第三类

对于这类边,我们设右边的未选择的匹配点为y,与y相匹配的左边的点记为x,x是被选择了的,我们只需要把y和x的状态反转,即把y记为选择,x记为未选择即可。

这样做为什么是对的呢?我们考虑这样做的影响是什么。 第一类边肯定仍然被覆盖,因为我们选择的是所有的匹配点(不管他是左边还是右边)

然鹅我们把一个左边的匹配点标记为不匹配了,是否会形成第二类边没被覆盖的情况呢?

不会。

比如下面这张图: 

我们按照上述方法操作:

1. 选择所有的左侧匹配点 :x2,x3
2. 发现一条第三类边: x1-y2
3. 把x1置为未选择,y2置为已选择

突然,我们惊奇地发现出现了一条2类边 x3-y4 未被覆盖!! 是我们的方法出错了吗?

不是。too naive。

上面这张图最大匹配并不是 2!!! x1-y2,x2-y1,x3-y4

最大匹配应该是3

由此看来,当我们把x,y 集合中的点状态反转过后,并不会出现未匹配的第二类边。

为什么呢?因为如果我们发现了一条第二类边,那么这条边,匹配边,和原来的第二类边就形成了一条增广路!!!而我们已经求得了最大匹配,所以这是不可能出现的。

至此,我们证得了 :二分图中,最大匹配数 = 最小点覆盖。

得出求最小点覆盖集的方法:从左边所有没有匹配的点出发求增广路。最终左边没有访问过的点和右边访问过的点组成最小点覆盖。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值