二分图最大(基数)匹配以及与其等价的几个问题

来源:互联网 发布:剑灵天族捏脸数据大全 编辑:程序博客网 时间:2024/05/21 07:09

 

一.最大独立点集的定义
给定无向图G(V,E),其中A为顶点集合V的子集,且E∩{(i,j) | i,j∈A}=空集.
求A,使得|A|最大

二.最小顶点覆盖集的定义
给定无向图G(V,E),一个顶点覆盖集(vertex covering)是指顶点集S(S为V的子集),使得G中任一条边(x,y)至少有一端点在S中.
求S,使得|S|最小

三.最大完全子图的定义
给定无向图G(V,E),其中C为顶点集合V的子集,对于任意两个点i,j∈C,且i≠j,有(i,j)∈E.
求C,使得|C|最大

四.三者的等价性
(1)最大独立点集与最小顶点覆盖集的等价性
假设A为G(V,E)的一个独立点集,令B=V-A,则B为V的子集.
那么很容易就可以得出这样的结论:对于任意一条边(i,j)∈E,有i∈B或j∈B
所以B是图G(V,E)的顶点覆盖集
于是|A|=|V|-|B|,也就是说最大独立点集与最小顶点覆盖集是等价的两个问题.
在这个转化过程中就用到了点的“补集转化”——用点集V减去求解目标集合A,以得到新的目标集合B
(2)最大独立点集与最大完全子图的等价性
假设C为G(V,E)的一个完全子图
令全集U={(i,j) | (i,j)∈V},令E'=U-E,
则在无向图G'(V,E')中,有E∩{(i,j)| i,j∈C}=空集,所以C也是图G'的最大独立点集。

五.二部图中的最大独立点集/最小顶点覆盖集/最大完全子图/最大(基数)匹配
对于普通图而言,最大独立点集/最小顶点覆盖集/最大完全子图都是NPC问题。
但对于二分图/二部图/偶图来说,这些问题与二分图的最大(基数)匹配是等价的,从而能找到多项式时间内的解法。

来看下面这个定理(同时也是二分图最大匹配的匈牙利算法中需要证明的问题):
二分图G(V,E)中匹配M是最大匹配当且仅当G中没有M增广链。
同样,我们换个角度来说,在匈牙利算法中不管以怎样的顺序找到一个匹配M,只要再也找不出M的增广路径,那么M一定就是个最大匹配
证明过程如下:
(1)首先来看下面这个弱对偶性:
如果M是任意一个匹配,S是任意一个顶点覆盖集,则M中的任一条边可以对应到一个S中是此边端点的顶点(若有两个可能则随便选一个出来对应),因为M是匹配,M中不同二边并不会对应到相同的顶点,所以|M|<=|S|;
一般来说,有些S中的顶点也可能不被“匹配”到,所以不等号可能成立,因此,可以得到下列的弱对偶不等式:
|最大匹配集合M|<=|最小顶点覆盖集S|
(2)其次考虑下面两集合M*和S*:
首先,M*就是算法停下來时的匹配(对集);
其次,在算法停下來的最后那次,有些顶点被列出來,有些未被列出來,S*就是所有X中未被列出的顶点和Y中被列出的顶点所成的集合(X和Y就是指二分图中的那两个顶点划分集合)。
如果我们能说明下列三件事情:
(甲) M*是一个匹配。
(乙) S*是一个顶点覆盖集。
(丙) |S*|<=|M*|
则可以得到下列不等式:
|M*|<=|M|<=|S|<=|S*|<=|M*|
因此,所有不等式也就成为等式,这其实一举证明了下面三件事实:
(甲') M*是一个最大匹配。
(乙') S*是一个最小顶点覆盖。
(丙') 最大匹配的边数等于最小顶点覆盖集的点数。