生成函式 學習筆記

ChthollyNS發表於2024-08-02

生成函式 學習筆記

有一部分沒地方寫的組合數學,先寫這裡。

0. pre - learning

1. 上升/下降冪:

\[n^{\underline{k}} = n \times (n-1) \times \cdots \times (n-k+1) \]

稱為 \(n\) 的下降冪。

同理:

\[n^{\overline{k}} = n \times (n-1) \times \cdots \times (n+k-1) \]

稱為 \(n\) 的上升冪。

2. 組合數:

\[\operatorname{C}^m_n = \binom{n}{m} = \dfrac{n!}{m!(n-m)!} \]

組合數的幾個重要公式:

對稱性:

\[\binom{n}{m} = \binom{n}{n-m} \]

吸收性:

\[\binom{n}{m} = \dfrac{n}{m}\binom{n-1}{m-1} \]

遞推:

\[\binom{n}{m} = \binom{n-1}{m-1} + \binom{n-1}{m} \]

證明:不妨直接拆組合數。

也可以考慮楊輝三角。

上指標求和:

\[\sum_{i=m}^n \binom{i}{m} = \binom{n+1}{m+1} \]

證明:

\[\sum_{i=m}^n \binom{i}{m} = \binom{m}{m} +\binom{m+1}{m}+\cdots+\binom{n}{m} \]

因為 \(\binom{m}{m} = 1 = \binom{m+1}{m+1}\),所以可以用上文的遞推公式將右式的前兩項合併得到 \(\binom{m+1}{m+1}+\binom{m+1}{m} = \binom{m+2}{m+1}\)

接著,可以將 \(\binom{m+2}{m+1}\)\(\binom{m+2}{m}\) 合併得到 \(\binom{m+3}{m+1}\)

以此類推即可。

3. (廣義)二項式定理:

\[(a+b)^n = \sum_{k=0}^{n}\dbinom{n}{k} a^{n-k}b^{k} \]

我們考慮更改組合數的定義。

廣義二項式係數:

\[\binom{\alpha}{k} = \dfrac{\alpha^{\underline{k}}}{k!},\color{orange}\alpha \in\mathbb{R},k\in\color{orange}\mathbb{N} \]

廣義二項式定理:

\[(a+b)^\alpha = \sum_{k=0}^{\infty}\dbinom{\alpha}{k} a^{\alpha-k}b^{k} \]

證明需要求導,不會。

上指標反轉:

\[\binom{n}{m} = (-1)^m\binom{m-n-1}{m} \]

證明:
考慮 \(n^{\underline{m}} = n(n-1)\cdots (n-m+1) = (-1)^m(-n)(-n+1)\cdots(m-n-1)=(m-n-1)^{\underline{m}}\)

等價於右式。證畢。

4. 多項式定理:

對於 \((x_1+x_2+\cdots+x_t)^n\) 的展開式,\(x_1^{n_1}x_2^{n_2}\cdots x_t^{n_t}\) 項的係數是:

\[\dfrac{n!}{n_1!n_2!\cdots n_t!},\sum n_i = n \]

證明:考慮組合意義。

先從 \(n\) 中選擇 \(n_1\) 個式子,方案數為 \(\dbinom{n}{n_1}\)

接著,從 \(n-n_1\) 中選擇 \(n_2\) 個式子,方案數為 \(\dbinom{n-n_1}{n_2}\)

\(\cdots\)

最後,從 \(n-n_1-n_2-\cdots-n_{t-1}\) 中選擇 \(n_t\) 個式子,方案數為 \(\dbinom{n-n_1-n_2-\cdots-n_{t-1}}{n_t}\)

由乘法原理,方案數為 \(\dbinom{n}{n_1}\dbinom{n-n_1}{n_2}\cdots\dbinom{n-n_1-n_2-\cdots-n_{t-1}}{n_t}\)

能夠化簡為:\(\dfrac{n!}{n_1!n_2!\cdots n_t!}\)

證畢。

值得注意的是,這個問題等價於可重集的排列方案數。

1. 冪級數展開

