生成函式與多項式

rlc202204發表於2024-03-23

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)\) 的形式,然後就可以用冪級數表示出通項了。

相關文章