二分图的最小点覆盖-定理证明

最小顶点覆盖定义:假如选了一个点就相当于覆盖了以它为端点的所有边。最小顶点覆盖就是选择最少的点来覆盖所有的边。

最开始做题的时候完全没想到最小顶点覆盖和最大匹配有关系,之后找证明过程的时候受博主Matrix67的启发,然后想再按自己的思路证明一下。从问题本身出发(主要还是按照增广路特点来证明):

1、下面是一个二分图,红色的线表示一种可以获得最大匹配的方案
在这里插入图片描述
根据二分图的定义:图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个互不相交的子集

那这两个子集中任意一个子集的点肯定能够覆盖所有的边:
在这里插入图片描述假设图中,上面部分有n个点,下面有m个点,那么可以确定 最小覆盖点数≤min(n,m)。

2、然后我们去看有什么方法可以减少点的个数:

我们知道二分图匹配过程中获得最大匹配后,就找不到增广路径了,“换句话说,我们能寻找到很多可能的增广路,但最后都以找不到‘终点是还没有匹配过的点’而失败”。仔细想一下匹配失败的过程会发现——每次都是以同子集中已经匹配成功的点结尾的,而且这个结尾点除了与它匹配的点之外,没有与任何点相连(如果有的话就可以找到一条增光路了)。

以上图中,下面最右边的点为例,我们试着去给它找增广路径,过程如下:
在这里插入图片描述
可以发现,在找增广路径的过程中与下面的点关联的所有边我们都会遍历一次。而这些点是我们最初选择的覆盖所有边的点集 中的一部分,因为寻找过程是上下交错的,所以这些点覆盖的所有边都会与上面的点相关联——即我们完全可以用上面的点取代下面的点。
在这里插入图片描述
因为是从下面出发,上下交错,又是在下面结尾,所以通过给这些没有匹配的点找一次增广路径,就可以使点集减少一个
在这里插入图片描述
——因此最小顶点覆盖=二分图的最大匹配。

通过此方式也可以得到一组最小点覆盖:从一边所有没有匹配过的点出发,按照增广路的“交替出现”的要求DFS。最终右边没有访问过的点和左边访问过的点组成最小点覆盖。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章