组合数学——二项式反演

liu_jiangwen

      • 反演概述
      • 第一反演公式
      • 二项式反演公式

反演概述

  反演方法是一种求解序列的方法,这种方法可以把一个序列用另一个序列表示出来。
  粗略来说,就是根据两个序列 {f(n)} { f ( n ) } {g(n)} { g ( n ) } 所满足的特殊关系,给出它们的相互表示方法。
  具体来说,为了得到某个组合计数问题的解,我们首先求出相应序列 f(n) f ( n ) 所满足的(累计)关系式

r=1ncn,rf(r)=g(n)(1.1) (1.1) ∑ r = 1 n c n , r f ( r ) = g ( n )

其中, g(n) g ( n ) 是已知序列,然后从中解出
r=1ndn,rg(r)=f(n)(1.2) (1.2) ∑ r = 1 n d n , r g ( r ) = f ( n )

(1) ( 1 ) (2) ( 2 ) 两式互为反演公式。

  • 互逆公式:若由公式 A A 可推出公式 B B ,由公式 B B 也能推出公式 A A ,则称公式 A A B B 互逆。
  • 反演公式:如果公式 A A B B 互逆,则称命题“公式 A A 成立当且仅当公式 B B 成立”是反演公式。
  • 反演技巧:为了求 an=|An| a n = | A n | ,引进 bn=|Bn| b n = | B n | ,其中 bn b n 是易求的或者已知的。先建立 bn b n {ak} { a k } 的表达公式 A A ,然后应用反演公式,得到公式 B B ,此公式是用 {bk} { b k } 表示 an a n 的公式,从而求出 an a n

第一反演公式

定理(第一反演公式):设 n n 是一个自然数,多项式序列 {pn} { p n } {qn} { q n } (其中 pn,qn p n , q n 均为 n n 次多项式)有下列关系

pn(x)=k=0nαnkqk(x),qn(x)=k=0nβnkpk(x)(2.1) (2.1) p n ( x ) = ∑ k = 0 n α n k q k ( x ) , q n ( x ) = ∑ k = 0 n β n k p k ( x )

αii0,βii0 α i i ≠ 0 , β i i ≠ 0 ,则
vn=k=0nαnkukun=k=0nβnkvk(2.2) (2.2) v n = ∑ k = 0 n α n k u k ⇔ u n = ∑ k = 0 n β n k v k

证明:令
p=(p0,p1,...,pn)T,q=(q0,q1,...,qn)T p = ( p 0 , p 1 , . . . , p n ) T , q = ( q 0 , q 1 , . . . , q n ) T
u=(u0,u1,...,un)T,v=(v0,v1,...,vn)T u = ( u 0 , u 1 , . . . , u n ) T , v = ( v 0 , v 1 , . . . , v n ) T
将已知条件以矩阵显示表示为
p0p1pn=α00α10αn00α11αn100αnnq0q1qnp=Aqq0q1qn=β00β10βn00β11βn1000βnnp0p1pnq=Bp [ p 0 p 1 ⋮ p n ] = [ α 00 0 ⋯ 0 α 10 α 11 ⋯ 0 ⋮ ⋮ ⋱ ⋮ α n 0 α n 1 ⋯ α n n ] [ q 0 q 1 ⋮ q n ] 即 p = A q [ q 0 q 1 ⋮ q n ] = [ β 00 0 ⋯ 0 β 10 β 11 ⋯ 0 ⋮ ⋮ ⋱ 0 β n 0 β n 1 ⋯ β n n ] [ p 0 p 1 ⋮ p n ] 即 q = B p

于是, p=Aq=ABp p = A q = A B p .由于p是线性空间 R[x] R [ x ] 的一组基,所以 AB=I A B = I ,于是 A1=B A − 1 = B 所以 v=Auu=A1v=Bv v = A u ⇔ u = A − 1 v = B v


二项式反演公式

定理(二项式反演公式): 假设有两个序列 {an},{bn} { a n } , { b n } ,则

an=k=0n(nk)bkbn=k=0n(1)nk(nk)ak(3.1) (3.1) a n = ∑ k = 0 n ( n k ) b k ⇔ b n = ∑ k = 0 n ( − 1 ) n − k ( n k ) a k

定理证明:
xn=(1+x1)n=k=0n(nk)(x1)k(3.2) (3.2) x n = ( 1 + x − 1 ) n = ∑ k = 0 n ( n k ) ( x − 1 ) k
(x1)n=k=0n(1)nk(nk)xk(3.3) (3.3) ( x − 1 ) n = ∑ k = 0 n ( − 1 ) n − k ( n k ) x k
(3.2) ( 3.2 ) (3.3) ( 3.3 ) 以及第一反演公式即可得到二项式反演公式 (3.1) ( 3.1 )
例(错排问题):在 n n 个数字形成的 n! n ! 个排列中,满足 aii a i ≠ i 的排列有多少个?
  解决这一问题有以下三种方法
  1. 可以通过建立递推关系 Dn=(n1)(Dn1+Dn2) D n = ( n − 1 ) ( D n − 1 + D n − 2 )
  2. 利用容斥原理
  3. 利用二项式反演公式
  利用二项式反演公式主要过程如下:
  记 Di D i 为恰好有 i i 个数字不在原来的位置上的排列的数目,则有 n!=nk=0(nk)Dk n ! = ∑ k = 0 n ( n k ) D k ,由二项式反演公式,可以得到 Dn=nk=0(1)nk(nk)n!=n!nr=0(1)r1r! D n = ∑ k = 0 n ( − 1 ) n − k ( n k ) n ! = n ! ∑ r = 0 n ( − 1 ) r 1 r !

你可能感兴趣的:(ACM竞赛,组合数学,反演,算法原理)