二分图的一下小证明

其中的知识都是从别人那里复制的,知识自己进行了一下整合

二分图的定义:

把一个图的顶点划分为两个不相交集 U 和V ,使得每一条边都分别连接U、V中的顶点。如果存在这样的划分,则此图为一个二分图。二分图的一个等价定义是:不含有「含奇数条边的环」的图。

交替路:从一个未匹配点出发,依次经过非匹配边、匹配边、非匹配边…形成的路径叫交替路。

增广路:从一个未匹配点出发,走交替路,如果途径另一个未匹配点(出发的点不算),则这条交替路称为增广路(agumenting path)。

 

增广路的一些特点:

若P是图G中一条连通两个未匹配顶点的路径,并且属M的边和不属M的边(即已匹配和待匹配的边)在P上交替出现,则称P为相对于M的一条增广路径。

由增广路径的定义可以推出下述4个结论:

        1-P的路径长度必定为奇数,第一条边和最后一条边都不属于M。

        2-P上所有第奇数条边都不在M中,所有第偶数条边都出现在M中。

      3-P经过取反操作可以得到一个更大的匹配M’。所谓“取反”即把P上所有第奇数条边(原不在M中)加入到M中,并把P中所有第偶数条边(原在M中)从M中删除,则新的匹配数就比原匹配数多了1个。(增广路顾名思义就是使匹配数增多的路径)

        4-M为G的最大匹配当且仅当不存在相对于M的增广路径。

 

 

匈牙利树的要求:所有叶子节点均为匹配点

 

匈牙利算法的要点:

1.从左边第 1 个顶点开始,挑选未匹配点进行搜索,寻找增广路。

   1.如果经过一个未匹配点,说明寻找成功。更新路径信息,匹配边数 +1,停止搜索。

   2.如果一直没有找到增广路,则不再从这个点开始搜索。事实上,此时搜索后会形成一棵匈牙利树。我们可以永久性地把它从图中删去,而不影响结果。

 

 2.由于找到增广路之后需要沿着路径更新匹配,所以我们需要一个结构来记录路径上的点。DFS 版本通过函数调用隐式地使用一个栈,而 BFS 版本使用 prev 数组。

 

最小点覆盖数:最小覆盖要求用最少的点(X集合或Y集合的都行)让每条边都至少和其中一个点关联。可以证明:最少的点(即覆盖数)=最大匹配数

 

最小路径覆盖=|N|-最大匹配数

用尽量少的不相交简单路径覆盖有向无环图G的所有结点。解决此类问题可以建立一个二分图模型。把所有顶点i拆成两个:X结点集中的i和Y结点集中的i',如果有边i->j,则在二分图中引入边i->j',设二分图最大匹配为m,则结果就是n-m。

可以这么来理解;

1.如果匹配数为零,那么P中不存在有向边,于是显然有:

最小路径覆盖=|P|-最大匹配数=|P|-0=|P|;即P的最小路径覆盖数为|P|;

P'中不在于匹配边时,路径覆盖数为|P|;

2.如果在P'中增加一条匹配边pi'-->pj'',那么在图P的路径覆盖中就存在一条由pi连接pj的边,也就是说pi与pj 在一条路径上,于是路径覆盖数就可以减少一个;

如此继续增加匹配边,每增加一条,路径覆盖数就减少一条;直到匹配边不能继续增加时,路径覆盖数也不能再减少了,此时就有了前面的公式;但是这里只 是说明了每条匹配边对应于路径覆盖中的一条路径上的一条连接两个点之间的有向边;

3.下面来说明一个路径覆盖中的每条连接两个顶点之间的有向边对应于一条匹配 边;与前面类似,对于路径覆盖中的每条连接两个顶点之间的每条有向边pi--->pj,我们可以在匹配图中对应做 一条连接pi'与pj''的边, 显然这样做出来图的是一个匹配图(这一点用反证法很容易证明,如果得到的图不是一个匹配图,那么这个图中必定存在这样两条边 pi'---pj'' 及 pi' ----pk'',(j!=k),那么在路径覆盖图中就存在了两条边pi-->pj, pi--->pk ,那边从pi出发的路径就不止一条了,这与路径覆盖图是矛盾的;还有另外一种情况就是存在pi'---pj'',pk'---pj'',这种情况也类似可 证);

 

边覆盖集:通俗地讲,所谓边覆盖集,就是G中所有的顶点都是E*中某条边的邻接顶点(边覆盖顶点),一条边只能覆盖2个顶点。

最小边覆盖 = 最大独立集 = n - 最大匹配

 

 

二分图最大独立集=顶点数-二分图最大匹配

在N个点的图G中选出m个点,使这m个点两两之间没有边,求m最大值。

如果图G满足二分图条件,则可以用二分图匹配来做.最大独立集点数 = N - 最大匹配数。

 

证明:

设最大独立集数为U,最大匹配数为M,M覆盖的顶点集合为EM。

为了证明|U|=|V|-|M|,我们分两步证明|U|<=|V|-|M|和|U|>=|V|-|M|

1 先证明 |U|<=|V|-|M|

M中的两个端点是连接的,所有M中必有一个点不在|U|集合中,所以|M|<=|V|-|U|

2 再证明|U|>=|V|-|M|

假设(x,y)属于M

首先我们知道一定有|U|>=|V|-|EM|,那么我们将M集合中的一个端点放入U中可以吗?

假设存在(a,x),(b,y),(a,b)不在EM集合中

如果(a,b)连接,则有一个更大的匹配存在,矛盾

如果(a,b)不连接,a->x->y->b有一个新的增广路,因此有一个更大的匹配,矛盾

所以我们可以了解到取M中的一个端点放入U中肯定不会和U中的任何一个点相连,所以|U|>=|V|-|EM|+|M|=|V|-|M|

所以,|U|=|V|-|M|

 


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值