由於廣義二項式定理的存在,我們可以對某些式子進行展開。以下是幾個例子:

\[\begin{aligned} \dfrac{1}{x-1} &= \sum_{k=0}^{\infty}\binom{-1}{k}(-x)^k \\&= \sum_{k=0}^{\infty}\dfrac{(-1)^kk!}{k!}(-x)^k \\&= \sum_{k=0}^{\infty} x^k \\&= 1+x+x^2+\cdots \end{aligned} \]

\[\dfrac{1}{x+1} = 1-x+x^2-x^3+x^4+\cdots \]

需要記住另外幾個常見展開:

\[e^x=\sum_{n\ge 0} \dfrac{1}{n!}x^n \]

\[xe^x=\sum_{n\ge 1}\dfrac{n}{n!}x^n \]

\[e^{Cx}=\sum_{n\ge 0} \dfrac{C^n}{n!}x^n \]

\[\ln(1-x) = -\sum_{n\ge \color{orange}1}\color{qaq}\dfrac{1}{n}x^n \]

\[\dfrac{e^x+e^{-x}}{2}=\sum_{n\ge0}\dfrac{1}{(2n+1)!}x^{2n+1} \]

\[\dfrac{e^x-e^{-x}}{2}=\sum_{n\ge0}\dfrac{1}{(2n)!}x^{2n} \]

可以使用泰勒公式證明,但是 OI 中沒必要。

注:我們不關心是否收斂,因為在生成函式中,重要的是係數而非值。

2.OGF

對於數列 \(A\),其 OGF 定義為:

\[A(x)=\sum_{i\ge0}A_ix^i \]

OFG 與無標號計數有關。

例:BZOJ3028 食物

首先分別給出每個條件對應的生成函式。

\(0\)\(1\) 個:\(1+x\)

\(0\)\(1\)\(2\) 個:\(1+x+x^2\)

\(0\)\(1\)\(2\)\(3\) 個:\(1+x+x^2+x^3\)

奇數個:\(\dfrac{x}{1-x^2}\)

偶數個:\(\dfrac{1}{1-x^2}\)

\(3\) 的倍數:\(\dfrac{1}{1-x^3}\)

\(4\) 的倍數:\(\dfrac{1}{1-x^4}\)

我們將這些生成函式的式子相乘,得到:

\[\begin{aligned} f(x)&=\dfrac{x}{(1-x)^4} \\&= x\sum_{k=0}^{\infty} \binom{-4}{k}(-x)^k \\&= x\sum_{k=0}^{\infty}(-1)^k\binom{k+3}{3}(-x)^k \\&= \sum_{k=1}^{\infty}\binom{k+2}{3}x^{k} \end{aligned} \]

\([x^n]f(x)\) 就是選 \(n\) 個的答案。

正確性:多項式乘法等價於列舉在每一個物件中選擇了多少個。

生成函式可以用來求數列的通項公式。

引入:化簡 \(\sum_{i=0}^{\infty}(i+1)x^i\)

\(S=1+2x+3x^2+\cdots\),則 \(xS=x+2x^2+3x^3+\cdots\)

相減,得:\((1-x)S=1+x+x^2+x^3+\cdots=\dfrac{1}{1-x}\)

解方程,得: \(S=\dfrac{1}{(1-x)^2}\)

例:求 fib 數列的通項公式。

即求出 \(f_0=\color{orange}0\color{black},f_1=1,f_n=f_{n-2}+f_{n-1}\) 的通項公式。

依照上例子,我們設生成函式 \(f(x)=\sum_{i=0}^{\infty}f_ix^i\)

那麼有:

\[\begin{aligned} f(x) &= \sum_{i=0}^{\infty}f_ix^i \\ &= f_0+f_1x+\sum_{i=2}^{\infty} (f_{i-2}+f_{i-1}) x^i \\ &= x+\sum_{i=2}^{\infty} (f_{i-1}x^{n-1}\times x+f_{i-2}x^{n-2}\times x^2) \\ &= x+x\sum_{i=0}^{\infty}f_ix^i+x^2\sum_{i=0}^{\infty}f_ix^i \\ &= x+xf(x)+x^2f(x) \end{aligned} \]

