生成函数
生成函数
普通生成函数(ordinary generating function,OGF)
定义序列 \(a\) 的普通生成函数为:
\(a\) 既可以是有穷序列,也可以是无穷序列。
例子:
1、序列 \(a=\langle 1,2,3\rangle\) 的 OGF 为 \(1 + 2x + 3x^2\);
2、序列 \(a=\langle 1,1, 1, \cdots\rangle\) 的 OGF 为 \(\sum_{n=0}x^n\);
封闭形式
在运用生成函数的过程中,我们不会一直使用形式幂级数的形式,而会适时地转化为封闭形式以更好地化简。
例子:
1、序列 \(a=\langle 1,1, 1, \cdots\rangle\) 的 OGF 的封闭形式为:
2、序列 \(a=\langle a,a, a, \cdots\rangle\) 的 OGF 的封闭形式为:
3、序列 \(a=\langle 1,p, p^2, \cdots\rangle\) 的 OGF 的封闭形式为:
4、序列 \(a=\langle \binom{m}{0},\binom{m}{1}, \binom{m}{2}, \cdots\rangle\) 的 OGF 的封闭形式为:
斐波那契数列的生成函数
斐波那契数列定义为:
斐波那契数列 \(a=\langle 0, 1, 1, 2, \cdots\rangle\) 的 OGF 的封闭形式为:
现在需要额外思考的是,如何将 \(F(x)\) 从封闭形式再一次转化为形式幂级数的形式,进而求出斐波那契的通项公式。
考虑求解一个待定系数的方程:
通分得到:
待定项系数相等,我们得到:
解得:
得到斐波那契数列的通项公式:
基本运算
加减
考虑两个序列 \(a,b\) 的普通生成函数,分别为 \(F(x),G(x)\)。那么有:
因此 \(F(x)\pm G(x)\) 是序列 \(\langle a_n\pm b_n\rangle\) 的普通生成函数。
乘法
考虑乘法运算,也就是卷积:
因此 \(F(x)G(x)\) 是序列 \(\langle \sum_{i=0}^n a_ib_{n-i} \rangle\) 的普通生成函数。
若令 \(G(x) = \frac{1}{1-x}\),那么 \(F(x)G(x)\) 所对应的序列为序列 \(a\) 的前缀和序列。
其他
\(x F(x)\) 对应的序列为序列 \(a\) 右移一位后所对应的序列。
\(\frac{F(x)-a_0}{x}\) 对应的序列为序列 \(a\) 左移一位后所对应的序列。