斯特林数相关

最近做题时发现斯特林数这一块不怎么成系统,于是从各路神仙的博客里学习了一下,因此也就有了这篇博客

主要学习了这位神仙的博客:第二类斯特林数总结

第二类斯特林数

第二类斯特林数 \(\begin{Bmatrix}n\\i\end{Bmatrix}\) 代表将 \(n\) 个元素划分到 \(i\) 个集合里的方案数,也可以理解为将 \(n\) 个不同的小球放入 \(i\) 个相同的盒子里的方案数,递推公式为

\[\begin{Bmatrix}n\\i\end{Bmatrix}=\begin{Bmatrix}n-1\\i-1\end{Bmatrix}+i\times \begin{Bmatrix}n-1\\i\end{Bmatrix}\tag{1.1} \]

即讨论第 \(n\) 个元素是放进已有的 \(i\) 个盒子里还是放到一个新盒子里

直接递推求是 \(O(n^2)\) 的,但我们还有一个等式

\[n^m=\sum\limits_{i=0}^{n}\begin{Bmatrix}m\\i\end{Bmatrix}i!\dbinom{n}{i}\tag{1.2} \]

二项式反演一下得到

\[\begin{Bmatrix}m\\n\end{Bmatrix}=\frac{1}{n!}\sum\limits_{i=0}^{n}(-1)^{n-i}\dbinom{n}{i}i^m\tag{1.3} \]

然后就能 \(\text{FFT}\)

其实式 \((1.3)\) 也可以从容斥的角度思考,其中 \(\dbinom{n}{i}\) 是选择 \(i\) 个盒子必须为空的方案数,而又因为这些计算都是在盒子不同的基础上进行的,所以最后还要除以 \(n!\) 消去有序性

另外,对于式 \((1.2)\) ,我们也可以将其写成

\[n^m=\sum\limits_{i=0}^{m}\begin{Bmatrix}m\\i\end{Bmatrix}n^{\underline{i}}\tag{1.4} \]

我们将在下面看到这个等式的用途

第一类斯特林数

第一类斯特林数分为有符号和无符号两种,设 \(s_s\) 表示有符号第一类斯特林数,\(s_u\) 为无符号第一类斯特林数,两者的关系为 \(s_s(n,m)=(-1)^{n+m}s_u(n,m)\)

在这里我们重点讨论无符号第一类斯特林数

无符号第一类斯特林数 \(\begin{bmatrix}n\\i\end{bmatrix}\) 的含义为将 \(n\) 个元素分到 \(i\) 个圆排列中的方案数,递推公式为

\[\begin{bmatrix}n\\i\end{bmatrix}=\begin{bmatrix}n-1\\i-1\end{bmatrix}+(n-1)\times \begin{bmatrix}n-1\\i\end{bmatrix}\tag{2.1} \]

即考虑在已有的 \(n-1\) 个元素中的一侧插入第 \(n\) 个元素扩大圆排列或单独把第 \(n\) 个元素作为一个圆排列

它有一些不错的性质

\[\sum\limits_{i=0}^{n}\begin{bmatrix}n\\i\end{bmatrix}=n!\tag{2.2} \]

以及

\[\begin{bmatrix}n\\1\end{bmatrix}=(n-1)!\tag{2.3} \]

对于式 \((2.2)\) ,左边的式子其实在枚举由 \(i\) 个循环组成的置换的个数,而 \(n\) 个元素的排列与置换一一对应,那么显然等式成立

对于式 \((2.3)\) ,我们考虑展开 \(\begin{bmatrix}n\\1\end{bmatrix}\)

\[\begin{bmatrix}n\\1\end{bmatrix}=(n-1)\begin{bmatrix}n-1\\1\end{bmatrix}=(n-1)(n-2)\begin{bmatrix}n-2\\1\end{bmatrix}=...=(n-1)!\tag{2.4} \]

其中展开出来的 \(\begin{bmatrix}n\\0\end{bmatrix}\) 因等于 \(0\) 而被舍弃

类似于式 \((1.4)\),第一类斯特林数也有类似的等式

\[\sum\limits_{i=0}^{n}s_u(n,i)x^i=x^{\overline{n}}\tag{2.5} \]

\[\sum\limits_{i=0}^{n}s_s(n,i)x^i=x^{\underline{n}}\tag{2.6} \]

根据 \(s_s\)\(s_u\) 的关系,式 \((2.6)\) 也可以写为

