liu_jiangwen
反演概述
反演方法是一种求解序列的方法,这种方法可以把一个序列用另一个序列表示出来。
粗略来说,就是根据两个序列
{f(n)}
和
{g(n)}
所满足的特殊关系,给出它们的相互表示方法。
具体来说,为了得到某个组合计数问题的解,我们首先求出相应序列
f(n)
所满足的(累计)关系式
∑r=1ncn,rf(r)=g(n)(1.1)
其中,
g(n)
是已知序列,然后从中解出
∑r=1ndn,rg(r)=f(n)(1.2)
(1)
与
(2)
两式互为反演公式。
- 互逆公式:若由公式
A
可推出公式
B
,由公式
B
也能推出公式
A
,则称公式
A
、
B
互逆。
- 反演公式:如果公式
A
、
B
互逆,则称命题“公式
A
成立当且仅当公式
B
成立”是反演公式。
- 反演技巧:为了求
an=|An|
,引进
bn=|Bn|
,其中
bn
是易求的或者已知的。先建立
bn
由
{ak}
的表达公式
A
,然后应用反演公式,得到公式
B
,此公式是用
{bk}
表示
an
的公式,从而求出
an
。
第一反演公式
定理(第一反演公式):设
n
是一个自然数,多项式序列
{pn}
,
{qn}
(其中
pn,qn
均为
n
次多项式)有下列关系
pn(x)=∑k=0nαnkqk(x),qn(x)=∑k=0nβnkpk(x)(2.1)
且
αii≠0,βii≠0
,则
vn=∑k=0nαnkuk⇔un=∑k=0nβnkvk(2.2)
证明:令
p=(p0,p1,...,pn)T,q=(q0,q1,...,qn)T
u=(u0,u1,...,un)T,v=(v0,v1,...,vn)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=Aq=ABp
.由于p是线性空间
R[x]
的一组基,所以
AB=I
,于是
A−1=B
所以
v=Au⇔u=A−1v=Bv
二项式反演公式
定理(二项式反演公式): 假设有两个序列
{an},{bn}
,则
an=∑k=0n(nk)bk⇔bn=∑k=0n(−1)n−k(nk)ak(3.1)
定理证明:
xn=(1+x−1)n=∑k=0n(nk)(x−1)k(3.2)
(x−1)n=∑k=0n(−1)n−k(nk)xk(3.3)
由
(3.2)
、
(3.3)
以及第一反演公式即可得到二项式反演公式
(3.1)
。
例(错排问题):在
n
个数字形成的
n!
个排列中,满足
ai≠i
的排列有多少个?
解决这一问题有以下三种方法
1. 可以通过建立递推关系
Dn=(n−1)(Dn−1+Dn−2)
2. 利用容斥原理
3. 利用二项式反演公式
利用二项式反演公式主要过程如下:
记
Di
为恰好有
i
个数字不在原来的位置上的排列的数目,则有
n!=∑nk=0(nk)Dk
,由二项式反演公式,可以得到
Dn=∑nk=0(−1)n−k(nk)n!=n!∑nr=0(−1)r1r!