斯特林数

CV自skyh博客

第一类斯特林数

定义

\(S_1(n,m)\)\(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. 第一类斯特林数第\(n\)行的和等于\(n!\)

\(\sum \limits_{i=0}^n\begin{bmatrix}n\\i\end{bmatrix}=n!\)

考虑\(n\)个元素的排列\(p\),建立\(i \rightarrow p_i\)的置换,发现会形成若干个环,这和第\(n\)行的第一类斯特林数的方案是一一对应的




  1. 可以用普通幂表示上升幂

\(x^{\overline n}=\sum \limits_{i=0}^n \begin{bmatrix}n\\i\end{bmatrix}x^i\)

证明可以通过数学归纳法:

\(n=0\)时原式显然成立

设原式在\(n\)时成立

则在\(n+1\)时,有

\[x^{\overline {n+1}}=x^{\overline n}*(x+n) \]

\[x^{\overline {n+1}}=\sum \limits_{i=0}^n \begin{bmatrix}n\\i\end{bmatrix}x^i*(x+n) \]

后面的式子将\((x+n)\)乘出来,发现正好符合第一类斯特林数转移

\[x^{\overline {n+1}}=\sum \limits_{i=0}^{n+1} \begin{bmatrix}n+1\\i\end{bmatrix}x^i \]




  1. 用普通幂表示下降幂可以用类似的方法求出,这里给出一种更妙的求法

首先对于普通幂 显然有\(x^n=(-x)^n*(-1)^n\)

对于下降幂与上升幂同样有

\(x^{\overline n}=(-x)^{\underline n}*(-1)^n\)

\(x^{\underline n}=(-x)^{\overline n}*(-1)^n\)

将该式代入\(x^{\overline n}=\sum \limits_{i=0}^n \begin{bmatrix}n\\i\end{bmatrix}x^i\)

整理得到\(x^{\underline n}=\sum \limits_{i=0}^n \begin{bmatrix}n\\i\end{bmatrix}(-1)^{n-i}x^i\)




同一行第一类斯特林数

套用第二个性质可以分治\(FFT\)做到\(nlog^2\)




第二类斯特林数

定义

\(S_2(n,m)\)表示\(n\)个数形成\(m\)个集合的方案数

其中元素与元素之间区分,集合与集合不区分

递推公式

\(\begin{Bmatrix}n\\m\end{Bmatrix}=\begin{Bmatrix}n-1\\m-1\end{Bmatrix}+m*\begin{Bmatrix}n-1\\m\end{Bmatrix}\)

还是按照实际含义去考虑第\(n\)个数单独作为一个集合还是放进之前的集合

性质

1.下降幂表示普通幂

\(x^n=\sum \limits_{i=0}^n \begin{Bmatrix}n\\i\end{Bmatrix}x^{\underline i}\)

证明(1):类似第一类斯特林数,数学归纳法

证明(2):\(x^n=\sum_{i=0}^n\begin{Bmatrix}n\\i\end{Bmatrix}\binom{x}{i} i!\)

考虑\(x^n\)的实际含义,有\(n\)个元素,每次有\(x\)个集合可选择

所以即\(x\)个集合中选出\(i\)个集合然后将\(n\)个元素放入这\(i\)个集合,又因为第二类斯特林数中的集合是无差别的,所以要乘上\(i!\)

整理可得上面式子

2.同样代入负数形式,可以得到上升幂表示普通幂

\(x^n=\sum \limits_{i=0}^n \begin{Bmatrix}n\\i\end{Bmatrix}(-1)^{n-i}x^{\overline i}\)

求法

求单点第二类斯特林数:

设将\(n\)个元素放入至少\(x\)个集合的方案数为\(g_x\)(也就是允许空集

\(n\)个元素放入恰好\(x\)个集合的方案数为\(f_x\)(也就是不允许空集

\(g_i = i^n\)

\(g_i = \sum_{j=1}^{i} f_j \binom{i}{j}\)

根据二项式反演得到

\(f_i = \sum_{j=1}^{i} g_j \binom{i}{j} (-1)^{i-j}\)

\(f_i = \sum_{j=1}^{i} j^n \binom{i}{j} (-1)^{i-j}\)

然后就可以\(O(n)\)求单点第二类斯特林数的值了




设有\(n\)个不同的元素,\(m\)个不同集合

\(g_x\)为恰好x个集合为空的方案数

\(f_x\)为至少x个集合为空的方案数

\(f_x=\binom{m}{x}(m-x)^n\)

\(f_x=\sum \limits_{i=x}^{m}\binom{i}{x}g_i\)

二项式反演得到:

\(g_x=\sum \limits_{i=x}^{m}(-1)^{i-x}\binom{i}{x}f_i\)

代入\(x=0\),得到

\(\begin{Bmatrix}n\\m\end{Bmatrix}=\frac{1}{m!}*\sum \limits_{i=0}^{m}(-1)^i\binom{m}{i}(m-i)^n\)

发现是个卷积式,所以求一行第二类斯特林数可以\(nlog_n\)

posted @ 2021-04-01 19:32  HISKrrr  阅读(143)  评论(2编辑  收藏  举报