lby学长の二分图
posted on 2024-07-15 03:27:03 | under | source
理论
最大匹配:匈牙利算法
本质就是不断找增广路,复杂度 \(O(n^3)\)。
最小点覆盖
有定理:最小点覆盖 = 最大匹配。
如何证明?显然最大匹配 <= 最小点覆盖,因为你必须要覆盖所有匹配边,而这些边没有共同顶点,也就是无法被一个点同时覆盖。
然后可以构造出一种点覆盖 = 最大匹配的情况。具体而言,对于右部点,遍历以其为起点的所有增广路,然后标记左部被访问的和右部未被访问的点。恰好将所有匹配边一端标记,所以 = 最大匹配。
关于为何能覆盖所有边的简要证明:称被选为点覆盖为“标记”。先将匹配边的右部点设标记,然后从右部点开始找一条失败的增广路,将右部点上的标记移到增广路上对应左部点,则覆盖的边增加了。重复该过程则所有边被覆盖,过程中标记点数恒为最大匹配。
最大独立集
有定理:最大独立集 = n - 最小点覆盖。因为独立集之间互相无边,它们的补集必然覆盖所有边,即点覆盖。
重要:Hall 定理
考虑这样一个问题:在二分图中,是否存在一种匹配,使得左部点均为匹配点。即完美匹配问题。
显然这必然是最大匹配,所以我们跑一遍匈牙利算法?肯定超时,于是引出 Hall 定理。
Hall 定理:若对于二分图左部任意点集 \(S\),右部与其相连的点集 \(T\),都有 \(|S|\ge |T|\),那么存在完美匹配(充要条件)。
必要性:若不满足条件,那么对 \(S\) 而言相邻的右部点不足 \(|S|\) 个,必然不会有完美匹配。
充分性:若满足条件,假设不存在完美匹配。先找最大匹配,然后对于左部非匹配点 \(s\),我们对它使用 Hall 定理,必然有右部点 \(t\) 与 \(s\) 相连。若 \(t\) 是非匹配点,就得到增广路 \(s\to t\) 所以矛盾;反之,考虑 \(t\) 的匹配点 \(s_2\),那么对 \(\{ s,s_2\}\) 使用 Hall 定理,必然有 \(t_2\) 存在。以此类推,因为点有限,所以一定会找到一条增广路,与这是最大匹配矛盾,证毕。
Hall 定理推论
最大匹配为 \(|A|-\max(|S_i|-|T_i|)\),\(A\) 为左部点集,\(S_i\in A\),\(T_i\) 为 \(S_i\) 相邻右部点。
例题
非常好题目,使我的___旋转。
- P1129 [ZJOI2007] 矩阵游戏
对于点 \((x,y)\),不妨视为一条连接行 \(x\) 和列 \(y\) 的边。那么就得到了一张二分图。
对于交换行,等价于交换二分图同一部的两点的编号。交换列同理。
考虑原图的最大匹配,由于交换操作并不会改变二分图的形态,所以一定可以通过若干次操作,使得所有行 \(i\) 与列 \(i\) 匹配。
所以有解当且仅当原图最大匹配为 \(n\)。
- CF981F Round Marriage
- AT_arc106_e [ARC106E] Medals
- CF1009G Allowed Letters
和上一题基本一毛一样。按字典序贪心地填字符,那么就变成了一个判定问题。
从二分图的“限制要求”这一部出发不好搞,所以我们看“字符”这一部。
容易发现相同字符是等价的,所以贪心地全选,接着用 sosdp 处理出另一部的相连节点数量就可。
- AT_arc080_d [ARC080F] Prime Flip
- LOJ6062 Pair

浙公网安备 33010602011771号