In mathematics you don't understand things, you just get used to them.

$\mathbf{OGF}$ 的定义

对于一个序列 $a_{1},a_{2},\cdots$,我们称:

$$ G(x)=\sum_{i=0}^{\infty}a_{i}x^{i} $$

为序列 $a$ 的 $\mathbf{OGF}$ 即普通生成函数 ($\texttt{Ordinary Generating Function}$)。

同时因为我们不关心 $x$ 的取值,因此 $\sum_{i=1}^{+\infty}a_{i}x^{i}$ 又称作以 $x$ 为自由元的形式幂级数。 -- 摘自 自为风月马前卒

一个例子

举个例子,序列:

$$ \left(^{n}_{0}\right),\left(^{n}_{1}\right),\cdots,\left(^{n}_{n}\right) $$

的 $\mathbf{OGF}$ 为(二项式定理):

$$ G(x)=(1+x)^{n} $$

由等比数列求和公式,有一个常用的等式:

$$ \sum_{i=0}^{\infty}x^{i}=\frac{1-x^{\infty}}{1-x} $$

因为指数为 $\infty$,所以 $x^{\infty}$ 趋近于 $0$,箭头方向随便打,因为我们并不关心 $x$ 的取值。

$$ \sum_{i=0}^{\infty}x^{i}=\frac{1}{1-x} $$

这个等式还有一个重要的运用,我们把 $x$ 替换成 $kx$ 即可得:

$$ \sum_{i=0}^{\infty}(kx)^{i}=\frac{1}{1-kx} $$

后文的用 $\mathbf{OGF}$ 求序列的通项公式里面这个东西很有用的。

$\texttt{Fibonacci}$ 序列的生成函数求法

定义一个序列

$$ F_{i}=\begin{cases} 1,i\in[0,1] \\ \displaystyle F_{i-1}+F_{i-2},i\in[2,\infty) \end{cases} $$

则我们称 $F$ 为 $\texttt{Fibonacci}$ 序列。

接下来我们来推导其生成函数:

$$ \begin{aligned} G(x)&=\sum_{i=0}^{\infty}F_{i}x^{i} \\ G(x)&=1+x+2x^{2}+3x^{3}+\cdots \\ xG(x)&=x+x^{2}+2x^{3}+3x^{4}+\cdots \\ x^{2}G(x)&=x^{2}+x^{3}+2x^{4}+3x^{5}+\cdots \end{aligned} $$

这里运用初中数学中经常用的到错位相减这一小技巧,可得

$$ G(x)-xG(x)-x^{2}G(x)=1 $$

即可得

$$ G(x)=\frac{1}{1-x-x^{2}} $$

至此,我们已经求出了 $\texttt{Fibonacci}$ 序列的 $\mathbf{OGF}$ 了。

利用生成函数求数列通项

以前文提到的 $\texttt{Fibonacci}$ 为例。

首先我们知道其 $\mathbf{OGF}$ 为:

$$ G(x)=\frac{1}{1-x-x^{2}} $$

待定系数一下分母我们就可以得到:

$$ G(x)=\frac{1}{(1-\frac{1+\sqrt{5}}{2}x)(1-\frac{1-\sqrt{5}}{2}x)} $$

~后面的还没推出来,咕了~

maths combinatorics polynomials

Solution -「洛谷 P4451」「国家集训队」整数的 lqp 拆分
上一篇 «
Solution -「洛谷 P5048」「YunoOI 2019 模拟赛」Yuno loves sqrt technology III
» 下一篇