(转)二分图最大匹配的König定理及其证实

出处:http://www.matrix67.com/blog/archives/116

二分图最大匹配的König定理及其证实

    若是你看不清楚第二个字母,下面有一个大号字体版本:

二分图最大匹配的König定理及其证实

    本文将是这一系列里最短的一篇,由于我只打算把König定理证了,其它的废话一律没有。
    如下五个问题我可能会在之后的文章里说,若是你如今很想知道的话,网上去找找答案:
    1. 什么是二分图;
    2. 什么是二分图的匹配;
    3. 什么是匈牙利算法;(http://www.matrix67.com/blog/article.asp?id=41)
    4. König定理证到了有什么用;
    5. 为何o上面有两个点。

    König定理是一个二分图中很重要的定理,它的意思是,一个二分图中的最大匹配数等于这个图中的最小点覆盖数。若是你还不知道什么是最小点覆盖,我也在这里说一下:假如选了一个点就至关于覆盖了以它为端点的全部边,你须要选择最少的点来覆盖全部的边。好比,下面这个图中的最大匹配和最小点覆盖已分别用蓝色和红色标注。它们都等于3。这个定理相信大多数人都知道,可是网络上给出的证实并很少见。有一些网上常见的“证实”明显是错误的。所以,我在这里写一下这个定理的证实,但愿对你们有所帮助。



    假如咱们已经经过匈牙利算法求出了最大匹配(假设它等于M),下面给出的方法能够告诉咱们,选哪M个点能够覆盖全部的边。
    匈牙利算法须要咱们从右边的某个没有匹配的点,走出一条使得“一条没被匹配、一条已经匹配过,再下一条又没匹配这样交替地出现”的路(交错轨,增广路)。可是,如今咱们已经找到了最大匹配,已经不存在这样的路了。换句话说,咱们能寻找到不少可能的增广路,但最后都以找不到“终点是尚未匹配过的点”而失败。咱们给全部这样的点打上记号:从右边的全部没有匹配过的点出发,按照增广路的“交替出现”的要求能够走到的全部点(最后走出的路径是不少条不完整的增广路)。那么这些点组成了最小覆盖点集:右边全部没有打上记号的点,加上左边已经有记号的点。看图,右图中展现了两条这样的路径,标记了一共6个点(用 “√”表示)。那么,用红色圈起来的三个点就是咱们的最小覆盖点集。
    首先,为何这样获得的点集点的个数刚好有M个呢?答案很简单,由于每一个点都是某个匹配边的其中一个端点。若是右边的哪一个点是没有匹配过的,那么它早就当成起点被标记了;若是左边的哪一个点是没有匹配过的,那就走不到它那里去(不然就找到了一条完整的增广路)。而一个匹配边又不可能左端点是标记了的,同时右端点是没标记的(否则的话右边的点就能够通过这条边到达了)。所以,最后咱们圈起来的点与匹配边一一对应。
    其次,为何这样获得的点集能够覆盖全部的边呢?答案一样简单。不可能存在某一条边,它的左端点是没有标记的,而右端点是有标记的。缘由以下:若是这条边不属于咱们的匹配边,那么左端点就能够经过这条边到达(从而获得标记);若是这条边属于咱们的匹配边,那么右端点不多是一条路径的起点,因而它的标记只能是从这条边的左端点过来的(想一想匹配的定义),左端点就应该有标记。
    最后,为何这是最小的点覆盖集呢?这固然是最小的,不可能有比M还小的点覆盖集了,由于要覆盖这M条匹配边至少就须要M个点(再次回到匹配的定义)。
    证完了。
  
Matrix67原创
作人要厚到 转贴请注明出处算法

相关文章
相关标签/搜索