【学习笔记】斯特林数
注:本文中第一类斯特林数均指无符号第一类斯特林数。
括号一家:
- 组合数:\(\left(\begin{matrix}n\\m\end{matrix}\right)\) 。
- 第一类斯特林数:\(\left[\begin{matrix}n\\m\end{matrix}\right]\) 。
- 第二类斯特林数:\(\left\{\begin{matrix}n\\m\end{matrix}\right\}\) 。
第一类斯特林数
定义
第一类 \(\operatorname{Stirling}\) 数表示将 \(n\) 个不同元素划分成 \(m\) 个圆排列的方案数。
记为 \(\left[\begin{matrix}n\\m\end{matrix}\right]\) 或 \(s(n,m)\) 或 \(S_1(n,m)\)。
递推式
根据定义进行推导:
加入第 \(n\) 个元素后所有元素被划分成 \(m\) 个圆排列,考虑第 \(n\) 个元素的情况:
-
若第 \(n\) 个元素单独构成一个圆排列,则方案数为:\(\begin{bmatrix}{n-1\\m-1}\end{bmatrix}\)
-
若第 \(n\)个元素至少与另外一个元素构成一个圆排列,则方案数为:\((n-1)\cdot\begin{bmatrix}{n-1\\ \ \ \ m}\end{bmatrix}\)
综上:\(\begin{bmatrix}{n\\m}\end{bmatrix}=\begin{bmatrix}{n-1\\m-1}\end{bmatrix}+(n-1)\cdot\begin{bmatrix}{n-1\\ \ \ \ m}\end{bmatrix}\)
性质
- \(\begin{bmatrix}{0\\0}\end{bmatrix} = 1\)
- \(\begin{bmatrix}{n\\0}\end{bmatrix} = 0 \ (n>0)\)
- \(\begin{bmatrix}{n\\n}\end{bmatrix} = 1\)
- \(\begin{bmatrix}{n\\1}\end{bmatrix}= (n- 1)!\)
- \(\begin{bmatrix}{\ \ \ n\\n-1}\end{bmatrix}=\begin{pmatrix}{n\\2}\end{pmatrix}\)
- \(\begin{bmatrix}{n\\2}\end{bmatrix} = (n-1)!\sum\limits_{i=1}^{n-1}{1\over i}\)
- \(\begin{bmatrix}{\ \ \ n\\n-2}\end{bmatrix}=2\cdot \begin{pmatrix}{n\\3}\end{pmatrix} + 3\cdot\begin{pmatrix}{n\\4}\end{pmatrix}\)
- \(\sum\limits_{k=0}^{n}\begin{bmatrix}{n\\k}\end{bmatrix} = n!\)
现证明最后四条性质:(下面编号按顺序)
\(1.\) 根据抽屉原理,必有:
- \(2\) 个数在同一个集合里,方案数为 \(\begin{pmatrix}{n\\2}\end{pmatrix}\)。
- 剩下 \(n-2\) 个数各自单独在一个集合里,方案数为 \(1\) 。
综上: \(\begin{bmatrix}{\ \ \ n\\n-1}\end{bmatrix}=1\cdot\begin{pmatrix}{n\\2}\end{pmatrix}=\begin{pmatrix}{n\\2}\end{pmatrix}\) 。
注:证明时由于是先确定在同一集合中的两个数,故剩余数的方案数为 \(1\) 。
也可以先选出 \(n-2\) 个数,剩下两个数方案数为 \(1\),\(\begin{pmatrix}{\ \ \ n\\n-2}\end{pmatrix}=\begin{pmatrix}{n\\2}\end{pmatrix}\),结果相同。
\(2.\)
注:\((1)\) :拆成大小为 \(i\) 和 \(n-i\) 的两个圆排列,
实际上第一类斯特林数不区分两圆排列,故 \(*{1\over 2}\) 。
\((2)\) :运用性质 \(\begin{bmatrix}{n\\1}\end{bmatrix}= (n- 1)!\) 。
\((3)\) :对和式意义进行理解,会发现其实就是对 \({1\over i}\) 进行了两次求和,即 \(2\sum\limits_{i=1}^{n-1}{1\over i}\) 。
\(3.\) 与 \(1\) 证明类似,分为 \((n-4)+2+2\) 和 \((n-3)+3\) 两种组合,
结合性质 \(\begin{bmatrix}{n\\1}\end{bmatrix}= (n- 1)!\) 求解 。
\(4.\) 下面提供两种证明方法。
法一:
构造问题:求 \(n\) 个数的全排列数。
答案: \(P=n!\) 。
一个排列可以对应一个置换,即:
任意一个置换都可以分解为若干不相交的循环置换的乘积。
如果把元素视为图的节点,映射关系视为有向边,则每个节点的入度和出度都为 \(1\),
因此形成的图形必定是若干个环的集合,而一个环即可用一个循环置换表示。
故全排列数等价于 \(n\) 个元素组成环(圆排列)的方案数,则有:
法二:
同行第一类斯特林数的生成函数:\(x\) 的 \(n\) 次上升阶乘幂记为 \(x^{\overline{n}}\) ,等于\(\prod\limits^{n-1}_{i=0}(x+i)\)。
有结论:
用数学归纳法证明:
- \(n=1\) 时该结论显然成立。
- 现证明 \(n\) 时成立,则 \(n+1\) 时也成立:
注:\((1)\) : 当 \(i=n+1\) 时,\(n\cdot\left[\begin{matrix}n\\n+1\end{matrix}\right]x^i= 0\) 。
故原命题成立 。
故当 \(x=1\) 时,\(x(x+1)(x+2)\ldots(x+n-1)=n!=\sum\limits_{k=0}^{n}\begin{bmatrix}{n\\k}\end{bmatrix}\) 。
求解
通过 \(x^{\overline{n}}\) 进行求解。
分治求解 \(x^{\overline{n}}\) 。
若 \(n\) 是奇数,则 \(x^{\overline{n}}=x^{\overline{n-1}}\cdot(x+n-1)\) ,暴力求解。
若 \(n\) 是偶数,则:
设前 \({n\over 2}\) 对应的多项式为:
则后 \({n\over 2}\) 对应的多项式为:
形式化地定义为:
对该式进行化简:
注:\((1)\) :用二项式定理展开。
\((2)\) :交换求和次序时,注意保持 \(i\geqslant j\) 。
把 \(\sum\limits_{i=j}^n a_i i!{k^{i-j}\over(i-j)!}\) 换成 \(\sum\limits_{i=0}^{n'}g_ih_{n'-i}\) 的形式 。
设:
则:
注:\((1)\) :\(g'\) 表示 \(g\) 反转后的序列。
后一部分的和式用 NTT
优化,计算 \(x^{\overline{{n\over 2}}}\cdot(x+{n\over 2})^{\overline{{n\over 2}}}\) 也用 NTT
优化。
注意 \(x^{\overline{n}}\) 是长度为 \(n+1\) 的多项式。
时间复杂度:\(\operatorname{T}(n) = \operatorname{T}(\frac{n}{2}) + \operatorname{O}(n \log n) = \operatorname{O}(n \log n)\) 。
第二类斯特林数
定义
第二类 \(\operatorname{Stirling}\) 数表示将 \(n\) 个不同元素划分成 \(m\) 个集合的方案数。
记为 \(\left\{\begin{matrix}n\\m\end{matrix}\right\}\) 或 \(S(n,m)\) 或 \(S_2(n,m)\)。
递推式
仍根据定义进行推导:
加入第 \(n\) 个元素后所有元素被划分成 \(m\) 个集合,考虑第 \(n\) 个元素的情况:
- 若第 \(n\) 个元素单独分配在一个集合中,则方案数为:\[\begin{Bmatrix}{n-1\\m-1}\end{Bmatrix} \]
- 若第 \(n\) 个元素至少与另外一个元素分配在一个集合中,则方案数为:
综上:
性质
- \(\begin{Bmatrix}{n\\0}\end{Bmatrix} = 0 \ (n>0)\)
- \(\begin{Bmatrix}{n\\1}\end{Bmatrix}= 1\)
- \(\begin{Bmatrix}{n\\2}\end{Bmatrix}= 2^{n-1}-1\)
- \(\begin{Bmatrix}{n\\n}\end{Bmatrix} = 1\)
- \(\begin{Bmatrix}{\ \ \ n\\n-1}\end{Bmatrix}=\begin{pmatrix}{n\\2}\end{pmatrix}\)
- \(\begin{Bmatrix}{\ \ \ n\\n-2}\end{Bmatrix}=\begin{pmatrix}{n\\3}\end{pmatrix} + 3\cdot\begin{pmatrix}{n\\4}\end{pmatrix}\)
通项公式
用容斥原理求解:
构造问题:将 \(n\) 个元素染上 \(m\) 种颜色的方案数。
答案: \(\operatorname{ans}=m^n\) 。
增加条件:每种颜色至少出现一次。
枚举没有出现的颜色种数,容斥得:
同时问题所求若不区分颜色,即为第二类斯特林数,故:
\((2)\) 式用于求第二类斯特林数的一行。
对 \((1)\) 式进行变形,可得到另一种递推公式:
求解
第二类斯特林数递推式不是多项式乘法。
把通项公式写成卷积形式:
设:
对于每个 \(m\) 计算:
卷积:
可以用 NTT
求解 。