1. 程式人生 > 其它 >[學習筆記]斯特林數與斯特林反演

[學習筆記]斯特林數與斯特林反演

每天晚上想睡覺的時候,總是不由自主的想硬撐著不睡,沒有在等什麼,也不知道自己在熬什麼

第二類斯特林數

\(\begin{Bmatrix}n\\k\end{Bmatrix}\),可記做 \(S(n,k)\),表示 \(n\) 個兩兩不同元素,劃分為 \(k\) 個互不區分的非空子集的方案數。

\(\begin{Bmatrix}n\\k\end{Bmatrix}=\begin{Bmatrix}n - 1\\k - 1\end{Bmatrix} + k\begin{Bmatrix}n - 1\\k\end{Bmatrix}\)

邊界\(\begin{Bmatrix}n\\0\end{Bmatrix} = [n = 0]\)

通項公式

\(\begin{Bmatrix}n\\k\end{Bmatrix} = \sum_{i = 0}^{m} \frac{(-1) ^{m - i}\ \ i^n}{i! (m - i)!}\)

考慮設\(G_i\)為放到\(k\)個兩兩不同的集合的,允許空集的方案,\(F_i\)為兩兩不同的集合的,不允許空集的方案。

那麼有\(G_i = k^n = \sum_{j = 0}^i\binom{i}{j}F_j\)

二項式反演可得

\(F_i = \sum_{j = 0}^i (-1)^{i - j}\binom{i}{j}G_j\\= \sum_{j = 0}^i (-1)^{i - j}\binom{i}{j}j^n\\=\sum_{i = 0}^{m} \frac{i!(-1) ^{i - j}\ \ j^n}{j! (i - j)!}\)

考慮\(F_i\)\(\begin{Bmatrix}n\\i\end{Bmatrix}\)

的關係,因為集合無標號,後者是前者的\(i!\)倍。

同一行第二類斯特林數的計算

方法一:直接利用通項公式。

直接卷積即可。

\(O(nlogn)\)

方法二:利用指數型生成函式

一個盒子裝 \(i\) 個物品且盒子非空的方案數為\([i > 0]\),寫出其生成函式\(\sum \frac{x_i}{i!} = e^x - 1\),我們知道\(F^k(x)\)就是\(i\)個有標號物品放到\(k\)個有標號的盒子裡的指數型生成函式,那麼\(\exp F(x) = \sum \frac{F^i(x)}{i!}\),即變成了盒子無標號。

所以計算多項式快速冪即可,實際看起來比方法一慢。

第一類斯特林數

第一類斯特林數,\(\begin{bmatrix}n\\k\end{bmatrix}\),表示把\(n\)個兩兩不同的元素劃分成\(k\)個圓排列的方案數。

\(\begin{bmatrix}n\\k\end{bmatrix} = \begin{bmatrix}n - 1\\k - 1\end{bmatrix} + *(n - 1)\begin{bmatrix}n - 1\\k\end{bmatrix}\)
\(\begin{bmatrix}n\\0 \end{bmatrix} = [n = 0]\)

同一行第一類斯特林數的計算

構造生成函式。

\(F_n(x) = \sum_{i = 0}^n \begin{bmatrix}n\\i\end{bmatrix}x^i\)

那麼不難寫出\(F_n(x) = (n - 1)F_{n - 1}(x) + xF_{n - 1}(x)\)

那麼有\(F_n(x) = \prod_{i = 0}^{n - 1}(x + i)\)為上升冪,用上升冪的操作也可做到\(O(nlogn)\),具體是斯特林數及斯特林反演

同一列第一類斯特林數的計算

單個輪換的指數型生成函式

\(F(x) = \sum_{i = 1} ^ n\frac{(i - 1) !x^i}{i!} = \sum_{i = 1}^n \frac{x^i}{i}\)

直接\(k\)個相乘,就是第一類斯特林數的指數生成函式。

普通數冪及上升冪與下降冪之間的關係

\(x^{\overline n} = \sum_k \begin{bmatrix}n\\i\end{bmatrix} x^k\)

\(x^{n} = \sum_k \begin{Bmatrix}n\\i\end{Bmatrix} (-1) ^ {n - k}x^{\overline k}\)

\(x^{n} = \sum_k \begin{Bmatrix}n\\i\end{Bmatrix} x^{\underline k}\)

\(x^{\underline n} = \sum_k \begin{bmatrix}n\\i\end{bmatrix} (-1) ^ {n - k}x^k\)

多項式下降冪與多項式點值標表示的關係

\(f(x) = \sum_{i = 0}^n b_i x^{\underline i}\)

\((i,a_i),i = 0...n\)

\(a_k = \sum^{n}_{i = 0}b_ik^{\underline i}\)

\(a_k = \sum_{i = 0}^n \frac{bk!}{(k - i)!}\)

\(\frac{a_k}{k!} = \sum_{i = 0}^k b_i \frac{1}{(k - i)!}\)

是一個卷積形式。

斯特林數反演

\(f(n) = \sum_{i = 0}^n \begin{Bmatrix}n\\i\end{Bmatrix} g(i)\)

則有\(g(n) = \sum_{i = 0}^n (-1) ^ {n - i}\begin{bmatrix}n\\i\end{bmatrix}f(i)\)

\(f(i) = \sum_{j = i}^n \begin{Bmatrix}j\\i\end{Bmatrix} g(i)\)

則有\(g(i) = \sum_{i = 0}^n (-1) ^ {j - i}\begin{bmatrix}j\\i\end{bmatrix}f(i)\)

反轉公式:

\(\sum_{k = m}^n \begin{bmatrix}n\\k\end{bmatrix}\begin{Bmatrix}k\\m\end{Bmatrix} = [n = m]\)

\(\sum_{k = m}^n \begin{Bmatrix}n\\k\end{Bmatrix}\begin{bmatrix}k\\m\end{bmatrix} = [n = m]\)