跳转至

斯特林数学习笔记

第二类斯特林数

为什么先说第二类斯特林数? 因为 OIwiki 是先讲的第二类

定义 \(\begin{Bmatrix}n\\k\end{Bmatrix}\) 表示将 \(n\) 个两两不同的元素划分为 \(k\) 个互不区分的非空子集的方案数。称 \(\begin{Bmatrix}n\\k\end{Bmatrix}\) 为第二类斯特林数。

递推式

有个非常简单的递推式:

\[ \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]\)。

考虑新加的第 \(n\) 个元素。\(\begin{Bmatrix}n-1\\k-1\end{Bmatrix}\) 表示将这个元素划分为一个新的集合,后面的则是把这个元素加入之前的一个集合。用加法原理加起来即可。

通项公式

可以用二项式反演套路地做。

考虑 \(G(i)\) 表示将 \(n\) 个元素划分到两两不同的 \(i\) 个集合的方案数(可以为空),\(F(i)\) 表示将 \(n\) 个元素划分到 \(i\) 个两两不同的非空集合的方案数。

显然有: \(G(i)=i^n,G(i)=\sum_{j=0}^i\binom{i}{j}F(j)\),那么:

\[ \begin{aligned} F(i)&=\sum_{j=0}^i(-1)^{i-j}\binom{i}{j}G(j)\\ &=\sum_{j=0}^i\frac{(-1)^{i-j}i!j^n}{j!(i-j)!} \end{aligned} \]

然后第二类斯特林数是划分成 \(k\) 个互不区分的集合,所以每种划分会被 \(F(k)\) 算 \(k!\) 遍,除去即可。

综上:

\[ \begin{Bmatrix}n\\k\end{Bmatrix}=\sum_{j=0}^k\frac{(-1)^{k-j}j^n}{j!(k-j)!} \]

同一行第二类斯特林数的计算

留坑待补。

同一列第二类斯特林数的计算

留坑待补。

第一类斯特林数

定义 \(\begin{bmatrix}n\\k\end{bmatrix}\) 表示将 \(n\) 个两两不同的元素划分为 \(k\) 个互不区分的非空轮换的方案数。

一个轮换就是一个首尾相接的环形序列,可以视作一串珠子。比如 \(1,2,3,4\) 和 \(2,3,4,1\) 是同一个轮换,但 \(1,2,3,4\) 和 \(4,3,2,1\) 不是同一个轮换。

递推式

\[ \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]\)。

证明和第二类类似,关于系数 \(n-1\),因为插到前面每个数都后面是不同的。

通项公式

第一类斯特林数没有实用的通项公式。

同一行第一类斯特林数的计算

留坑待补。

同一列第一类斯特林数的计算

留坑待补。

应用

上升幂和下降幂转化为普通幂

记上升幂 \(x^{\overline{n}}=\prod_{k=0}^{n-1}(x+k)\),则有:

\[ x^{\overline{n}}=\sum_{k=0}^n\begin{bmatrix}n\\k\end{bmatrix}x^k \]
证明

考虑数学归纳法。

首先对于 \(n=0\),等号两边都等于 \(1\)。对于 \(n=1\),左右两边都等于 \(x\)。

考虑 \(n>1\),此时有:

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

对于其中第四步两个 \(\sum\) 下标改变的原因,第一个是将 \(x\) 乘进去后改为枚举 \(k+1\),第二个是因为 \(k=0,k=n\) 时 \(\begin{bmatrix}n-1\\k\end{bmatrix}\) 均为 \(0\)。最后一步也同理。

记下降幂 \(x^{\underline{n}}=\prod_{k=0}^{n-1}(x-k)\),有:

\[ x^{\underline{n}}=\sum_{k=0}^n(-1)^{n-k}\begin{bmatrix}n\\k\end{bmatrix}x^k \]

证明类似,守序邪恶。

证明

普通幂转化为上升幂和下降幂

普通幂转下降幂:

\[ \begin{aligned} x^n&=\sum_{k}\begin{Bmatrix}n\\k\end{Bmatrix}k!\binom{x}{k}\\ &=\sum_{k}\begin{Bmatrix}n\\k\end{Bmatrix}k!\frac{x!}{(x-k)!k!}\\ &=\sum_{k}\begin{Bmatrix}n\\k\end{Bmatrix}x^{\underline{k}} \end{aligned} \]

第一步考虑组合意义,\(n\) 个球放进 \(x\) 个互相区分的可空盒子里,那么先从 \(x\) 个盒子里面选 \(k\) 个,然后转化成 \(n\) 个放到 \(K\) 个互相区分的非空盒子里。后面的推导都很显然。

更板的推导是使用斯特林反演。

然后普通幂转上升幂:

\[ x^n=\sum_{k}(-1)^{n-k}\begin{Bmatrix}n\\k\end{Bmatrix}x^{\overline{k}} \]

证明还是斯特林反演。

评论