Note -「普通生成函数 OGF」

\(\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)} \]

后面的还没推出来,咕了

posted @ 2020-10-25 17:20  cirnovsky  阅读(256)  评论(0编辑  收藏  举报