首页 > 技术文章 > 斯特林数

lhm- 2020-12-25 22:30 原文

第一类斯特林数

\[\large \begin{bmatrix}n\\ m\end{bmatrix}=(n-1)\begin{bmatrix}n-1\\ m\end{bmatrix}+\begin{bmatrix}n-1\\ m-1\end{bmatrix} \]

其为将 \(n\) 个元素划分为 \(m\) 个轮换的方案数。递推式即为考虑最后一个元素是否作为一个新轮换。

\(\begin{bmatrix}n\\ i\end{bmatrix}\) 是恰好有 \(i\) 个轮换的排列数,因此有:

\[\large \sum_{i=0}^n \begin{bmatrix}n\\ i\end{bmatrix}=n! \]

与幂的关系:

\[\large x^{\overline{n}}=\sum_{i=0}^n\begin{bmatrix}n\\ i\end{bmatrix}x^i \]

归纳法证明:

\[\large\begin{aligned} x^{\overline{n-1}}&=\sum_{i=0}^{n-1}\begin{bmatrix}n-1\\ i\end{bmatrix}x^i \\ (x+n-1)x^{\overline{n-1}}&=(x+n-1)\sum_{i=0}^{n-1}\begin{bmatrix}n-1\\ i\end{bmatrix}x^i \\ x^{\overline{n}}&=(n-1)\sum_{i=0}^{n-1}\begin{bmatrix}n-1\\ i\end{bmatrix}x^i+\sum_{i=1}^{n}\begin{bmatrix}n-1\\ i-1\end{bmatrix}x^i \\ x^{\overline{n}}&=\sum_{i=0}^{n}\begin{bmatrix}n\\ i\end{bmatrix}x^i \\ \end{aligned} \]

考虑将 \(x^{\overline{n}} = (-1)^n(-x)^{\underline{n}}\) 代入到 \(x^{\overline{n}}=\sum\limits_{i=0}^n\begin{bmatrix}n\\ i\end{bmatrix}x^i\) 中,并将 \(x\) 换为 \(-x\),得:

\[\large\begin{aligned} (-1)^nx^{\underline{n}} &= \sum\limits_{i=0}^n\begin{bmatrix}n\\ i\end{bmatrix}(-x)^i \\ x^{\underline{n}} &= \sum\limits_{i=0}^n(-1)^{n-i}\begin{bmatrix}n\\ i\end{bmatrix}x^i \\ \end{aligned} \]

第二类斯特林数

\[\large \begin{Bmatrix} n \\m \end{Bmatrix}=m\begin{Bmatrix} n-1 \\m \end{Bmatrix}+\begin{Bmatrix} n-1 \\m-1 \end{Bmatrix} \]

其为将 \(n\) 个元素划分为 \(m\) 个集合的方案数。递推式即为考虑最后一个元素是否作为一个新集合。

与幂的关系:

\[\large x^n = \sum_{i=0}^n \begin{Bmatrix} n \\i \end{Bmatrix} x^{\underline{i}} \]

归纳法证明:

\[\large\begin{aligned} \large x^{n-1} &= \sum_{i=0}^{n-1} \begin{Bmatrix} n-1 \\i \end{Bmatrix} x^{\underline{i}} \\ \large x^n &= x\sum_{i=0}^{n-1} \begin{Bmatrix} n-1 \\i \end{Bmatrix} x^{\underline{i}} \\ \large x^n &= \sum_{i=0}^{n-1} \begin{Bmatrix} n-1 \\i \end{Bmatrix} ix^{\underline{i}} +\sum_{i=0}^{n-1} \begin{Bmatrix} n-1 \\i \end{Bmatrix} (x-i)x^{\underline{i}} \\ \large x^n &= \sum_{i=0}^{n-1} \begin{Bmatrix} n-1 \\i \end{Bmatrix} ix^{\underline{i}} +\sum_{i=1}^n \begin{Bmatrix} n-1 \\i-1 \end{Bmatrix} x^{\underline{i}} \\ \large x^n &= \sum_{i=0}^n \begin{Bmatrix} n \\i \end{Bmatrix} x^{\underline{i}} \\ \end{aligned} \]

考虑将 \(x^{\underline{n}} = (-1)^n(-x)^{\overline{n}}\) 代入到 \(x^n = \sum\limits_{i=0}^n \begin{Bmatrix} n \\i \end{Bmatrix} x^{\underline{i}}\) 中,并将 \(x\) 换为 \(-x\),得:

\[\large\begin{aligned} \large (-x)^n &= \sum_{i=0}^n (-1)^i\begin{Bmatrix} n \\i \end{Bmatrix} x^{\overline{i}} \\ \large x^n &= \sum_{i=0}^n (-1)^{n-i}\begin{Bmatrix} n \\i \end{Bmatrix} x^{\overline{i}} \\ \end{aligned} \]

关系

反转公式:

\[\large\begin{aligned} \sum_{i=m}^n(-1)^{n-i}\begin{bmatrix}n\\ i\end{bmatrix}\begin{Bmatrix}i\\ m\end{Bmatrix}=[n=m] \\ \sum_{i=m}^n(-1)^{n-i}\begin{Bmatrix}n\\ i\end{Bmatrix}\begin{bmatrix}i\\ m\end{bmatrix}=[n=m] \\ \end{aligned} \]

证明:

