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 )
且 αii≠0,βii≠0 α i i ≠ 0 , β i i ≠ 0 ,则
vn=∑k=0nαnkuk⇔un=∑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
将已知条件以矩阵显示表示为
⎡⎣⎢⎢⎢⎢p0p1⋮pn⎤⎦⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢⎢α00α10⋮αn00α11⋮αn1⋯⋯⋱⋯00⋮αnn⎤⎦⎥⎥⎥⎥⎥⎡⎣⎢⎢⎢⎢q0q1⋮qn⎤⎦⎥⎥⎥⎥即p=Aq⎡⎣⎢⎢⎢⎢q0q1⋮qn⎤⎦⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢⎢β00β10⋮βn00β11⋮βn1⋯⋯⋱⋯000βnn⎤⎦⎥⎥⎥⎥⎥⎡⎣⎢⎢⎢⎢p0p1⋮pn⎤⎦⎥⎥⎥⎥即q=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 ,于是
A−1=B A − 1 = B 所以
v=Au⇔u=A−1v=Bv v = A u ⇔ u = A − 1 v = B v
二项式反演公式
定理(二项式反演公式): 假设有两个序列 {an},{bn} { a n } , { b n } ,则
an=∑k=0n(nk)bk⇔bn=∑k=0n(−1)n−k(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+x−1)n=∑k=0n(nk)(x−1)k(3.2) (3.2) x n = ( 1 + x − 1 ) n = ∑ k = 0 n ( n k ) ( x − 1 ) k
(x−1)n=∑k=0n(−1)n−k(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 ! 个排列中,满足
ai≠i a i ≠ i 的排列有多少个?
解决这一问题有以下三种方法
1. 可以通过建立递推关系
Dn=(n−1)(Dn−1+Dn−2) 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)n−k(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 !