瞎记一些匹配相关定理的证明

由于公式打不熟练,以下表达上可能会有很多不严谨的地方以及一些笔误。


Hall's Theorem

\(S_1,S_2,\cdots,S_m\) 存在一组相异代表系(SDR)\(\Leftrightarrow\) \(\forall I \subseteq\{1,2,\dots,m\},|\bigcup_{i \in I} S_i|\geq|I|\)

以二分图为背景就是二分图存在一个完美匹配 \(\Leftrightarrow\) 对于每个大小为 \(i\) 的左部点集合,其邻居节点的集合大小 \(\geq i\)

左推右显然。

假设现在我们不知道其它任何定理,右推左考虑数学归纳。

首先 \(m=1\) 的时候显然成立,假设已知当 \(m<k\) 的时候定理成立,考虑证明 \(m=k\) 时定理成立。

  1. \(\forall I \subsetneq \{1,2,\dots,m\}, |\bigcup_{i\in I}S_i|>|I|\) ,就是说每个大小小于 \(i\) 的左部点集合,其邻居节点构成的集合大小都 \(>i\)

    考虑删去 \(S_m\) 中的任意一个元素 \(x\),并删去 \(S_m\),也就是给第 \(m\) 个左部点随便找一个有边的右部点匹配了然后删掉这一对点和它们的连边。

    这样,\(S_1,S_2,\dots,S_{m-1}\) 这些集合的大小最多减少 \(1\) ,就是去掉 \(x\),因此满足 \(\forall I \subseteq \{1,2,\dots,m-1\}, |\bigcup_{i\in I}S_i|\geq |I|\) ,也就是 \(m=k-1\) 时候的定理,成立。

  2. \(\exists I \subsetneq \{1,2,\dots,m\}, |\bigcup_{i\in I}S_i|=|I|=l,l<m\),就是存在一个大小小于 \(i\) 的左部点集合,其邻居节点构成的集合大小恰好 \(=i\)

    设这个集合为 \(J=\{1,\dots,l\}\)\({S_1,\dots,S_l}\) 的 SDR 为 \(X=\{x_1,\dots,x_l\}\),由于 \(X \subseteq \bigcup _{i\in J} S_i,|X|=|\bigcup _{i\in J} S_i|\),可以推出 \(\bigcup _{i\in J} S_i=X\)。对于 \(i \in [l+1,m]\)\(S'_i\) 表示 \(S_i\) 去掉在 \(X\) 中出现的元素得到的集合。

    由条件,\(\forall I\subseteq\{l+1,\dots,m\},|\bigcup_{i\in I\cup J}S_i|=|\bigcup_{i\in I} S_i \cup \bigcup_{i\in J} S_i|\geq |I\cup J|=|I|+|J|=|I|+l\)

    此时左边的并集中分离 \(X\),即 \(|\bigcup_{i\in I} S'_i|+|\bigcup_{i\in J} S_i|\geq|I|+l\),两边同时减去 \(l\)\(|\bigcup_{i\in I} S'_i| \geq |I|\) ,由于 \(I\subseteq\{l+1,\dots,m\}\),所以 \(|I|\leq m-l <m\),剩余部分归为更小的问题。

    对应到二分图上,此时图左部点数量是 \(m\),即找到一个 所有邻居节点个数恰好等于左部点个数的 左部点集合 \(J\)\(J\) 的邻居节点个数是 \(|J|\),之前归纳过所以这个集合存在完美匹配,删去这个集合的完美匹配,包括左右部点和匹配边。

    考虑每个删掉之前完全包含 \(J\) 的集合 \(I'\),这样的集合在删掉之后一一对应剩余图上的每一个左部点集合 \(I\)\(I'\)\(I\),大小减少了 \(J\),且邻居节点集合大小也减少 \(J\) 的邻居节点个数也就是 \(|J|\),因此对于剩余的图依然满足定理右边的条件,且规模小于 \(m\),已经被证明存在完美匹配。


König-Egerváry Theorem

二分图上最大匹配的大小等于最小点覆盖。

考虑一种等价表述,写出二分图的邻接矩阵(和一般图略有不同,即每行表示一个左部点,每列表示右部点,如原图编号为 \(i\) 的左部点与编号为 \(j\) 的右部点有边,矩阵的 \((i,j)\)\(1\),否则为 \(0\)),所有二分图和这样的 0-1 矩阵一一对应。则等价表述为最大独立 1 的个数等于覆盖所有 1 所需的最小行或列的个数(独立 1 指一些为 1 的位置的集合,集合中没有两个位置共行或共列),最大独立 1 对应最大匹配,最小行列覆盖对应最小点覆盖。

设最大独立 1 大小为 \(r\),最小行列覆盖大小为 \(s\)。首先 \(r\leq s\) 显然,因为每行或列最多覆盖一个独立 1 集合中的位置,若 \(r>s\) ,至少有一个 1 未被覆盖。接下来考虑证明 \(r\geq s\)

考虑一个最小行列覆盖有 \(a\) 行和 \(b\) 列,\(a+b=s\)。可以证明只被行覆盖的位置有 \(a\) 个独立 1,只被列覆盖的位置有 \(b\) 个独立 1。

抽出所有只被行的位置,再按原来的相对位置拼到一起,构成一个新的矩阵 \(C\),设 \(S_i=\{j|C_{i,j}=1\}\)

根据鸽笼原理,独立 1 的个数 \(\leq a\)

若独立 1 的个数 \(<a\),就是 \(S_1,\dots,S_a\) 不存在一组 SDR,根据 Hall,\(\exists I\subseteq \{1,2,\dots,a\},|\bigcup_{i\in I} S_i|<|I|\),也就是存在选出若干行的方案,使这些行中存在 1 的列的个数小于行数,此时对于这些行,用列去覆盖会更优,也就是存在一个行数为 \(a-|I|\),列数为 \(b+|\bigcup_{i\in I} S_i|\) 的更小的行列覆盖,\(a-|I|+b+|\bigcup_{i\in I} S_i| < a+b\),与 \(s\) 是最小行列覆盖数矛盾。因此 \(C\) 中独立 1 的个数只能 \(=a\)

证明列的过程是相似的,所以不写了。此时证明了只被行覆盖的位置有 \(a\) 个独立 1,只被列覆盖的位置有 \(b\) 个独立 1,且这 \(a\) 个和 \(b\) 的独立 1 的位置不会存在共行或共列(画图易得),因此 \(r\geq a+b=s\)

因为 \(r \leq s\)\(r\geq s\),所以 \(r=s\) 得证。


Dilworth Theorem

偏序集上的最大反链的大小等于最小链划分。

一些定义:

偏序集:由集合 \(S\)\(S\) 上的偏序关系 \(R\) 构成。偏序关系是满足自反(\(a\leq a\)),反对称(若 \(a\leq b,b \leq a\),则 \(a=b\)),传递(若 \(a\leq b,b\leq c\),则 \(a\leq c\))的二元关系,偏序集可以用 DAG 表示,有向边 \(a \rightarrow b\) 表示 \(a\leq b\)(\(\leq\) 只是一个表示偏序关系的符号,并非一定是“小于等于”)。

链:偏序集的一个子集,满足其中元素互相可比。也就是对应 DAG 上的一条链。

反链:偏序集的一个子集,其中元素互相不可比。

设一个偏序集最大反链大小为 \(r\),最小链划分大小为 \(s\),易得 \(r\leq s\),因为划分出的每条链上最多有 1 个元素在反链上,否则不满足互相不可比。

考虑构造一个二分图,左右部点数量都为 \(n\),都表示偏序集的元素(DAG 上的点),若 \(a\leq b\),则左部点 \(a\) 和右部点 \(b\) 有边。设二分图存在大小为 \(k\) 的最大匹配和最小点覆盖。

考虑不在最小点覆盖中的点 \(x\),所有的 \(x\) 构成一个大小 \(\geq n-k\) 的反链。反证,若不构成反链,则说明存在 \(x,y,x\leq y\),但是 \(x\)\(y\) 都没有被覆盖,所以 \(x\rightarrow y\) 这条边没有被覆盖,与点覆盖矛盾。

也可以证明最小链划分等于 \(n-k\)。考虑 DAG 上有 \(u\rightarrow v\) 这条边,则可以将 \(u,v\) 所在的链合并为一条链,每个点只能作为入点和出点各合并一次,对应到二分图上,每个点作为左部点和右部点最多连一条边,也就是匹配。\(k\) 为最大匹配大小,也是最大合并次数,初始时每个点为一条链,每合并一次链的数量减少 1,因此最小连划分等于 \(n-k\)

\(r\geq n-k,s=n-k\) ,所以 \(r\geq s\),又有 \(r\leq s\),所以 \(r=s\)

Dilworth 定理有一个经典的应用 导弹拦截 的第二问,问题是求把一个序列划分为最小数量的最长不上升子序列,设序列为 \(a_1,\dots,a_n\),偏序集 \((S,\leq),S=\{(i,a_i)|1\leq i\leq n\}\)\((i,a_i) \leq (j,a_j)\) 表示 \(i\leq j \wedge a_i \geq a_j\),则问题为求这个偏序集的最小链划分,根据 Dilworth,最小链划分等于最大反链,就是要求一个最大的集合满足 \(\forall i,j(i\leq j),a_i<a_j\) ,也就是求一个最长上升子序列。


Birkhoff - von Neumann Theorem

所有的双随机矩阵都是置换矩阵的凸组合。

一些定义:

双随机矩阵:\(n\)\(n\) 列,\(\forall i,\sum_j A_{i,j} =1\)\(\forall j ,\sum_i A_{i,j}=1\),即每行每列的的和都为 1 行列数相等的矩阵。

置换矩阵:一个 \(n\times n\) 的 01 矩阵,每行每列都恰好有 1 个 1。

凸组合:\(A=\sum_{i=1}^m \lambda_i P_i,\lambda_i\geq 0,\sum_{i=1}^m \lambda_i=1\),则 \(A\)\(P_i\) 的凸组合。

证明这个定理考虑先证明 \(\forall i,\sum_j A_{i,j} =\gamma \wedge \forall j ,\sum_i A_{i,j}=\gamma,\gamma >0\),则 \(A=\sum_{i=1}^m \lambda_i P_i,\lambda_i\geq 0,\sum_{i=1}^m \lambda_i=\gamma\),当 \(\gamma=1\) 的时候就是这个定理。

考虑归纳 \(A\) 中非 0 的位置数 \(m\)。首先由于 \(\gamma >0\),所以 \(m\geq n\),因为每行至少有 1 个非 0 位置,否则必然有行和为 0。

\(S_i=\{j|A_{i,j}>0\}\),若 \(\exists I \subseteq \{1,2,\dots,n\},|\bigcup_{i\in I} S_i|< |I|\),即 \(I\) 中的非空列的数量 \(<|I|\),此时根据条件选出部分(指所有选出的行以及在这些行上有非 0 位的列抽出来构成的矩阵)行的和为 \(|I|\gamma\),而列的和一定 \(<|I|\gamma\),矛盾。所以 \(\forall I \subseteq \{1,2,\dots,n\},|\bigcup_{i\in I} S_i|\geq |I|\),根据 Hall,\(S_1,\dots,S_n\) 存在 SDR \(\{j1,j2,\dots,j_n\},j_i\in S_i\)

\(m=n\) 时也就是说每行每列恰好一个非 0 位值,此时可以选择 \(\lambda=\gamma\)

\(m>n\) 的时候,考虑一组 SDR \(\{j_1,\dots,j_n\}\),构造一个置换矩阵 \(P_m(i,j_i)=1\) 其余位置为 0,选择 \(\lambda_m=\min_{1\leq i\leq n}A_{i,j_i}\),然后令 \(A'=A-\lambda_m P_m\),此时 \(\gamma'=\gamma-m\),任然满足每行每列和为同一个值 \(\gamma'\) 的调件,并且 \(A'\) 中非 0 位置的个数 \(m'<m\),一直这样做可以转化为 \(m=n\) 的情况。


参考文献:Matching Theory

posted @ 2024-06-07 16:36  Wonder_Fish  阅读(19)  评论(1编辑  收藏  举报