斯特林数 笔记
这篇文主要记录一些lizbaka在学习斯特林数时遇到的一些比较关键的点
此文条理不甚清晰,并且很不完善主要是给自己看的,仅供参考,不建议用于系统深入学习
第二类斯特林数
第二类斯特林数\(\begin{Bmatrix}n\\k\end{Bmatrix}\)表示\(n\)个元素划分成\(k\)个非空无标号集合的方案数
其递推方程为:
\[\begin{Bmatrix}n\\k\end{Bmatrix}=\begin{Bmatrix}n-1\\k-1\end{Bmatrix}+k\times\begin{Bmatrix}n-1\\k\end{Bmatrix}\]
\[\begin{Bmatrix}0\\0\end{Bmatrix}=1\]
其意义为,最后一个元素,单独组成一个集合,或加入已有的任意一个集合
第二类斯特林数\(\begin{Bmatrix}n\\k\end{Bmatrix}\)又称为“\(n\)子集\(k\)”
事实上,第二类斯特林数可以利用容斥原理得到其卷积形式的推导公式,进而可以使用NTT求出,时间复杂度\(O(n\log n)\)(待填坑)
第一类斯特林数
第一类斯特林数\(\begin{bmatrix}n\\k\end{bmatrix}\)表示\(n\)个元素划分成\(k\)个圆排列的方案数
其递推方程为:
\[\begin{bmatrix}n\\k\end{bmatrix}=\begin{bmatrix}n-1\\k-1\end{bmatrix}+(n-1)\times\begin{bmatrix}n-1\\k\end{bmatrix}\]
\[\begin{bmatrix}0\\0\end{bmatrix}=1\]
其意义为,最后一个元素,单独组成一个圆排列,或者插入到已有的任意一个元素的左侧
第一类斯特林数\(\begin{bmatrix}n\\k\end{bmatrix}\)又称为“\(n\)轮换\(k\)”
每一个排列都与一个轮换的集合等价(《具体数学》\(P217-P218\))
于是有:
\[\sum_{k=0}^n\begin{bmatrix}n\\k\end{bmatrix}=n!(n\ge0)\]
斯特林数与常幂/下降幂/上升幂
记下降幂:
\[x^{\underline n}=x\times(x-1)\times(x-2)\cdots\times(x-n+1)\]
记上升幂:
\[x^{\overline n}=x\times(x+1)\times(x+2)\cdots\times(x+n+1)\]
这常常出现在组合计数中
幂之间的转换公式(《具体数学》\(P219-P220\)):
\[x^{\overline n}=\sum_{k=0}^n\begin{bmatrix}n\\k\end{bmatrix}x^k\]
\[x^{\underline n}=\sum_{k=0}^n\begin{bmatrix}n\\k\end{bmatrix}(-1)^{n-k}x^k\]
\[x^n=\sum_{k=0}^n\begin{Bmatrix}n\\k\end{Bmatrix}x^{\underline k}=\sum_{k=0}^n\begin{Bmatrix}n\\k\end{Bmatrix}(-1)^{n-k}x^{\overline k}\]
事实上,我们可以建立常幂与组合数之间的关系:
\[x^n=\sum_{k=0}^n\begin{Bmatrix}n\\k\end{Bmatrix}x^{\underline k}=\sum_{k=0}^n\begin{Bmatrix}n\\k\end{Bmatrix}\times k!\times \begin{pmatrix}n\\k\end{pmatrix}\]
从而转化到组合数进行求解