[学习笔记]斯特林数与斯特林反演

第二类斯特林数

\(\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]\)

原文地址:https://www.cnblogs.com/dixiao/p/15727857.html