生成函数学习笔记
普通生成函数
定义
我们定义序列\(<a>\)的普通生成函数为
\[\sum_na_nx^n
\]
运算
设序列\(<a>,<b>\)的生成函数分别为\(F(x),G(x)\),我们定义加法
\[F(x)+G(x)=\sum_n(a_n+b_n)x^n
\]
这就是说,\(F(x)+G(x)\)是序列\(<a+b>\)的生成函数.
我们定义乘法为他们的卷积
\[F(x)G(x)=\sum_nx^n\sum_{i=0}^na_ib_{n-i}
\]
即\(F(x)G(x)\)是序列\(\langle\sum_{i=0}^{n}a_ib_{n-i}\rangle\)的生成函数.
一些有趣的trick
在生成函数的定义下,设\(\langle1,1,1...\rangle\)的生成函数为\(F(x)\),我们有
\[F(x)x+1=F(x)
\]
我们怎么理解这件事?先考虑\(F(x)x\)所对应的原序列为\(\langle 0,1,1,1,1,\rangle\),想要变回原序列,我们只需让这个序列的零次项系数变为\(1\),也就是\(+1\)即可.
由上式,我们可以得到
\[F(x)=\frac{1}{1-x}
\]
类似地,我们可以得到等比数列\(\langle 1,p^2,p^3,p^4...\rangle\)的生成函数\(G(x)\)满足
\[G(x)px+1=G(x)
\\G(x)=\frac{1}{1-px}
\]
这是生成函数的常见手段.
麦克劳林展开
通过麦克劳林展开可以计算生成函数.,计算公式如下:
\[f(x)=\sum_{i=0}^{\infty}\frac{f^{(n)}(0)}{i!}x^n
\]
其中\(f^{n}(0)\)表示\(f(x)\)在\(x_0=0\)处的\(n\)阶导数.利用麦克劳林展开,我们可以快速计算.
广义二项式
反转上指标
所谓反转上指标,级考虑组合数中出现负数时,我们将其变为正数.下面给出公式.
\[\begin{pmatrix}n\\m\end{pmatrix}=(-1)^m\begin{pmatrix}m-n-1\\m\end{pmatrix}
\]
广义二项式定理
\[\forall a,b,n\in\R,(a+b)^n=\sum_{i=0}^n\begin{pmatrix}n\\i\end{pmatrix}a^ib^{n-i}
\]
值得指出的是当\(n\notin\Z^+\)时,\(i\)无法求和到\(n\),所以\(i\)将求和到\(+\infty\).
利用上述工具,用生成函数解体变得轻而易举.