斯特林数学习笔记

斯特林数学习笔记

前置知识

普通生成函数+下降幂+多项式

定义

斯特林数是组合数学概念,分为第一类斯特林数和第二类斯特林数

第一类斯特林数

第一类斯特林数表示为 \(\begin{bmatrix}n\\m\end{bmatrix}\),表示 \(n\) 个不同的人坐 \(m\) 张相同的圆桌的方案数(每张圆桌至少坐一人)。

考虑递推式。当我们新加入一个人的时候,要么坐到一张新的桌子,要么和之前的坐在一起。由于是圆桌,所以我们考虑这个人坐在了哪一个人的左边。于是有递推式:

\[\begin{bmatrix}n\\m\end{bmatrix}=(n-1)\begin{bmatrix}n-1\\m\end{bmatrix}+\begin{bmatrix}n-1\\m-1\end{bmatrix} \]

递推的复杂度是 \(O(nm)\)

第二类斯特林数

第二类斯特林数表示为 \(\begin{Bmatrix}n\\m\end{Bmatrix}\),表示 \(n\) 个不同的球放进 \(m\) 个相同的盒子的方案数(每个盒子至少放一个球)。

考虑递推式。当我们新加入一个球的时候,要么放到一个新的盒子,要么放在之前的盒子里。于是有递推式

\[\begin{Bmatrix}n\\m\end{Bmatrix}=m\begin{Bmatrix}n-1\\m\end{Bmatrix}+\begin{Bmatrix}n-1\\m-1\end{Bmatrix} \]

时间复杂度是 \(O(nm)\) 的。

如果只需要求单点的值,可以考虑容斥,令 \(f(x)\) 表示至少有 \(x\) 个盒子空着的情况数。考虑假设 \(m\) 个盒子互不相同,那么考虑先选出 \(x\) 个盒子不放,剩下的 \(m-x\) 个盒子可以让 \(n\) 个球任意放置,于是有

\[f(x)=\binom{m}{x}(m-x)^n \]

同时让 \(g(x)\) 表示恰好有 \(x\) 个盒子空着的情况数,于是有

\[f(x)=\sum_{i=x}^{m}\binom{i}{x}g(i) \]

因为盒子其实本质相同,所以所求即为 \(\frac{g(0)}{m!}\),通过二项式反演可得

\[\begin{aligned}\frac{g(0)}{m!}&=\frac{\sum_{i=0}^{m}(-1)^{i-0}\binom{i}{0}f(i)}{m!}\\&=\frac{\sum_{i=0}^{m}(-1)^i\binom{m}{i}(m-i)^n}{m!} \end{aligned} \]

所以

\[\begin{Bmatrix}n\\m\end{Bmatrix}=\frac{\sum_{i=0}^{m}(-1)^i\binom{m}{i}(m-i)^n}{m!} \]

更多的我们尝试求解其生成函数,令 \(F_k(x)=\sum_{i\ge 0}\begin{Bmatrix}i\\k\end{Bmatrix}x^i\)。那么根据递推式有

\[\begin{aligned}&F_k(x)=kxF_k(x)+xF_{k-1}(x)\\\Rightarrow&(1-kx)F_k(x)=xF_{k-1}(x)\\\Rightarrow&F_k(x)=\frac{xF_{k-1}(x)}{1-kx} \end{aligned} \]

显然 \(F_0(x)=1\),于是可以得到

\[F_k(x)=\frac{x^k}{\prod_{i=1}^{k}(1-ix)} \]

于是我们得到了 \(F_k(x)\) 的封闭形式。

性质

第一类斯特林数

首先有

\[x^{\overline{n}}=\sum_{i\ge 0}\begin{bmatrix}n\\i\end{bmatrix}x^i \]

考虑用数学归纳法证明。

\(n=0\) 时,原式写作

\[1=1 \]

等式对于任意 \(x\) 均成立。考虑新加入一个数,要么当作自环,有 \(x\) 种染色方案,要么插进之前的一个数字的后面,有 \(n-1\) 种选择。令 \(f_x(n)=\sum_{i\ge 0}\begin{bmatrix}n\\i\end{bmatrix}x^i\),那么则有

\[f_x(n+1)=xf_x(n)+nf_x(n)=(x+n)f_x(n)=(x+n)x^{\overline{n}}=x^{\overline{n+1}} \]

则对于任意 \(n,x\),等式均成立。

接下来有

\[x^{\underline{n}}=\sum_{i=0}^{n}(-1)^{n-i}\begin{bmatrix}n\\i\end{bmatrix}x^i \]

可以发现

\[\begin{aligned}x^{\underline{n}}&=(-1)^n(-x)^{\overline{n}}\\&=(-1)^n\sum_{i\ge0}\begin{bmatrix}n\\i\end{bmatrix}(-x)^i\\&=\sum_{i\ge 0}(-1)^{n+i}\begin{bmatrix}n\\i\end{bmatrix}x^i\\&=\sum_{i\ge 0}(-1)^{n-i}\begin{bmatrix}n\\i\end{bmatrix}x^i \end{aligned} \]

