Hall定理与k-正则二分图的完美匹配方案
Hall 定理
\(N(S)\) 表示领域集合,\(L\) 为左部点集合,\(R\) 为右部点集合。
\(Hall\) 定理指出:对于一个二分图来说若满足对于任意 \(S \subseteq U\),有 \(|N(S)| \geq |S|\),且 \(|L| = |R|\),则一定存在完美匹配。
证明:
充分性:
显然如果是完美匹配,那么显然对于任意子集都要有 \(|N(S)| \geq |S|\),否则对于这个子集都无法满足要求。
必要性:
如果存在一个子集 \(S\),满足 \(|N(S)|=|S|\),那么删去子集 \(S\) 一定不会使剩余子集不满足要求。
假设存在子集 \(T\) 不满足要求,那么一定有 \(|S \bigcup T| \lt |N(S \bigcup T)|\),不满足题设。
若不存在一个子集 \(S\)满足 \(N(S) = |S|\),则一定有 \(|N(S)| \geq |S|+1\),此时可以直接任意删除一条匹配边并让这两点消失,同样满足题设,且 \(n\) 减小,于是可以递归到子问题。
二分图最大匹配为: \(n - \max_{S \subseteq U} (|S|-|N(S)|)\)。
k-正则二分图的完美匹配方案
交替链染色(匹配 k 组):
给出步骤:
设 \(t_{i,j}\) 表示第 \(i\) 个人第 \(j\) 组匹配对应的人是谁。
我们把连一个颜色 \(u\) 的匹配边,看作分到了同一组 \(u\)。
-
随便找出一条未匹配边,取出左边点的未匹配的组的 \(mex\),第二组同理,设为 \(j,k\),我们想把他们分在一组匹配中。
-
此时若有 \(j=k\),直接匹配即可。
-
否则令 \(j \lt k\),那么说明右边点的第 \(j\) 组已经被匹配,我们把它已匹配中的 \(j\) 组修改成第 \(k\) 组,可此时可能又会存在之后会有后面的点又匹配了第 \(k\) 组,我们则需要继续修改直到不存在。
过程形如 \(u,v,w,t\),初始时又 \(v \to w\) 连边 \(j\),且 \(w \to t\) 连边 \(k\),且后面不存在点使得与 \(t\) 连边为 \(j\)。
那么此时应该先把 \(w \to t\) 边改为 \(j\),再把 \(v \to w\) 改为 \(k\),再把 \(u \to v\) 改成 \(j\),此时符合要求。
我们可以保证过程中不会出现环,于是最多跑 \(m\) 个边。
证明:
由于是二分图所以只存在偶环。那么出现环时必然有环上第一条原本匹配边和最后一条匹配边不同,且有颜色 \(j,k\),此时发现矛盾。
-
设这个被经过两次的点不是 \(u,v\)
因为一个点只会匹配 \(j,k\) 中的一种颜色,否则前一个点就不会匹配任何一个颜色从而直接可以结束。 -
是这两个点之一
前面已经给出两个点一个没有匹配 \(j\),一个没有匹配 \(k\),同样不满足题设。
复杂度最后为 \(O(nm)\)。
随机增广算法(匹配一组)
给出步骤:
- 进行 \(n\) 次下面操作,每次随机选出一个没有被增广的点。
- 对于这个点为起点,每次随机一个邻点进行增广,若已经出现了一个环就把环全部删掉,直到找到一个未被增广的右部点。
- 显然这个路径有偶数个点,然后将路径中间的点倒着一一匹配即可。
期望时间 \(O(n \log n +nk)\)。
匹配 \(k\) 组就是 \(O(nk \log n +nk^2)\)。
欧拉回路加随机增广算法(匹配 k 组)
给出算法过程:
- 考虑分治 \(k\) 则二分图。
- 若当前 \(k \bmod 2 =1\),此时跑一轮上面的随机增广就会变成偶数。
- 此时 \(k \bmod 2 =0\),那么我们可以对这张图跑一个欧拉回路出来,把边定向,把边为左边到右边的分治到左侧,把右边到左边的分治到右侧,现在两边都是 $\frac{k}{2} $ 则二分图,由于 \(Hall\) 定理,我们知道一个 \(k\) 则二分图必然有完美匹配。
- 分治下去做即可。
复杂度 \(O(nk \log k + nk \log n)\),就是边数带个 \(\log\)。

浙公网安备 33010602011771号