普通生成函数
定义
序列 \(a\) 的普通生成函数(ordinary generating function,OGF)定义为形式幂级数:
\(a\) 既可以是有穷序列,也可以是无穷序列。常见的例子(假设 \(a\) 以 \(0\) 为起点):
- 序列 \(a=\langle 1,2,3\rangle\) 的普通生成函数是 \(1+2x+3x^2\) 。
- 序列 \(a=\langle 1,1,1,\cdots\rangle\) 的普通生成函数是 \(\sum_{n\ge 0}x^n\) 。
- 序列 \(a=\langle 1,2,4,8,16,\cdots\rangle\) 的生成函数是 \(\sum_{n\ge 0}2^nx^n\) 。
- 序列 \(a=\langle 1,3,5,7,9,\cdots\rangle\) 的生成函数是 \(\sum_{n\ge 0}(2n+1)x^n\) 。
换句话说,如果序列 \(a\) 有通项公式,那么它的普通生成函数的系数就是通项公式。
基本运算
考虑两个序列 \(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\) 的普通生成函数。
封闭形式
在运用生成函数的过程中,我们不会一直使用形式幂级数的形式,而会适时地转化为封闭形式以更好地化简。
例如 \(\langle 1,1,1,\cdots\rangle\) 的普通生成函数 \(F(x)=\sum_{n\ge 0}x^n\) ,我们可以发现
那么解这个方程得到
这就是 \(\sum_{n\ge 0}x^n\) 的封闭形式。
考虑等比数列 \(\langle 1,p,p^2,p^3,p^4,\cdots\rangle\) 的生成函数 \(F(x)=\sum_{n\ge 0}p^nx^n\) ,有
等比数列的封闭形式与展开形式是常用的变换手段。
常用的封闭形式与展开形式的转化(方式)
1、用已知封闭形式转换
2、代入已知封闭形式
3、求导(也可以用5式推出)
4、二项式定理:
5、常用
广义牛顿二项式定理
我们重新定义组合数的运算:
注:\(r^{\underline{k}}=r*(r-1)*(r-2)*...*(r-k+1)\)
注意 \(r\) 的范围是复数域。在这种情况下。对于 \(\alpha\in\mathbf{C}\) ,有广义牛顿二项式定理
二项式定理其实是广义牛顿二项式定理的一个特殊情况,而广义牛顿二项式定理是在生成函数的运算中经常要用到的公式。