第二类斯特林数

\[x^n=\sum_{i=0}^{n}\begin{Bmatrix}n\\i\end{Bmatrix}i!\binom{x}{i}=\sum_{i=0}^{n}\begin{Bmatrix}n\\i\end{Bmatrix}x^{\underline{i}} \]

考虑组合意义,即 \(n\) 个不同的球放进 \(x\) 个不同的盒子里,盒子可以为空。那么就是枚举具体放进了多少个盒子,从 \(x\) 个盒子中选出来,将 \(n\) 个球放入有多少方案,接着考虑不同的盒子,因此需要乘上 \(i!\)

然后我们发现我们可以将下降幂转化成普通幂,同时也可以将普通幂转化成下降幂。

斯特林反演

形式上和二项式反演类似

\[f(n)=\sum_{i=0}^{n}\begin{Bmatrix}n\\i\end{Bmatrix}g(i)\Leftrightarrow g(n)=\sum_{i=0}^{n}\begin{bmatrix}n\\i\end{bmatrix}(-1)^{n-i}f(i) \]

首先证明一个反转公式

\[\sum_{k=m}^{n}(-1)^{k-m}\begin{Bmatrix}n\\k\end{Bmatrix}\begin{bmatrix}k\\m\end{bmatrix}=[m=n]\\\sum_{k=m}^{n}(-1)^{n-k}\begin{bmatrix}n\\k\end{bmatrix}\begin{Bmatrix}k\\m\end{Bmatrix}=[m=n] \]

证明在于

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

为了使得等式两边恒等,只有当 \(i=n\)\(\sum_{j=i}^{n}(-1)^{j-i}\begin{bmatrix}j\\i\end{bmatrix}\begin{Bmatrix}n\\j\end{Bmatrix}=1\),否则结果均为 \(0\)。即

\[\sum_{j=i}^{n}(-1)^{j-i}\begin{bmatrix}j\\i\end{bmatrix}\begin{Bmatrix}n\\j\end{Bmatrix}=[i=n] \]

换元后即可得到

\[\sum_{k=m}^{n}(-1)^{k-m}\begin{Bmatrix}n\\k\end{Bmatrix}\begin{bmatrix}k\\m\end{bmatrix}=[m=n] \]

对于下面的式子,则有

\[\begin{aligned}m^{\underline{n}}&=\sum_{i=0}^{n}(-1)^{n-i}\begin{bmatrix}n\\i\end{bmatrix}x^{i}\\&=\sum_{i=0}^n(-1)^{n-i}\begin{bmatrix}n\\i\end{bmatrix}\sum_{j=0}^{i}\begin{Bmatrix}i\\j\end{Bmatrix}x^{\underline{j}}\\&=\sum_{i=0}^{n}x^{\underline{i}}\sum_{j=i}^{n} \end{aligned} \]

接着证明反演公式,如果 \(g(n)=\sum_{i=0}^{n}\begin{bmatrix}n\\i\end{bmatrix}(-1)^{n-i}f(i)\),则

\[\begin{aligned}f(n)&=\sum_{i=0}^{n}[i=n]f(i)\\&=\sum_{i=0}^{n}f(i)\sum_{j=i}^{n}(-1)^{j-i}\begin{Bmatrix}n\\j\end{Bmatrix}\begin{bmatrix}j\\i\end{bmatrix}\\&=\sum_{i=0}^{n}\begin{Bmatrix}n\\i\end{Bmatrix}\sum_{j=0}^{i}(-1)^{i-j}\begin{bmatrix}i\\j\end{bmatrix}f(j)\\&=\sum_{i=0}^{n}\begin{Bmatrix}n\\i\end{Bmatrix}g(i) \end{aligned} \]

而如果 \(f(n)=\sum_{i=0}^{n}\begin{Bmatrix}n\\i\end{Bmatrix}g(i)\),则

\[\begin{aligned}g(n)&=\sum_{i=0}^{n}[i=n]g(i)\\&=\sum_{i=0}^{n}g(i)\sum_{j=i}^{n}(-1)^{n-j}\begin{bmatrix}n\\j\end{bmatrix}\begin{Bmatrix}j\\i\end{Bmatrix}\\&=\sum_{i=0}^{n}(-1)^{n-i}\begin{bmatrix}n\\i\end{bmatrix}\sum_{j=0}^{i}\begin{Bmatrix}i\\j\end{Bmatrix}g(j)\\&=\sum_{i=0}^{n}(-1)^{n-i}\begin{bmatrix}n\\i\end{bmatrix}f(i) \end{aligned} \]

由此,我们证明了斯特林反演的公式

\[f(n)=\sum_{i=0}^{n}\begin{Bmatrix}n\\i\end{Bmatrix}g(i)\Leftrightarrow g(n)=\sum_{i=0}^{n}\begin{bmatrix}n\\i\end{bmatrix}(-1)^{n-i}f(i) \]

posted @ 2024-07-11 11:11  DycIsMyName  阅读(7)  评论(0编辑  收藏  举报