Hungary
Hall定理:设二部图中G=<V1,V2,E>中|V1|=m<=|V2|=n,G中存在从V1到V2的完备匹配当且仅当V1中任意k(k=1,2,...,m)个顶点至少与V2中k个顶点相邻(相异性条件)。
证明:
(必要性)显然成立。
(充分性)反证法。设G中不存在完备匹配,取G的一个最大匹配M,则V1中至少有一个点不在M上,且该点必至少与一条不在M中的边相连,该边的另一个顶点若也为M-非饱和点,则与M为最大匹配矛盾,若另一个顶点为M-饱和点,则考察在M中与该顶点相邻的点,利用饱和点去考察在M中相邻的饱和点(交错地考察,即交错地通过M中的边和非M中的边),直至考察完毕,由相异性条件知,最后必考察至非饱和点,此时出现一条增广路,又与假设矛盾,故充分性成立。
Hall定理的一个推论:设二部图中G=<V1,V2,E>中|V1|=m<=|V2|=n,V1中每个顶点至少关联正整数t条边,V2中每个顶点至多关联t条边(t条件),则G存在从V1到V2的完备匹配。
证明:因V1中任意k个顶点至少关联kt条边(kt条边至少关联V2中的k条边),故V1中任意k(k=1,2,...,m)个顶点至少与V2中k个顶点相邻,即得到相异性条件,得证。
Hungary算法:Hungary算法基于Hall定理中充分性证明的思想。对于二部图中G=<V1,V2,E>中|V1|=m<=|V2|=n,设M为最大匹配,此时,若将M-非饱和点及其关联的边删去,则可得到从V1到V2的完备匹配,又由Hall定理的充分性可知,由一个非最大匹配出发,必可找到一条增广路,在有限次数后即可达到完备匹配。大致的步骤为:(1)置M为空集;(2)不断寻找增广路直至达到最大匹配,此步可由V1中的点1,2,...,m依次寻找增广路得到。
对(2)后半句的简要证明:
先进入点1,显然可以通过寻找增广路得到最大匹配;假设进入前k>=1个点后命题成立,则当进入点k+1,可利用Hall定理充分性证明的思想证明若最大匹配数改变,则必能找到一条增广路,反之则必找不到:从这个点出发,找到未用边,考察这个未用边的另一个点,若该点为非饱和点,则找到增广路,若为饱和点则通过其相连的点继续寻找未用边,最后的情况只有两种,一是最后找到增广路,二是最后到达饱和点而无未用边,这种情况下,从点k+1开始的任意偶数段取反,无论何种情况,必留下一个V1中的点,故在这种情况下(找不到增广路),最大匹配数不改变,即命题成立。综上所述,命题成立。
具体算法代码以后依旧以后补充。。(越来越水了。。)