Stirling数小记


定义/组合意义

第一类斯特林数:$\begin{bmatrix}n\\ m\end{bmatrix}$表示$n$个不同元素分为$m$个圆排列的方案数

有标号的第一类斯特林数$s(n,m)=(-1)^{n-m}\begin{bmatrix}n\\ m\end{bmatrix}$

第二类斯特林数:$\begin{Bmatrix}n\\ m\end{Bmatrix}$表示$n$个不同元素分为$m$个集合的方案数

注意圆排列和集合都是相互之间无序的


递推方法

第一类斯特林数

$\begin{bmatrix}n\\ m\end{bmatrix}=\begin{bmatrix}n-1\\ m-1\end{bmatrix}+(n-1)\begin{bmatrix}n-1\\ m\end{bmatrix}$

即新建一个圆排列,或者插入前面$n-1$个元素中任意一个的后面

显然的,有标号的第一类斯特林数递推式就是

$\begin{bmatrix}n\\ m\end{bmatrix}=\begin{bmatrix}n-1\\ m-1\end{bmatrix}-(n-1)\begin{bmatrix}n-1\\ m\end{bmatrix}$

第二类斯特林数

$\begin{Bmatrix}n\\ m\end{Bmatrix}=\begin{Bmatrix}n-1\\ m-1\end{Bmatrix}+m\begin{Bmatrix}n-1\\ m\end{Bmatrix}$

即新建一个集合,或者加入前面的$m$个集合


第二类斯特林数的通项公式

$\begin{aligned} \begin{Bmatrix} n \\ m \end{Bmatrix}=\frac{1} {m!}\sum_{i=0}^{\infty} (-1)^{m-i}\binom{m} {i} i^n \end{aligned}$

其组合意义是枚举生成了多少个有序的集合,然后容斥,最后除去集合的顺序


生成函数表示与行/列求解

固定$n$,以$m$为形式幂指数,则第一类斯特林数的普通生成函数

$\begin{aligned}\text{OGF}=\prod_{i=0}^{n-1}(x+i)=x^{\overline{n} }\end{aligned}$

(其意义就是上面的递推公式)

倍增+卷积二项展开求出$F(x+i)$即可做到$O(n\log n)$求出一行

固定$m$,以$n$为形式幂指数,则第一类斯特林数的指数型生成函数

$\begin{aligned}\text{EGF}= & \frac{1} {m!}\cdot (\sum_{i=1}^{\infty}\frac{(i-1)!} {i!}x^i)^m\\= & \frac{1} {m!}\cdot (\sum_{i=1}^{\infty}\frac{x^i} {i})^m\end{aligned}$

设$F(x)=\sum_{i=1}^{\infty}\frac{x^i} {i}$

$\begin{aligned} \because F'(x)=&\sum_{i=1}^{\infty}x^{i-1}=\frac{1} {1-x}\end{aligned}$ $\begin{aligned} \therefore F(x)=\int \frac{1} {1-x}=-\ln(1-x)\end{aligned}$ $\begin{aligned}\therefore \text{EGF} = & \frac{1} {m!}\cdot (-\ln(1-x))^m\\= & \frac{1} {m!}\cdot (-1)^m\cdot \ln^m(1-x)\end{aligned}$

(就是百度百科上的那个,它什么都没讲清楚)

多项式快速幂即可做到$O(n\log n-n\log ^2n)$求一列

而在上式的推导过程中额外加入$(-1)^m$的常数,并且把$x^i$换成$(-x)^i$可以得到有标号第一类斯特林数的指数型生成函数

$\begin{aligned} \text{EGF} = & \frac{1} {m!}\cdot (\sum_{i=1}^{\infty}\frac{(-x)^i} {i})^m\\=& \frac{1} {m!}\cdot \ln^m(1+x)\end{aligned}$

第二类斯特林数的一行可以直接由通项公式做卷积得到

固定$m$,以$n$为形式幂指数,则第二类斯特林数的指数型生成函数表示为

$\begin{aligned} \text{EGF} &=\frac{1} {m!}({\sum_{i=1}^{\infty} \frac{x^i} {i!} })^m\\ &=\frac{1} {m!}(e^x-1)^m \\ &=\frac{1} {m!}\sum_{i=0}^m (-1)^{m-1} \binom{m} {i}e^{ix}\end{aligned}$

实际上由这个二项展开的形式也可以发现,它就是上面通项公式的生成函数推导

可以求一列,复杂度为$O(n\log n-n\log ^2n)$常数很大

虽然没什么意义,但是还是写一下二元形式

第一类斯特林数:

$\begin{aligned} \text{EGF}=e^{-\ln (1-x)y}\end{aligned}$

第二类斯特林数:

$\begin{aligned}\text{EGF}=e^{\begin{aligned}(e^x-1)y\end{aligned} }\end{aligned}$

注意元$x$为指数型,$y$是普通型


斯特林数与幂指数/上升幂/下降幂

第一类斯特林数:

上面已经说过$\begin{aligned}x^{\overline{n} }=\sum_{i=0}^{n}\begin{bmatrix}n\\i\end{bmatrix}x^i\end{aligned}$

同理,用有标号的第一类斯特林数将$x^{\underline{n} }$展开的式子是

$\begin{aligned}x^{\underline{n} }=\sum_{i=0}^{n}(-1)^{n- i}\begin{bmatrix}n\\i\end{bmatrix}x^i\end{aligned}$

第二类斯特林数:

类似通项公式的求解,组合意义将幂指数展开,视$x^n$为将$n$个元素随意放在$x$个位置,则枚举$x$个位置中那些被选择

$\begin{aligned} x^n=\sum_{i=0}^n \binom{x} {i}i!\begin{Bmatrix}n\\i\end{Bmatrix} \end{aligned}$

把$\binom{x} {i}i!$写成下降幂的形式,得到优美的式子

$\begin{aligned} x^n=\sum_{i=0}^n \begin{Bmatrix}n\\i\end{Bmatrix}x^{\underline{i} }\end{aligned}$

而实际上由上式二项反演也可以得到通项公式

$\begin{aligned} \begin{Bmatrix} n \\ m \end{Bmatrix}=\frac{1} {m!}\sum_{i=0}^{\infty} (-1)^{m-i}\binom{m} {i} i^n \end{aligned}$

关于下降幂多项式的快速转化,可以再借鉴这个


斯特林变换/斯特林反演

对于斯特林变换

$\begin{aligned} a_n=\sum_{i=0}^n\begin{Bmatrix}n\\i\end{Bmatrix}b_i \end{aligned}$

设$A(x),B(x)$为数列$a,b$的指数型生成函数,带入前文推导的式子,则得到上式的生成函数表达就是

$A(x)=B(e^x-1)$

显然得到$B(x)=A(\ln(x+1))$,而$\ln(x+1)$显然转化为有标号的第一类斯特林数

因此得到斯特林反演的表达形式是

$\begin{aligned}b_n=\sum_{i=0}^{n}(-1)^{n-i}\begin{bmatrix}n\\i\end{bmatrix}a_i\end{aligned}$

(不大可能搞类似多项式复合的方法处理这个反演吧,最多可能也就是求一个位置)