斯特林数与斯特林反演
斯特林数与斯特林反演(Stirling)
首先,我们要了解斯特林数的定义。
第一类斯特林数
第一类斯特林数\(\begin{bmatrix} n \\ m\end{bmatrix}\) 表示将\(n\)个两两不同的元素,划分为\(m\)个非空圆排列的方案数。
递推式
边界是\(\begin{bmatrix} n \\ 0 \end{bmatrix} = [n = 0]\)。
该递推式的证明可以考虑其组合意义。
我们插入一个新元素时,有两种方案:
- 将该新元素置于一个单独的圆排列中,共有\(\begin{bmatrix} n-1 \\ m-1 \end{bmatrix}\)种方案;
- 将该元素插入到任何一个现有的圆排列中,共有\((n-1) \begin{bmatrix} n-1 \\ m \end{bmatrix}\)种方案。
根据加法原理,将两式相加即可得到递推式。
性质
性质一:\(\begin{bmatrix}n\\1\end{bmatrix}=(n-1)!\)
性质二:\(\begin{bmatrix}n\\2\end{bmatrix}=(n-1)!\sum\limits_{i=1}^{n-1}\frac{1}{i}\),证明考虑归纳法。
性质三:\(\sum\limits_{i=0}^{n}\begin{bmatrix}n\\i\end{bmatrix}=n!\)
第二类斯特林数
第二类斯特林数 (斯特林子集数)\(\begin{Bmatrix} n \\ m \end{Bmatrix}\)表示将\(n\)个两两不同的元素,划分为\(m\)个非空子集的方案数。
递推式
边界是\(\begin{Bmatrix} n \\ 0 \end{Bmatrix} = [n = 0]\)。
还是考虑组合意义来证明。
我们插入一个新元素时,有两种方案:
- 将新元素单独放入一个子集,有\(\begin{Bmatrix} n-1 \\ m-1 \end{Bmatrix}\)种方案;
- 将新元素放入一个现有的非空子集,有\(m \begin{Bmatrix} n-1 \\ m \end{Bmatrix}\)种方案。
根据加法原理,将两式相加即可得到递推式。
应用
上升幂与普通幂的相互转化
我们记上升阶乘幂\(x^{\overline{n}} = \prod\limits_{k=0}^{n-1} (x+k)\)。
则可以利用下面的恒等式将上升幂转化为普通幂:
得到\(x^{\overline{n}}\)的\(k\)次项系数即为\(\begin{bmatrix} n \\ k \end{bmatrix}\)
如果将普通幂转化为上升幂,则有下面的恒等式:
下降幂与普通幂的相互转化
我们记下降阶乘幂\(x^{\underline{n}} = \frac {x!} {(x-n)!} = \prod_{k=0}^{n-1} (x-k)\)。
则可以利用下面的恒等式将普通幂转化为下降幂:
如果将下降幂转化为普通幂,则有下面的恒等式:
斯特林反演
一般形式:
例题:方阵
给出一个\(n \times m\)大小的矩形,每个位置可以填上\([1,c]\)中的任意一个数,要求填好后任意两行互不等价且任意两列互不等价,两行或两列等价当且仅当对应位置完全相同,求方案数 。\(n,m \leq 5000\)
(https://vjudge.net/problem/TopCoder-13444)
对这种行列都有限制的题我们可以先只考虑一边。
先只考虑让行之间互不等价,一个\(n\)行\(m\)列且行互不等价的矩形的方案数为\((c^m)^{\underline{n}}\)。
我们设\(f(m)\)表示行互不等价的情况下,\(m\)列的矩形的方案数。\(f(m) = (c^m)^{\underline{n}}\)。
我们设\(g(m)\)表示行和列都分别互不等价的情况下,\(m\)列的矩形的方案数,也就是我们要的答案。
这个式子的意义就是我们枚举\(m\)列分成了\(i\)个互不等价的集合,再将这\(m\)列分配到这些集合中去。
由斯特林反演,
考虑证明,将\(f(i)\)的形式代入式子中,
于是,我们就可以\(O(n^2)\)解决这个问题。

浙公网安备 33010602011771号