多项式科技
生成函数
序列 a (有穷无穷均可)的普通生成函数定义为形式幂级数:F(x)=n∑anxn。例如:
- a=⟨1,2,3⟩ 的普通生成函数是 1+2x+3x2
- a=⟨1,1,1,…⟩ 的普通生成函数是 n≥0∑xn
- a=⟨1,2,4,8,16,…⟩ 的生成函数是 n≥0∑2nxn
- a=⟨1,3,5,7,9⟩ 的生成函数是 n≥0∑(2n+1)xn
换句话说,如果序列 a 有通项公式,那么它的普通生成函数的系数就是通项公式。
基本运算
两个序列 a,b 的生成函数 F(x),G(x),则 F(x)±G(x) 是序列 ⟨an±bn⟩ 的生成函数。
F(x)±G(x)=n∑(an±bn)xn 乘法运算即卷积,推出 F(x)G(x) 是序列 ⟨i=0∑naibn−i⟩ 的生成函数。
F(x)G(x)=n∑xni=0∑naibn−i 形式幂级数形式 → 封闭形式
例如 a=⟨1,1,1,…⟩ 的普通生成函数是 F(x)=n≥0∑xn,可以发现 F(x)x+1=F(x),于是解方程得到 F(x)=1−x1,这就是 n≥0∑xn 的封闭形式。
又例如等比数列 ⟨1,p,p2,…⟩ 的生成函数 F(x)=n≥0∑pnxn,有 F(x)px+1=F(x) 得 F(x)=1−px1.
a=⟨1,0,1,0,1,…⟩ 的 F(x)=n≥0∑x2n=1−x21
a=⟨1,2,3,4,…⟩ 的 F(x)=n≥0∑(n+1)xn=n≥0∑(xn)′=(1−x1)′=(1−x)21
an=(mn) 的 F(x)=n≥0∑(mn)xn=(1+x)m
Fib 数列定义为 a0=0,a1=1,an=an−1+an−2,于是有
F(x)=xF(x)+x2F(x)−a0x+a1x+a0⟹F(x)=1−x−x2x 应用
- 在许多不同种类的食物中选出 n 个,计算方案数。每种食物的限制如下:
| 汉堡:偶数个 | 可乐:不超高一个 | 鸡腿:不超过两个 | 蜜桃多:奇数个 |
|---|
| 鸡块:4 的倍数个 | 包子:不超过三个 | 土豆片炒肉:不超过一个 | 面包:3 的倍数个 |
构造生成函数:
| n≥0∑x2n=1−x21 | 1+x | 1+x+x2=1−x1−x3 | 1−x2x |
|---|
| n≥0∑x4n=1−x41 | 1+x+x2+x3=1−x1−x4 | 1+x | 1−x31 |
全部乘起来得到答案的生成函数:
F(x)=(1−x2)(1−x)(1−x2)(1−x4)(1−x)(1−x3)(1+x)(1−x3)x(1−x4)(1+x)=(1−x)4x=n≥1∑(n+2n−1)xn 于是答案 =(n+2n−1)=(n+23)
- an+1+an=2n,a0=0,求通项。
f(x)=n=0∑+∞anxn,原式变为 x−1(an+1xn+1)+anxn=(2x)n,再求和有
n=0∑+∞x−1(an+1xn+1)+n=0∑+∞(anxn)=n=0∑+∞(2x)n=1−2x1⟹(x1+1)f(x)=1−2x1 f(x)=(1−2x)(1+x)x=31(1−2x1−1+x1)=31n=0∑+∞[2n−(−1)n]xn 于是 an=31[2n−(−1)n].
- 卡特兰数:一个 n×n 的方阵从 (0,0) 走到 (n,n),不经过对角线的方案数,记作 Cn。
有如下关系:Cn=k=0∑nCn−kCk,构造 f(x)=n=0∑+∞Cnxn,有
f2(x)=C02+(C0C1+C1C0)x+⋯⟹xf2(x)+C0=f(x)⟹f(x)=2x1−1−4x ⟹f(x)=2x1−{1+k=1∑+∞[−2(2k−2k−1)]xk}=k=0∑+∞k+1(2kk)xk⟹Cn=n+1(2nn)