所以 \(F=\dfrac{x}{1-x-x^2}\)。(封閉形式)

將這個式子進行因式分解,得到 \(\dfrac{x}{(1-\frac{1+\sqrt{5}}{2}x)(1-\frac{1-\sqrt{5}}{2})x}\)

考慮到我們能夠計算出形如 \(\dfrac{c}{1-kx}\) 的式子的值,因此可以使用待定係數法,將封閉形式變為 \(\dfrac{A}{1-\frac{1+\sqrt{5}}{2}x}+\dfrac{B}{1-\frac{1-\sqrt{5}}{2}x}\)

於是有:

\[A\times (1-\dfrac{1-\sqrt{5}}{2}x) +B\times (1-\dfrac{1+\sqrt{5}}{2}x) = x \\ A+B-A(\dfrac{1-\sqrt{5}}{2}x)-B(\dfrac{1+\sqrt{5}}{2}x)=x \]

由於 \(A+B=0\),有:

\[-A\dfrac{1-\sqrt{5}}{2}-B\dfrac{1+\sqrt{5}}{2}=1 \\ A=\dfrac{1}{\sqrt{5}},B=-\dfrac{1}{\sqrt{5}} \]

所以:

\[F=-\dfrac{1}{\sqrt{5}} \times \dfrac{1}{1-\frac{1-\sqrt{5}}{2}x} + \dfrac{1}{\sqrt{5}}\times \dfrac{1}{1-\frac{1+\sqrt{5}}{2}x} \]

按一般方法進行展開,得:

\[f(x)=\sum_{n=0}^{\infty}(\dfrac{1-\sqrt{5}}{2})^nx^n \times (-\dfrac{1}{\sqrt{5}}) + \sum_{n=0}^{\infty}(\dfrac{1+\sqrt{5}}{2})^nx^n \times (\dfrac{1}{\sqrt{5}}) \]

由此,我們得到了 fib 數列的通項公式:

\[fib_n=[x^n]f(x)=\dfrac{(\dfrac{1+\sqrt{5}}{2})^n-(\dfrac{1-\sqrt{5}}{2})^n}{\sqrt{5}} \]

4.EGF

定義一個數列 \(A\) 的指數型生成函式 EGF 為:

\[f(x)=\sum_{i=0}^{\infty}f_i\dfrac{x^i}{i!} \]

EGF 一般與有標號計數有關,考慮其組合意義:

假設我們要從 \(r\) 個數中分別選擇 \(x_1,x_2,x_3\)排成一排,記答案為 \(a_r\)。由多項式定理,\(a_r=\dfrac{r!}{x_1!x_2!x_3!}\)

\(a_r=\sum_{x_1+x_2+x_3=r}\dfrac{r!}{x_1!x_2!x_3!}\),而我們在定義 EGF 時就已經預處理好了分母,但是沒有處理分子 \(r!\)

\(f(i)=\sum_{i=0}^{\infty}\dfrac{x^i}{i!}\),有 \(a_r=r!\times [x^r]f(x)\)。也就是在 OGF 的基礎上再乘以 \(r!\)

例:用紅藍綠 \(3\) 種顏色去塗 \(1\times n\) 的棋盤,每格塗一種顏色,求使得被塗成紅色和藍色的方格數均為偶數的的塗色方法數。

不妨設 \(G(x)=(1+\dfrac{x^2}{2!}+\dfrac{x^4}{4!}\cdots)^2(1+\dfrac{x}{1!}+\dfrac{x^2}{2!}+\dfrac{x^3}{3!}+\cdots)\)

則:

\[\begin{aligned} G(x)&=(\dfrac{e^x+e^{-x}}{2})^2e^x \\ &=\dfrac{e^{3x}+2e^x+e^{-x}}{4} \\ &=\sum_{n=0}^{\infty}\dfrac{1}{4}(3^n+2+(-1)^n)\dfrac{x^n}{n!} \end{aligned} \]

故答案為 \(\dfrac{1}{4}(3^n+2+(-1)^n)\)

相關文章