二分图的最大匹配问题和基数顶点覆盖问题(2)

          这篇文章为上篇文章的下叙,主要介绍基数顶点覆盖问题。这个问题也是出自文章《Approximation Algorithms》。

现在我们就来解决上一篇文章中我们提到的''Is the size of the minimum vertex cover in G at most k? ''这个问题

          首先我们介绍一下什么是基数顶点覆盖问题,也就是基数顶点覆盖的定义:

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

我们所使用的方法为:最小顶点覆盖等于二分图的最大匹配。

我们用二分题来构造最小顶点覆盖:如下图所示。

    

这部分的具体计算:

            在图中我们可以将这个点的集合分为两个部分,X,Y。其中X:1,2,3,4。 Y:5,6,7,8。我们令M为已经给出的所匹配好的边。M={(1,7)(2,5)(4,8)}而1,2,4,5,7,8为匹配过的点,(4,8)(1,7)(2,5)为匹配过的边。我们以一边为例,Y中未匹配的点:6,9。以9为开始的顶点可得:9-4-8-2-5。我们可以得到一条9-5的交替路。(以匹配的边结尾)。左边已标记的点和右边未标记的点为S, 以下证明S即为所求的最小顶点集。S={2,4,7}。(左侧2,4为匹配边经过的点,右侧7为未经过的点)

性质:

1、| S | == M  
    显然,左边标记的点全都为匹配边的顶点,右边未标记的点也为匹配边的顶点。因此,我们得到的点与匹配边一一对应

2、S 能覆盖 G 中所有的边。

       S 中点所得到的边有以下几种情况:

       ( 1 )左右均标记;

       ( 2 )左右均无标记;

       ( 3 )左边标记,右边未标记;

       若存在一条边 e 不属于 S 所覆盖的边集,则 e 左边未标记右边标记。

如果 e 不属于匹配边,那么左端点就可以通过这条边到达(从而得到标记);如果 e 属于匹配边,那么右端点不可能是一条路径的起点,于是它的标记只能是从这条边的左端点过来的左端点就应该有标记。(观点引用博客https://blog.csdn.net/josunna/article/details/6535699 这个观点描述的很确切,是一个非常好的解释)

3、二分图中最小边覆盖=顶点数-最小顶点覆盖(最大匹配)

最小边覆盖:实质是个边集,这个集合里的边能覆盖所有的顶点,最小边覆盖是满足这个要求中边数最少的一个。

Pr:设最大匹配数为m,总的顶点数为n。为了使边最少,又因为每条边所连接了两个顶点,所以一个边干掉两个顶点。所以这种有匹配的边走的越多越好,所以我们就用最大匹配数目干掉绝大多数点。剩下的解决没有被匹配的点,就只能一条边干掉一个顶点,设这些数目为a。显然2m+a=n,而最小边覆盖=m+a可以得到:最小边覆盖=m+n-2m=n-m

4、二分图中最大独立集+最小顶点覆盖(最大匹配)=顶点数。

Pr:最小顶点覆盖=最大匹配。剩下的则是相互独立的点,相互独立的点+最小顶点覆盖的点=总顶点。

最大独立集:实质是个点集,这个集合中的点无论怎样都亮亮连不到一起,满足这个要求的点数最少的一个。

补充拓展:

但是在文章《Approximation Algorithms》中出现,如果不是二分图呢,最大匹配与最小顶点个数之间的关系呢?文中提出What if G is not restricted to be bipartite?

我们可以在文中得到答案:

In this case, a maximum matching may be strictly smaller than a minimum vertex cover。在这种情况下,最大匹配数必定小于最小顶点覆盖。

在理论上来说:if G is simply an odd length cycle on 2p + 1 vertices, then the size of a maximum matching is p, whereas the size of a minimum vertex cover is p + 1.也就是说如果是一个奇数循环又2p+1个顶点,那么它的最大匹配为p,最小顶点覆盖为p+1。文中还提到了This may happen even for graphs having a perfect matching。举例如下可以看出上图的边为15条边,完美匹配为5,最小顶点覆盖为6。通过观察,我们没有发现大小为5的顶点覆盖,任何顶点覆盖必须选择在2p+1个基数顶点中选择最少p+1个顶点。

具体的内容在文中有说明,我也正看到这里,如果有读过这本书或者正在读这本书的读者可以和我留言,我们相互交流~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值