[学习笔记]Tutte矩阵与FKT算法求平面图完美匹配数

第一篇学习笔记,之后可能会更更多这些中文资料比较匮乏,现存题目不多的算法相关的学习笔记。
FKT算法很久之前就听说过了,选择看了下网上的中文资料,然后发现仅有的一两篇博客还没有证明,于是丢掉了。最近做codechef月赛遇到了Tutte矩阵求解完美匹配相关的内容,于是学习了一波证明。于是决定自己写一篇博客,详细介绍一下这个很有意思的东西。

Warning:接下来的东西是博主自己自己理解的,不科学的地方欢迎指出,轻喷。

1.Pfaffian

P ( n ) P(n) P(n)为所有长度为 n n n排列的集合,再定义一个 n × n n\times n n×n n n n为偶数)矩阵 A A A P f a f f i a n Pfaffian Pfaffian P f ( A ) = 1 2 n ⋅ n ! ⋅ ∑ p ∈ P ( n ) s g n ( p ) ∏ i A p 2 i − 1 , p 2 i Pf(A)=\frac{1}{2^n\cdot n!}\cdot \sum_{p\in P(n)} sgn(p) \prod_{i}A_{ {p_{2i-1}},{p_{2i}}} Pf(A)=2nn!1pP(n)sgn(p)iAp2i1,p2i
一般来说,我们只考虑 A A A是斜对称矩阵( A i , j = − A j , i A_{i,j}=-A_{j,i} Ai,j=Aj,i)的情况,那么此时我们可以发现若固定了 ( M 2 i − 1 , M 2 i ) (M_{2i-1},M_{2i}) (M2i1,M2i)的集合(显然可以得到 2 n ⋅ n ! 2^n\cdot n! 2nn!个不同的排列),所有排列对 P f ( A ) Pf(A) Pf(A)的贡献是相同的。也即,令 P M ( n ) PM(n) PM(n)为所有 1 ∼ n 1\sim n 1n二元组划分的集合,例如 P M ( 4 ) = { { ( 1 , 2 ) , ( 3 , 4 ) } , { ( 1 , 3 ) , ( 2 , 4 ) } } PM(4)=\{ \{ (1,2 ), (3,4 ) \},\{ (1,3 ),(2,4 ) \} \} PM(4)={ { (1,2),(3,4)},{ (1,3),(2,4)}},对于 P M ( n ) PM(n) PM(n)中的一个元素 M M M,我们定义 f ( M ) f(M) f(M)为按任意顺序排列 M M M中的 n / 2 n/2 n/2个数对并顺次连接起来(允许交换同一数对中两个数的顺序)所得到的排列 p p p s g n ( p ) ∏ i A p 2 i − 1 , p 2 i sgn(p)\prod_{i}A_{p_{2i-1},p_{2i}} sgn(p)iAp2i1,p2i。那么有 p f ( A ) = ∑ M ∈ P M ( n ) f ( M ) pf(A)=\sum_{M\in PM(n)}f(M) pf(A)=MPM(n)f(M)

一个重要的引理是,对于斜对称矩阵 A A A P f ( A ) 2 = d e t ( A ) Pf(A)^2=det(A) Pf(A)2=det(A)
证明考虑令 g ( π ) = s g n ( π ) ∏ i A i , π i g(\pi)=sgn(\pi) \prod_{i} A_{i,\pi_i} g(π)=sgn(π)iAi,πi,有 d e t ( A ) = ∑ π ∈ P ( n ) g ( π ) det(A)=\sum_{\pi \in P(n)}g(\pi) d

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值