\[\large\begin{aligned} m^{\underline n}&=\sum\limits_{i=0}^n(-1)^{n-i} \begin{bmatrix}n\\i\end{bmatrix}m^i\\ &=\sum\limits_{i=0}^n (-1)^{n-i} \begin{bmatrix}n\\i\end{bmatrix}\sum\limits_{j=0}^i \begin{Bmatrix}i\\j\end{Bmatrix}m^{\underline j}\\ &=\sum\limits_{i=0}^n m^{\underline i}\sum\limits_{j=i}^n (-1)^{n-j} \begin{bmatrix}n\\j\end{bmatrix} \begin{Bmatrix}j\\i\end{Bmatrix} \\ m^n&=\sum\limits_{i=0}^n(-1)^{n-i}\begin{Bmatrix}n\\i\end{Bmatrix}m^{\overline i}\\ &=\sum\limits_{i=0}^n(-1)^{n-i}\begin{Bmatrix}n\\i\end{Bmatrix}\sum\limits_{j=0}^i \begin{bmatrix}i\\j\end{bmatrix}m^j\\ &=\sum\limits_{i=0}^n m^i\sum\limits_{j=i}^n(-1)^{n-j} \begin{Bmatrix}n\\j\end{Bmatrix}\begin{bmatrix}j\\i\end{bmatrix} \end{aligned} \]

斯特林反演:

\[\large f(n)=\sum\limits_{i=0}^n \begin{Bmatrix}n\\i \end{Bmatrix}g(i)\Longleftrightarrow g(n)=\sum\limits_{i=0}^n(-1)^{n-i}\begin {bmatrix} n\\i \end{bmatrix}f(i) \]

证明:

\[\large\begin{aligned} f(n)&=\sum\limits_{i=0}^n [n=i]f(i)\\ &=\sum\limits_{i=0}^n\sum\limits_{j=i}^n (-1)^{i-j} \begin {Bmatrix} n\\j \end{Bmatrix}\begin {bmatrix} j\\i \end{bmatrix}f(i)\\ &=\sum\limits_{i=0}^n \begin {Bmatrix} n\\i \end{Bmatrix}\sum\limits_{j=0}^i (-1)^{i-j}\begin {bmatrix} i\\j \end{bmatrix}f(j)\\ &=\sum\limits_{i=0}^n \begin {Bmatrix} n\\i \end{Bmatrix}g(i) \end{aligned} \]

可以应用斯特林反演解释斯特林数与幂的关系:

\[\large\begin{aligned} x^{\overline{n}}=\sum_{i=0}^n\begin{bmatrix}n\\ i\end{bmatrix}x^i &\Longleftrightarrow x^n = \sum_{i=0}^n (-1)^{n-i}\begin{Bmatrix} n \\i \end{Bmatrix} x^{\overline{i}} \\ x^n = \sum\limits_{i=0}^n \begin{Bmatrix} n \\i \end{Bmatrix} x^{\underline{i}} &\Longleftrightarrow x^{\underline{n}} = \sum\limits_{i=0}^n(-1)^{n-i}\begin{bmatrix}n\\ i\end{bmatrix}x^i \\ \end{aligned} \]

求法

第一类斯特林数·行

\(n\) 行第一类斯特林数的生成函数为:

\[\large x^{\overline{n}}=\sum_{i=0}^n\begin{bmatrix}n\\ i\end{bmatrix}x^i \]

\(f(x)=x^{\overline{n}}\),考虑倍增,因为有 \(x^{\overline{2n}}=x^{\overline{n}}(x+n)^{\overline{n}}\),所以求出 \(f(x+n)\) 后即可倍增,设 \(a_i=[x^i]f(x)\),得:

\[\large\begin{aligned} f(x+n)&=\sum_{i=0}^na_i(x+n)^i \\ &=\sum_{i=0}^na_i\sum_{j=0}^i \binom{i}{j}x^jn^{i-j} \\ &=\sum_{i=0}^nx^i\sum_{j=i}^n \binom{j}{i}a_jn^{j-i} \\ &=\sum_{i=0}^n\frac{x^i}{i!}\sum_{j=i}^n j!a_j\frac{n^{j-i}}{(j-i)!} \\ \end{aligned} \]

卷积即可,复杂度为 \(T(n)=T(\frac{n}{2})+O(n \log n)=O(n \log n)\)

第一类斯特林数·列

\(n\) 个元素构成 \(1\) 个轮换的 \(EGF\) 为:

\[\large \sum_{i=1}^n (i-1)!\frac{x^i}{i!}=\ln\frac{1}{1-x} \]

得构成 \(i\) 个轮换的 \(EGF\) 为:

\[\large \frac{(\ln\frac{1}{1-x})^i}{i!} \]

多项式快速幂即可。

第二类斯特林数·行

因为有:

\[\large m^n = \sum\limits_{i=0}^m \binom{m}{i} \begin{Bmatrix} n \\i \end{Bmatrix} i! \]

二项式反演得:

\[\large\begin{aligned} \begin{Bmatrix} n \\m \end{Bmatrix}&=\frac{1}{m!}\sum_{i=0}^m(-1)^{m-i}\binom{m}{i}i^n \\ &=\sum_{i=0}^m\frac{(-1)^{m-i}}{(m-i)!}\frac{i^n}{i!} \end{aligned} \]

卷积即可。

第二类斯特林数·列

\(n\) 个元素构成 \(1\) 个集合的 \(EGF\) 为:

\[\large \sum_{i=1}^n \frac{x^i}{i!}=e^x-1 \]

得构成 \(i\) 个集合的 \(EGF\) 为:

\[\large \frac{(e^x-1)^i}{i!} \]

多项式快速幂即可。

推荐阅读