Tutte 矩阵解决一般图图的匹配问题

本文探讨了基于线性代数的图匹配问题,详细介绍了Tutte矩阵的定义及性质,阐述了如何通过Tutte矩阵的行列式判断图是否存在完美匹配,并提出了高效的匹配算法。此外,还讨论了一般匹配、带权匹配等问题。

详见 《2017国家集训队论文》“基于线性代数的一般图匹配”

前言:这个东西比带花树好记多了

  • 符号规定:Ai,jA_{i,j}Ai,j 表示第 iii 行第 jjj 列,AI,JA_{I,J}AI,J 表示暴力集合 III 中的行和集合 JJJ 中的列剩下的矩阵,AI,JA^{I,J}AI,J 表示除去 III 中的行和 JJJ 中的列的矩阵,rank Arank\ Arank A 表示矩阵 AAA 的秩

  • Tutte\text{Tutte}Tutte 矩阵,对于一个无向图 G=(V,E)G=(V,E)G=(V,E),定义 GGGTutte\text{Tutte}Tutte 矩阵为一个 n×nn\times nn×n 的矩阵 A~(G)\widetilde {A}(G)A(G)
    A~(G)=xi,j(vivj∈E,i<j)A~(G)=−xi,j(vivj∈E,i>j)A~(G)=0(vivj,otherwise)\widetilde {A}(G)=x_{i,j}(v_iv_j\in E,i<j)\\ \widetilde {A}(G)=-x_{i,j}(v_iv_j\in E,i>j)\\\widetilde {A}(G)=0(v_iv_j,otherwise)A(G)=xi,j(vivjE,i<j)A(G)=xi,j(vivjE,i>j)A(G)=0(vivj,otherwise)
    在这里插入图片描述

  • 定理:一个图 GGG 有完美匹配当且仅当 det⁡A~(G)≠0\det \widetilde {A}(G)\neq0detA(G)=0
    证:我们知道,TutteTutteTutte 矩阵行列式的意义是枚举若干个环(有向)来分割这个图,若存在一个奇环,那么必定存在一个行列式使得这个奇环反向且其它不变,次数行列式系数取相反数,故若行列式不为 0,就一定存在一种全是偶环的分割方法,此时我们在偶环上两两匹配即可
    在这里插入图片描述

  • 判断完美匹配:我们随机一组 xxx 代入求出行列式判断是否为 0,对于值域取 FFF 的 不恒为 0 的 ddd 度多项式,设 r1,r2,…,rnr_1,r_2,\dots,r_nr1,r2,,rn 是在 FFF 中选择的随机数,那么:
    Pr[P(r1,r2,…,rn)=0]=d∣F∣\text{Pr}[P(r_1,r_2,\dots,r_n)=0]=\frac{d}{|F|}Pr[P(r1,r2,,rn)=0]=Fd

  • 求完美匹配的方案:
    枚举 vivjv_iv_jvivj 检查 G−{vi,vj}G-\{v_i,v_j\}G{vi,vj} 有没有完美匹配,复杂度爆炸
    这时我们需要运用 TutteTutteTutte 矩阵的性质,我们知 TutteTutteTutte 矩阵是一个斜对称矩阵,记 A=−ATA=-A^{\text{T}}A=AT

