斯特林数相关
第二类斯特林数
定义 第二类斯特林数 \(S_2(n,k)\) 表示 \(\{1,2\dots n\}\) 划分成 \(k\) 个非空子集的方案数。
举个例子:
\(S=\{1,2,3,4\}\),\(k=3\)。
其方案为:
\(\{1,2\}\cup\{3\}\cup\{4\},\{1,3\}\cup\{2\}\cup\{4\},\{1,4\}\cup\{2\}\cup\{3\}\\ \{1\}\cup\{2,3\}\cup\{4\},\{1\}\cup\{2,4\}\cup\{3\},\{1\}\cup\{3,4\}\cup\{2\}\)
共计 \(6\) 种。故 \(S_2(4,2)=6\) 。
第二类斯特林数的递推公式推导:
现要求 \(S_2(n,k)\),考察第 \(n\) 个数的情况:
若第 \(n\) 个数单独成一个集合,那么有 \(S_2(n-1,k-1)\) 种情况,即剩下 \(n-1\) 个数分成 \(n-1\) 个集合,第 \(n\) 个数单独分开。
若第 \(n\) 个数和其他若干个数共同成一个集合,因为共有 \(k\) 个集合,第 \(n\) 个数有 \(k\) 中加入方式, 于是共计 \(k \times S_2(n-1,k)\) 种情况。
综上,可以得出第二类斯特林数的递推公式:
定理 \(1.1\): \(S_2(n,k)=S_2(n-1, k-1)+k\times S_2(n-1,k)\)
第一类斯特林数
定义 第一类斯特林数 \(S_1(n,k)\) 表示 \(n\) 个数形成 \(m\) 个轮换的方案数。
第一类斯特林数递推公式推导:
现要求 \(S_1(n,k)\) ,考察第 \(n\) 个数的情况:
若第 \(n\) 个数单独成一个环,那么有 \(S_1(n-1, k-1)\) 种情况。
若第 \(n\) 个数与其他若干元素一起成一个环,那么 \(n\) 共计有 \(n-1\) 种加入方式。
综上,可以得出第一类斯特林数的递推公式:
定理 \(2.1\): \(S_1(n,k)=S_1(n-1,k-1)+(n-1)S_1(n - 1, k)\)
性质 \(2.2\):
-
边界:\(S_1(0,0)=1\),\(S_1(n,0)=0\)
-
\(S_1(n,1)=(n-1)!\) :即圆排列的方案数。
-
\(\displaystyle S_1(n,n-1)=\frac{n(n-1)}{2}\) :\(n\) 个数中选 \(2\) 个数的方案数。
-
\(\displaystyle n!=\sum_{i=0}^{n}{S_1(n,i)}\):排列和置换是一一对应的关系,置换具有的轮换数是任意的。
指数生成函数与斯特林数
以下用指数生成函数推导了第二类斯特林数的通项公式。
模板题:第二类斯特林数·行 - 洛谷
回顾一下第二类斯特林数的定义:\(S_2(n, k)\) 表示 \(n\) 个有标号球放入 \(k\) 个无标号盒子且无空盒的方案数。
考虑如下一个式子 \(\displaystyle G(x)=(\sum_{i=1}^{\infty}{\frac{x^i}{i!}})^k\)
那么 \(n![x^n]G(x)\) 表示了 \(n\) 个有标号球放入 \(k\) 个有标号盒子且无空盒的方案数。
于是 \(\displaystyle S_2(n, k)=\frac{n!}{k!}[x^n](G(x)\) 。
下面开始化简:
如上,便得到了第二类斯特林数的通项公式。
这允许我们在 \(O(n\log n)\) 的时间复杂度内计算第 \(n\) 行的斯特林数(\(NTT\))。
模板题 \(2\):第二类斯特林数·列 - 洛谷
这次是固定 \(k\) 了,就变成黑色了?。
返回去看我们推出的式子 \(\displaystyle S_2(n, k)=\frac{n!}{k!}[x^n](e^x-1)^k\)
设 \(F(x)\) 表示 \(S_2(n,k)\) 的生成函数。
那么 \(\displaystyle F(x)=\sum_{i=0}^{\infty}{S_2(i,k)\frac{x^i}{i!}}=\frac{(e^x-1)^k}{k!}\)
这样,多项式快速幂板子即可。
\(Bell\) 数:集合划分计数 - 洛谷
定义 \(Bell\) 数 \(B_n\) 表示把 \(n\) 个有区别的小球放到若干个(任意多个)无区别盒子里的方案数。
即:把集合 \({1,2\dots n}\) 划分成若干个不相交非空子集的方案数。
不难发现:\(Bell\) 数 \(B_n\) 就是第二类斯特林数的前缀和,\(\displaystyle B_n=\sum_{i=0}^{\infty}{S_2(n,i)}\) 。
话不多说,上指数生成函数就对了,设 \(B(x)\) 是 \(\{B_n\}\) 的生成函数。
于是 \(\displaystyle B(x)=e^{e^x−1}\)。
上升幂与下降幂
斯特林数的另外一种记法是:
-
记第一类斯特林数为 \(\begin{bmatrix}n\\ m\end{bmatrix}\)
-
第二类斯特林数为 \(\begin{Bmatrix}n\\ m\end{Bmatrix}\)
定理 \(4.1\): \(\displaystyle x^n=\sum_{k}{\begin{Bmatrix}n\\k\end{Bmatrix}}x^{\underline{k}}\)
证明:
用归纳法做个简单的证明。
已知该式在 \(n-1\) 时成立,根据 \(x\cdot x^{\underline{k}}=x^{\underline{k+1}}+kx^{\underline{k}}\)
从而
定理 \(4.2\):\(\displaystyle x^{\overline{n}}=\sum_{k}{\begin{bmatrix}n\\k\end{bmatrix}x^k}\)
仍然归纳法,类似于定理 \(4.1\) 的证明,利用恒等式 \((x+n-1)\cdot x^{k}=x^{k+1}+(n-1)x^k\),\(x^{\overline{n}}=(x+n-1)\cdot x^{\overline{n-1}}\)
即可得出结论。
总结一下:
-
通常幂转下降幂的系数是第二类斯特林数。
-
上升幂转通常幂的系数是第一类斯特林数。
思考上升幂,下降幂,通常幂之间更多的联系。
推论 \(4.3\):
-
\(\displaystyle x^{\underline{n}}=\sum_{k}{(-1)^{n-k}\begin{bmatrix}n\\ k\end{bmatrix}x^k}\)
-
\(\displaystyle x^n=\sum_{k}{(-1)^{n-k}\begin{Bmatrix}n\\ k\end{Bmatrix}x^{\overline{k}}}\)
上述等式成立是因为 \(x^{\underline{n}}\) 和 \(x^{\overline{n}}\) 的系数仅正负号不相同,配上容斥系数 \((-1)^{n-k}\) 即可得到上述等式。
更具体的,\(x^{\underline{n}}=(-1)^{n}(-x)^{\overline{n}}\) 。
比较模板的题。
定理 \(4.4\):
-
\(\displaystyle \sum_{k}{(-1)^{n-k}\begin{Bmatrix}n\\ k\end{Bmatrix}\begin{bmatrix}k\\m\end{bmatrix}}=[n=m]\)
-
\(\displaystyle \sum_{k}{(-1)^{n-k}}\begin{bmatrix}n\\ k\end{bmatrix}\begin{Bmatrix}k\\m\end{Bmatrix}=[n=m]\)
证明 \(1\):
将定理 \(4.2\) 代入 \(4.3.2\) 可得 \(\displaystyle x^n=\sum_{k,m}{(-1)^{n-k}\begin{Bmatrix}n\\k\end{Bmatrix}\begin{bmatrix}k\\ m\end{bmatrix}x^m}\)
容易知道,仅在 \(m=n\) 时其系数为 \(1\) ,否则其系数为 \(0\) 。
证明 \(2\):
同理,将定理 \(4.1\) 代入 \(4.3.1\) 即可。
斯特林反演
定理 \(5.1\): \(\displaystyle f(n)=\sum_{k=0}^{n}{\begin{bmatrix}n\\k\end{bmatrix}}g(n)\Leftrightarrow g(n)=\sum_{k=0}^{n}{(-1)^{n-k}\begin{Bmatrix}n\\k\end{Bmatrix}f(n)}\)
证明:
与定理 \(4.4\) 有密切联系。
定理 \(5.2\): \(\displaystyle f(n)=\sum_{k=0}^{n}{\begin{Bmatrix}n\\k\end{Bmatrix}}g(n)\Leftrightarrow g(n)=\sum_{k=0}^{n}{(-1)^{n-k}\begin{bmatrix}n\\k\end{bmatrix}f(n)}\)
证明类似于定理 \(5.1\) 。