二分图的覆盖与独立集

一、二分图最小点覆盖:
   给定一张二分图,求出一个最小的点集S,使得图中任意一条边都有至少一个端点属于S。这个问题被称为二分图的最小点覆盖,简称最小覆盖。

Konig定理:
   二分图最小点覆盖包含的点数等于二分图最大匹配包含的边数。

   
   证明:
   首先,因为最大匹配是原二分图边集的一个子集,并且所有的边都不相交,所以至少需要从每条匹配边中选出一个端点。因此,最小点覆盖包含的点数不可能小于最大匹配包含的边数。如果能对任意二分图构造出一组点覆盖,其包含的点数等于最大匹配包含的边数,那么定理就能得证。构造方法如下:
(1)求出二分图的最大匹配。

(2)从左部每个非匹配点出发,再执行一次DFS寻找增广路的过程(一定会失败),标记访问过的节点。

(3) 取左部未被标记的点、右部被标记的点,就得到了二分图最小点覆盖。

下面证明该构造的正确性。经过上述构造方法之后:
(1) 左部非匹配点一定都被标记——因为它们是出发点。
(2)右部非匹配点一定都没被标记——否则就找到了增广路。
(3)一对匹配点要么都被标记,要么都没被标记——因为在寻找增广路的过程中,左部匹配点只能通过右部到达。
在构造中,我们取了左部未被标记的点、右部被标记的点。根据上面的讨论我们可以发现,恰好是每条匹配边都取了一个点,所以选出的点数等于最大匹配包含的边数。

再来讨论这种取法是否覆盖了所有的边:
(1) 匹配边一定被覆盖——因为恰好有一个端点被取走。
(2)不存在连接两个非匹配点的边——否则就有长度为1的增广路了。
(3)连接左部非匹配点 i,右部匹配点 j 的边——因为 i 是出发点,所以 j 一定被访问。而我们取了右部所有被标记的点,因此这样的边也被覆盖。
(4)连接左部匹配点 i ,右部非匹配点 j 的边——i 一定没有被访问,否则再走到 j 就找到增广路。而我们取了左部所有未被标记的点,因此这样的边也被覆盖。

   证毕。

二分图最小覆盖的模型特点:每条边有2个端点,二者至少选择一个,我们称之为 2要素。
   
   
   
   
二、二分图最大独立集:
   定义:
   给定一张无向图G=(V,E),满足下列条件的点集S被称为图的独立点集:
   (1)S含于V。
   (2)任意的x,y∈S,(x,y)不属于E。
通俗的讲,图的独立集就是 任意两点之间都没有边相连 的点集。包含点数最多的一个就是图的最大独立集。
对应的,任意两点之间都有一条边相连 的子图被称为无向图的团。点数最多的团被称为图的最大团。
   
   定理:
   无向图G的最大团等于其补图GG的最大独立集。
   注:GG=(V,EE)被称为G=(V,E)的补图,其中EE={ (x,y)不属于E}。
   正确性显然。值得提醒的是,在一些题目中,补图转化思想能成为解答的突破口。
   对于一般无向图,最大团、最大独立集是NPC问题。
NPC问题:即NP完全问题,是理论计算机科学中有关计算复杂性的一个概念。到目前为止,尚未找到任何NPC问题的多项式时间解法。换言之,此类问题难解,目前只能使用暴力搜索等方法计算。

   
   定理:
   设G是有n个节点的二分图,G的最大独立集的大小等于n减去最大匹配数。
证明:
   选出最多的点构成独立集
   等价于 在图中去掉最少的点,使剩下的点之间没有边
   等价于 用最少的点覆盖所有的边
   因此,去掉二分图的最小点覆盖,剩余的点就构成二分图的最大独立集。而最小点覆盖数等于最大匹配数。故最大独立集大小等于n减去最大匹配数。

   
   
   
三、有向无环图的最小路径点覆盖:
   定义:
   给定一张有向无环图,要求用尽量少的不相交的简单路径,覆盖有向无环图的所有顶点(也就是每个顶点恰好被覆盖一次)。这个问题被称为有向无环图的最小路径点覆盖,简称最小路径覆盖。
   设原来的有向无环图为G=(V,E),n = | V |。把G中的每个点x拆成编号为x和x+n的两个点。建立一张新的二分图,1----n作为二分图左部点,n+1----2n作为二分图的右部点,对于原图的每条有向边(x,y),在二分图的左部点x与右部点y+n之间连边。最终得到的二分图称为G的拆点二分图,记为G2.
   
   定理:
   有向无环图G的最小路径点覆盖包含的路径条数,等于n减去拆点二分图G2的最大匹配

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值