Note -「Generating Functions」
OGF 的定义
对于一个序列 a1,a2,⋯,我们称:
G(x)=i=0∑∞aixi
为序列 a 的 OGF 即普通生成函数 (Ordinary Generating Function)。
同时因为我们不关心 x 的取值,因此 ∑i=1+∞aixi 又称作以 x 为自由元的形式幂级数。 -- 摘自 自为风月马前卒
§ 一个例子
举个例子,序列:
(0n),(1n),⋯,(nn)
的 OGF 为(二项式定理):
G(x)=(1+x)n
由等比数列求和公式,有一个常用的等式:
i=0∑∞xi=1−x1−x∞
因为指数为 ∞,所以 x∞ 趋近于 0,箭头方向随便打,因为我们并不关心 x 的取值。
即
i=0∑∞xi=1−x1
这个等式还有一个重要的运用,我们把 x 替换成 kx 即可得:
i=0∑∞(kx)i=1−kx1
后文的用 OGF 求序列的通项公式里面这个东西很有用的。
Fibonacci 序列的生成函数求法
定义一个序列
Fi={1,i∈[0,1]Fi−1+Fi−2,i∈[2,∞)
则我们称 F 为 Fibonacci 序列。
接下来我们来推导其生成函数:
G(x)G(x)xG(x)x2G(x)=i=0∑∞Fixi=1+x+2x2+3x3+⋯=x+x2+2x3+3x4+⋯=x2+x3+2x4+3x5+⋯
这里运用初中数学中经常用的到错位相减这一小技巧,可得
G(x)−xG(x)−x2G(x)=1
即可得
G(x)=1−x−x21
至此,我们已经求出了 Fibonacci 序列的 OGF 了。
§ 利用生成函数求数列通项
以前文提到的 Fibonacci 为例。
首先我们知道其 OGF 为:
G(x)=1−x−x21
待定系数一下分母我们就可以得到:
G(x)=(1−21+5x)(1−21−5x)1
后面的还没推出来,咕了