1. 生成函式
1.1 普通型生成函式 OGF
1.1.1 基礎
序列 \(\{f_i\}_{i=0}^n\) 的普通型生成函式是 \(F(x) = \sum_{i=0}^nf_ix^i\)。\(n\) 可以等於 \(\infty\)。
有一些常用的運算規則需要記住:
\[F(x) + G(x) = H(x) \iff h_n = f_n + g_n
\]
\[F(x)G(x) = H(x) \iff h_n = \sum_{i=0}^nf_ig_{n-i}
\]
\[x^kF(x) = \sum_{i \ge k}f_{i - k}x^i
\]
\[F'(x) = \sum_{i \ge 0} (i+1)f_{i+1} x^i
\]
牛頓二項式定理:定義 \(\binom{r}{n} = \frac{r^{\underline{n}}}{n!}\),\(r\) 為任意實數。則:\((x+1)^r = \sum_{i\ge 0}\binom{r}{i}x^i\)
還有一個關於冪級數的和式:\(\sum_{i \ge 0}x^i = \frac{1}{1 - x}\)。
常見的生成函式:
斐波那契序列:\(F(x) = \frac{1}{1 - x - x^2}\)。
卡特蘭序列:\(C(x) = \frac{1 - \sqrt{1 - 4x}}{2x}\)
1.1.1 解遞推式
生成函式可以用來解遞推式。
比如斐波那契數列,卡特蘭數列等。
關鍵在於將每一項都變成生成函式的形式。
比如 \(f_{0} = 0, f_{1} = 1, f_{i} = f_{i - 1} + f_{i - 2}\)。
我們將其變成:\(F(x) = xF(x) + x^2F(x)\) 然後解出 \(F(x)\) 即可。
P4451 [國家集訓隊] 整數的lqp拆分
我們不妨設 \(g_n\) 表示答案,考慮這個序列的生成函式。
如果拆成 \(k\) 個答案即為 \(F(x)^k\),所以 \(G(x) = \sum_{i \le 0}F(x)^i = \frac{1}{1 - F(x)}\)。
然後代入 \(F(x)\) 可以得到:\(F(x) = \frac{1-x-x^2}{1-2x-x^2}\)。
這種時候我們一般會把分母展開成 \((x-x_1)(x-x_2)\) 的形式,然後就可以用冪級數表示出通項了。