首页 > 其他分享 >瞎记一些匹配相关定理的证明

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

时间:2024-06-07 16:44:04浏览次数:17  
标签:偏序 dots geq 匹配 定理 bigcup leq 瞎记 集合

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


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

标签:偏序,dots,geq,匹配,定理,bigcup,leq,瞎记,集合
From: https://www.cnblogs.com/wonderfish/p/18237458

相关文章

  • [DP] LCS例题 Luogu P1439 【模板】最长公共子序列 Luogu P4303 基因匹配
    LuoguP1439【模板】最长公共子序列【模板】最长公共子序列题目描述给出\(1,2,\ldots,n\)的两个排列\(P_1\)和\(P_2\),求它们的最长公共子序列。输入格式第一行是一个数\(n\)。接下来两行,每行为\(n\)个数,为自然数\(1,2,\ldots,n\)的一个排列。输出格式一个数,即......
  • vue 实现路由权限方式2,通过菜单角色,和用户角色是否重合实现匹配过滤权限
    接口数据查看,业务方式查看给角色分配路由权限,然后路由信息上meta就会有哪些角色可以访问的数组。就是说一个路径,哪些角色可以访问,都在meta下的roles里面保存着接着用户角色分配前端代码实现核心代码通过用户信息上用户的角色数组和路由meta上的角色数组是否包含用户角色......
  • Matrix-Tree 定理
    引入此算法可以解决图上生成树计数问题。值得注意的是,矩阵树定理不能用于存在自环的图。定义设\(G\)是一个图。记邻接矩阵\(A(G)_{i,j}=\#e(i,j),\#e(i,j)\)若\(G\)是无向图记\(D(G)\)表示其度数矩阵,\(D(G)\)满足\(D(G)_{i,i}\)表示第\(i\)点的度数,\(D(G)_{......
  • js有效括号匹配
    //定义一个括号映射constbracketMap=[{left:'[',right:']'},{left:'<',right:'>'},{left:'(',right:')'},......
  • 关于tomcat中servlet的url-pattern匹配规则
    首先需要明确几容易混淆的规则:servlet容器中的匹配规则既不是简单的通配,也不是正则表达式,而是特定的规则。所以不要用通配符或者正则表达式的匹配规则来看待servlet的url-pattern。Servlet2.5开始,一个servlet可以使用多个url-pattern规则,标签声明了与该servlet相应的匹配......
  • Spring-MVC注解支持Ant风格的模糊匹配和Restful风格的接收数据------Spring-MVC框架
    packagecom.alatus.mvc3.controller;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.PathVariable;importorg.springframework.web.bind.annotation.RequestMapping;@ControllerpublicclassIndexController{......
  • 模拟集成电路设计系列博客——6.3.3 动态匹配电流源
    6.3.3动态匹配电流源在电流开关上使用动态技术是为了实现用于音频D/A转换器的高度良好匹配的电流源(大到16bit精度)[Schouwenaars,1988]。这个方式被用于设计一个16-bit的音频D/A转换器,其中6位MSB通过温度计码实现。由于进度要求被限制在剩余位上,一个二进制阵列在他们的设计中被......
  • 10. 正则表达式匹配
    给你一个字符串s和一个字符规律p,请你来实现一个支持'.'和'*'的正则表达式匹配。'.'匹配任意单个字符'*'匹配零个或多个前面的那一个元素所谓匹配,是要涵盖整个字符串s的,而不是部分字符串。示例1:输入:s="aa",p="a"输出:false解释:"a"无法匹配"aa"整个字......
  • Nginx的Location匹配与Rewrite重写
    目录一.Nginx中location与rewrite1.Nginx中常用正则表达式2.location与rewrite的联系和区别二.location概述1.分类2.匹配规则3.优先级4.示例三.rewrite概述1.rewrite功能2.rewrite执行顺序3.跳转实现4.语法格式5.示例5.1.基于域名的跳转5.2.基于旧域名跳转到新......
  • 如何用扫描录入单号工具!自动识别匹配快递名称和记录时间
    功能简介单号扫描录入:用户只需在软件中输入快递单号并回车,系统即可自动识别并录入该单号。自动匹配快递公司:根据用户输入的单号规律,系统能够自动匹配对应的快递公司名称,无需手动选择。实时记录时间:在录入单号的同时,系统会自动记录当前的日期和时间,为包裹的签收状态提供准......