\[\sum\limits_{i=0}^{n}(-1)^{n-i}s_u(n,i)x^i=x^{\underline{n}}\tag{2.7} \]

用数学归纳法证明式 \((2.7)\)

\[x^{\underline{n+1}}\\=x^{\underline{n}}\times (x-n)\\=(x-n)\sum\limits_{i=0}^{n}(-1)^{n-i}s_u(n,i)x^i\\=\sum\limits_{i=1}^{n+1}(-1)^{n+1-i}s_u(n,i-1)x^i+\sum\limits_{i=0}^{n}(-1)^{n+1-i}ns_u(n,i)x^i\\=s_u(n+1,n+1)x^{n+1}+\sum\limits_{i=0}^{n}(-1)^{n+1-i}(s_u(n,i-1)+ns_u(n,i))x^i\\=s_u(n+1,n+1)x^{n+1}+\sum\limits_{i=0}^{n}(-1)^{n+1-i}s_u(n+1,i)x^i\\=\sum\limits_{i=0}^{n+1}(-1)^{n+1-i}s_u(n+1,i)x^i \]

那么对于式 \((2.5)\) 同理也可证明

从另一个角度来看,\(x^{\overline{n}}\)\(x^{\underline{n}}\) 分别可看作无符号第一类斯特林数 \(s_u\) 与有符号第一类斯特林数的 \(s_s\) 的生成函数的封闭形式

我们可以用倍增+\(\text{NTT}\)\(O(n\log n)\) 的时间内求出它的生成函数 \(G(x)\),那么 \(s(n,i)=[x^i]G(x)\)

斯特林反演

斯特林反演说的是这样一件事情:有两个数列 \(\{f_n\}\)\(\{g_n\}\) ,那么若有

\[f_n=\sum\limits_{i=0}^{n}\begin{Bmatrix}n\\i\end{Bmatrix}g_i\tag{3.1} \]

就有

\[g_n=\sum\limits_{i=0}^{n}(-1)^{n-i}\begin{bmatrix}n\\i\end{bmatrix}f_i\tag{3.2} \]

有了上面的一些推导我们就不难证明其正确性了

由式 \((1.4)\) 与式 \((2.7)\) 可知,若令 \(f_i=x^i\)\(g_i=x^{\underline{i}}\) ,那么显然上面的关系成立,那么有

\[F=A\times G,G=B\times F\tag{3.3} \]

\[F=A\times B\times F\tag{3.4} \]

可以看出 \(A\times B=I\) ,即 \(A=B^{-1}\)

说明 \(a_{n,i}=\begin{Bmatrix}n\\i\end{Bmatrix}\) 构成的矩阵与 \(b_{n,i}=(-1)^{n-i}\begin{bmatrix}n\\i\end{bmatrix}\) 构成的矩阵互逆

那么对于任意的 \(f_n\)\(g_n\) ,上述关系一定也还成立

而如果我们暴力将式 \((2.7)\) 代入式 \((1.4)\) 中,也可以得到同样的结论:

\[n^m\\=\sum\limits_{i=0}^{m}\begin{Bmatrix}m\\i\end{Bmatrix}n^{\underline{i}}\\=\sum\limits_{i=0}^{m}\begin{Bmatrix}m\\i\end{Bmatrix}\sum\limits_{j=0}^{i}(-1)^{i-j}\begin{bmatrix}i\\j\end{bmatrix}n^j\\=\sum\limits_{i=0}^{m}n^i\sum\limits_{j=i}^{m}(-1)^{j-i}\begin{bmatrix}j\\i\end{bmatrix}\begin{Bmatrix}m\\j\end{Bmatrix} \]

那么显然有

\[[i==m]=\sum\limits_{j=i}^{m}(-1)^{j-i}\begin{bmatrix}j\\i\end{bmatrix}\begin{Bmatrix}m\\j\end{Bmatrix}\tag{3.5} \]

即说明 \(a_{n,i}=\begin{Bmatrix}n\\i\end{Bmatrix}\) 构成的矩阵与 \(b_{n,i}=(-1)^{n-i}\begin{bmatrix}n\\i\end{bmatrix}\) 构成的矩阵互逆

当然第一类斯特林数也可以反演到第二类斯特林数,只不过可能要依据 \(i\)\(m\) 的奇偶性改一改 \(-1\) 的指数

如果有写的不到位的地方我会再补充一点...

posted @ 2019-09-11 17:14  ForwardFuture  阅读(301)  评论(0编辑  收藏  举报