递推关系描述“当前状态由过去状态决定”的规律,是离散数学、算法分析与组合计数中的核心工具。
递推关系由两部分构成:
示例:斐波那契数列
Fn=Fn−1+Fn−2,F0=0, F1=1.
一般形式:
an=ran−1+b.
若 r=1,通解可写为
an=rna0+br−1rn−1.
给定 an=2an−1+3, a0=1,求 an。
解:
an=2n⋅1+3(2n−1)=4⋅2n−3.
一般形式:
an=c1an−1+c2an−2.
令特征方程
λ2−c1λ−c2=0.
- 两个不同根 λ1,λ2:an=Aλ1n+Bλ2n;
- 重根 λ:an=(A+Bn)λn。
对 Fn=Fn−1+Fn−2,特征方程为
λ2−λ−1=0.
两根为
ϕ=21+5, ψ=21−5.
故
Fn=5ϕn−ψn.
求解
an−3an−1=2n,a0=0.
解:
- 齐次解:an(h)=C⋅3n。
- 设特解 an(p)=k⋅2n,代入得
k2n−3k2n−1=2n⇒−2k=1⇒k=−2.
- 总解:an=C3n−2⋅2n。
- 用 a0=0 得 C=2。
所以
an=2⋅3n−2n+1.
对序列 {an},其 OGF 为 A(x)=∑n=0∞anxn。
| 运算 | 序列 | 生成函数 |
|---|
| 线性性质 | αan+βbn | αA(x)+βB(x) |
| 平移(右移) | 0,…,0,a0,a1,… | xkA(x) |
| 差分 | an−an−1 | (1−x)A(x) |
| 前缀和 | ∑i=0nai | 1−xA(x) |
| 卷积 | ∑i=0naibn−i | A(x)B(x) |
| 导数 | (n+1)an+1 | A′(x) |
- 1−x1=∑n=0∞xn (序列 1,1,1,…)
- (1−x)k1=∑n=0∞(k−1n+k−1)xn (多重集组合)
- (1+x)n=∑k=0n(kn)xk (二项式)
求用 1分、2分、5分硬币组成 n 分钱的方案数。
解:生成函数为
A(x)=(1+x+x2+…)(1+x2+x4+…)(1+x5+x10+…)
=(1−x)(1−x2)(1−x5)1。
方案数即为 xn 的系数。
对于排列问题(元素有顺序),使用 EGF:
A^(x)=n=0∑∞ann!xn.
若 an,bn 分别对应 A^(x),B^(x),则 A^(x)B^(x) 对应序列:
cn=i=0∑n(in)aibn−i.
这恰好对应了“先从 n 个位置选 i 个放 a,剩下的放 b”的结构。
错排序列的 EGF 为:
D^(x)=1−xe−x。
通过展开 e−x 与 (1−x)−1 的乘积可直接得到 Dn 的通项公式。
求解 an=2an−1+an−2,a0=0,a1=1(白银分割比相关)。
Check Solution
特征方程 λ2−2λ−1=0,解得 λ=1±2。
通解 an=A(1+2)n+B(1−2)n。
代入初值得 an=22(1+2)n−(1−2)n。
求 (1−x)31 的 xn 项系数。
Check Solution
根据广义二项式定理:(3−1n+3−1)=(2n+2)=2(n+2)(n+1)。
用红、蓝、绿三种颜色涂 n 个排成一行的格子,要求红色必须出现偶数次,求方案数。
Check Solution
红色的 EGF:2ex+e−x;蓝/绿的 EGF:ex。
总 EGF:G^(x)=2ex+e−x⋅ex⋅ex=21(e3x+ex)。
xn/n! 的系数为 21(3n+1)。
Catalan 数的递推式为 Cn=∑i=0n−1CiCn−1−i。试写出其生成函数方程。
Check Solution
设 C(x) 为生成函数,则 C(x)=xC2(x)+1。
解得 C(x)=2x1−1−4x。