斜对称矩阵的性质

  • 定理1:对于 n×nn\times nn×n 的斜对称矩阵 AAA,若 nnn 为奇数,则 ∣A∣=0|A|=0A=0
    证:∣A∣=∣−AT∣=−∣A∣,∣A∣=0|A|=|-A^{\text{T}}|=-|A|,|A|=0A=AT=A,A=0
  • 定理2:对于一个集合 III 使得 Ai1,Ai2,…,AikA_{i_1},A_{i_2},\dots,A_{i_k}Ai1,Ai2,,Aik 线性无关,则 ∣AI,I∣≠0|A_{I,I}|\neq 0AI,I=0AI,IA_{I,I}AI,I 的秩为 lll
    推论:存在 I={i1,i2,…,ik}I=\{i_1,i_2,\dots,i_k\}I={i1,i2,,ik} 满足 AI,IA_{I,I}AI,I 的秩为 kkk
  • 定理3:一个斜对称矩阵的秩为偶数,由定理2推之
  • 定理4:Ai,j≠0A^{i,j}\neq0Ai,j=0 当且仅当 A{i,j},{i,j}≠0(i≠j)A^{\{i,j\},\{i,j\}}\neq 0(i\neq j)A{i,j},{i,j}=0(i=j)
    必要性:Ai,j≠0⇒rank Ai,j=n−1⇒rank A{i,j},{i,j}≥n−3⇒rank A{i,j},{i,j}=n−2A^{i,j}\neq 0\Rightarrow rank\ A^{i,j}=n-1 \Rightarrow rank\ A^{\{i,j\},\{i,j\}}\ge n-3\Rightarrow rank\ A^{\{i,j\},\{i,j\}}=n-2Ai,j=0rank Ai,j=n1rank A{i,j},{i,j}n3rank A{i,j},{i,j}=n2
    充分性:∣A{i,j},{i,j}∣≠0⇒rank A{i,j},{i,j}=n−2|A^{\{i,j\},\{i,j\}}|\neq 0\Rightarrow rank\ A^{\{i,j\},\{i,j\}}=n-2A{i,j},{i,j}=0rank A{i,j},{i,j}=n2,而 rank Ai,{i,j}=rank Ai,i=n−2rank\ A^{i,\{i,j\}}=rank \ A^{i,i}=n-2rank Ai,{i,j}=rank Ai,i=n2,故 Ai,∅A^{i,\empty}Ai, 的第 jjj 列是其余列的线性组合,故 rank Ai,j=n−1⇒∣Ai,j∣≠0rank \ A^{i,j}=n-1\Rightarrow |A^{i,j}|\neq 0rank Ai,j=n1Ai,j=0
  • 于是我们有了更快捷的判断方法:
    定理:对于图 G=(V,E)G=(V,E)G=(V,E),与其 TutteTutteTutte 矩阵 A~(G)\widetilde A(G)A(G)(A~(G))i,j−1≠0(\widetilde A(G))^{-1}_{i,j}\neq 0(A(G))i,j1=0 当且仅当 G−{vivj}G-\{v_iv_j\}G{vivj} 有完美匹配,中间用到了 A−1=A∗/∣A∣A^{-1}=A^*/|A|A1=A/A,与定理 4
    于是我们可以求 nnn 次逆,复杂度 O(n4)O(n^4)O(n4)

  • 优化:注意到我们的矩阵每次只是去除一行一列,考虑构造出新矩阵的逆
    在这里插入图片描述
    在这里插入图片描述
    A−1A^{-1}A1 做矩阵初等变换即可得到 BBB
    至此,我们可以在 O(n3)O(n^3)O(n3) 的时间构造出完美匹配的方案

  • 一般匹配
    定理:图 GGG 的最大匹配数为 k=12rank A~(G)k=\frac{1}{2}rank\ \widetilde A(G)k=21rank A(G),利用定理2 可以证明
    于是我们可以新建 n−2∗kn-2*kn2k 个点与 nnn 个点连边,就一定有完美匹配,同时可以求出最大匹配
    其实没有必要这么麻烦,我们用高斯消元求出这个最大无关向量组及其所形成的矩阵 AI,IA_{I,I}AI,I 即可

  • 判断一个点是否在最大匹配上:对于新增的 n−2kn-2kn2k 个点,即为 vjv_jvj,原来的点记为 viv_ivi,若 G−{vi,vj}G-\{v_i,v_j\}G{vi,vj} 是完美匹配,那么 viv_ivi 可能不在最大匹配上,我们只需要判断 (A~(G))i,j−1≠0(\widetilde A(G))^{-1}_{i,j}\neq 0(A(G))i,j1=0 即可

  • 带权匹配:
    没有边的用 0 边补上(让其一定存在完美匹配),引入一个新元 yyy,令 A~(G)′=A~(G)∗ywi,j\widetilde A(G)'=\widetilde A(G)*y^{w_{i,j}}A(G)=A(G)ywi,j,于是问题变成求 ∣A~(G)′∣|\widetilde A(G)'|A(G)yyy 的最高项系数,拉格朗日插值
    复杂度 O(Wn3+W2)O(Wn^3+W^2)O(Wn3+W2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FSYo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值