普通生成函数学习笔记
普通生成函数学习笔记
定义
已知一个序列 \(a\),可以是有限项也可以是无限项,定义其生成函数 \(F(x)\) 为
作用
生成函数本质是一个多项式,所以可以进行多项式卷积,方便处理序列问题。假设序列 \(a\) 的生成函数是 \(F(x)\),序列 \(b\) 的生成函数是 \(G(x)\),有
封闭形式
封闭操作可以让生成函数更加易于化简,也就是将无限项的多项式封闭为有限项。有几种比较常见的封闭形式:
-
\(\lang\binom{n-1}{0},\binom{n}{1},\binom{n+1}{2},\cdots\rang=\frac{1}{(1-x)^n}\)。
这本质上是二项式定理的负数形式(也叫做牛顿二项式定理):
\[(1-x)^{-n}=\sum\binom{n-1+i}{i}x^i \] -
\(\lang1,n,n^2,\cdots\rang=\frac{1}{1-nx}\)。
-
\(\sum x^{ni}=\sum (x^n)^i=\frac{1}{1-x^n}\)。
-
\(\lang\binom{n}{0},\binom{n}{1},\binom{n}{2},\cdots\rang=(1+x)^n\)。
本质上就是二项式定理。
-
存在前导零
即 \(\lang0,0,\cdots,0,a_0,a_1,a_2,\cdots\rang\)。假设前面有 \(n\) 个 \(0\),这种情况先把 \(0\) 后面的结果算出来,再乘上一个 \(x^n\) 即可。
-
其他形式
对于其他形式的序列,总能将其拆成多个生成函数的和或差,然后便可以求解。
展开形式
记 \([x^n]F(x)\) 表示 \(x^n\) 的系数。
假设我们成功求出了 \(F(x)\) 的封闭形式,显然无法直接求出 \([x^n]F(x)\),此时需要我们将封闭形式展开。本质上是封闭的逆过程,一般通过设关于 \(F(x)\) 的方程然后求解。
下面以最经典的斐波那契数列的通项公式为例。
设 \(F(x)=\sum f_ix^i\),其中 \(f_i\) 为斐波那契数列(\(f_0=0,f_1=1,f_n=f_{n-1}+f_{n-2}(n\ge 2)\))。
那么有
\[F(x)=xF(x)+x^2F(x)+x \]则 \(F(x)\) 的封闭形式为 \(\frac{x}{1-x-x^2}\)。发现不属于罗列出的特殊情况。有两种方式进行展开:
将 \(x^2+x\) 看作整体
那么相当于前面有一个前导零,那么
\[\begin{aligned}F(x)&=\sum x(x^2+x)^{i}\\&=\sum\sum_{j=0}^{i}x\binom{i}{j}x^{2j}x^{i-j}\\&=\sum\sum_{j=0}^{i}\binom{i}{j}x^{i+j+1}\\&=\sum x^{i}\sum_{j=0}^{i}\binom{i-j-1}{j}\end{aligned} \]于是我们得到 \(f_i=\sum_{j=0}^{i}\binom{i-j-1}{j}\),但这并不是我们熟知的形式。
考虑将此形式转换成两个朴素形式相加
即写作
\[\frac{x}{1-x-x^2}=\frac{A}{1-ax}+\frac{B}{1-bx} \]接着求解待定系数
\[\begin{aligned}\frac{x}{1-x-x^2}&=\frac{A}{1-ax}+\frac{B}{1-bx}\\&=\frac{A(1-bx)+B(1-ax)}{(1-ax)(1-bx)}\\&=\frac{(A+B)-(Ab+aB)x}{1-(a+b)x+abx^2}\end{aligned} \]接着解方程
\[\left\{\begin{matrix}A+B=0\\Ab+aB=-1\\a+b=1\\ab=-1\end{matrix}\right . \]解得
\[\left\{\begin{matrix}A=\frac{1}{\sqrt{5}}\\B=-\frac{1}{\sqrt{5}}\\a=\frac{1+\sqrt{5}}{2}\\b=\frac{1-\sqrt{5}}{2}\end{matrix}\right. \]接着回代,所以有
\[\begin{aligned}F(x)&=\frac{x}{1-x-x^2}\\&=\frac{\frac{1}{\sqrt{5}}}{1-\frac{1+\sqrt{5}}{2}x}+\frac{-\frac{1}{\sqrt{5}}}{1-\frac{1-\sqrt{5}}{2}x}\\&=\frac{1}{\sqrt{5}}\sum (\frac{1+\sqrt{5}}{2}x)^i-\frac{1}{\sqrt{5}}\sum(\frac{1-\sqrt{5}}{2}x)^i\\&=\sum x^i\frac{(\frac{1+\sqrt{5}}{2})^i-(\frac{1-\sqrt{5}}{2})^i}{\sqrt{5}}\end{aligned} \]于是我们得到 \(f_i=\frac{(\frac{1+\sqrt{5}}{2})^i-(\frac{1-\sqrt{5}}{2})^i}{\sqrt{5}}\)