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

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

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

  • 符号规定: A i , j A_{i,j} Ai,j 表示第 i i i 行第 j j j 列, A I , J A_{I,J} AI,J 表示暴力集合 I I I 中的行和集合 J J J 中的列剩下的矩阵, A I , J A^{I,J} AI,J 表示除去 I I I 中的行和 J J J 中的列的矩阵, r a n k   A rank\ A rank A 表示矩阵 A A A 的秩

  • Tutte \text{Tutte} Tutte 矩阵,对于一个无向图 G = ( V , E ) G=(V,E) G=(V,E),定义 G G G Tutte \text{Tutte} Tutte 矩阵为一个 n × n n\times n n×n 的矩阵 A ~ ( G ) \widetilde {A}(G) A (G)
    A ~ ( G ) = x i , j ( v i v j ∈ E , i < j ) A ~ ( G ) = − x i , j ( v i v j ∈ E , i > j ) A ~ ( G ) = 0 ( v i v j , o t h e r w i s e ) \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)
    在这里插入图片描述

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

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

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

斜对称矩阵的性质

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

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

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

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

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

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

FSYo

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

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

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

打赏作者

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

抵扣说明:

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

余额充值