Loading

斯特林数与斯特林反演

首先我们先来了解什么叫做斯特林数。

第一类斯特林数

\(\left[n\atop m \right]\) 或者 \(s(n,m)\) 表示从 \(n\) 个元素中选出 \(m\) 个圆排列的方案数。

什么是圆排列,对于两个排列,如果循环相同,那么这两个排列就被视为相同的圆排列,不难发现,\(n\) 个元素的圆排列个数为 \((n-1)!\)

递推式

考虑递推斯特林数。我们考虑第 \(n\) 个元素放在哪个圆排列中,首先是考虑新放一个圆排列,这样的方案数为 \(s(n-1,m-1)\),考虑把第 \(n\) 个元素放进之前的某个圆排列中,不难发现,把一个元素放入一个 \(4\) 个元素的圆排列中有 \(4\) 种放法,所以我们把第 \(n\) 个元素放在之前的某个圆排列中一共有 \(n-1\) 中放法,由此可以得到这样一个式子:

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

这就是第一类斯特林数的递推式。

递推边界:\(s(n,n)=1(n\ge 0),s(n,0)=0(n\ge 1)\)

性质

  • \(s(n,1)=(n-1)!\)

\(n\) 个元素的圆排列个数为 \((n-1)!\) 可以得到。

  • \(s(n,n-1)=\binom{n}{2}\)

\(n\) 个元素组成 \(n-1\) 个圆排列,实际上是从这 \(n\) 个元素里面选出来两个组成一个大小为 \(2\) 的圆排列,其余元素单独组成员排列。由此可知,性质成立。

  • \(s(n,2)=(n-1)!\sum_{i=1}^{n-1}\frac{1}{i}\)

首先我们考虑设第一个圆排列的元素个数为 \(i\) ,第二个圆排列的元素个数为 \(n-i\),那么根据 \(s(n,1)=(n-1)!\) 我们可以得到 \(\binom{n}{i}(i-1)!(n-i-1)!\),同时我们需要注意到,因为在第一类斯特林数的定义中圆排列相互之间是没有顺序的,但是我们在计数的过程中却区分了第一个圆排列,第二个圆排列,所以我们算重了 \(2\) 遍,由此我们可以得到:

\[s(n,2)=\sum\limits_{i=1}^{n-1}\frac{\binom{n}{i}(i-1)!(n-i-1)!}{2}\\ =\sum\limits_{i=1}^{n-1}\frac 12 \frac{n!}{i!(n-i)!}\times (i-1)!\times (n-i-1)!\\ =\sum\limits_{i=1}^{n-1}\frac 12 \frac{n!}{i(n-i)}=(n-1)!\sum\limits_{i=1}^{n-1}\frac{1}{2}(\frac{1}{i}+ \frac{1}{n-i}) \]

容易发现 \(\frac{1}{i}\)\(\frac{1}{n-i}\) 的贡献相同,所以原式得证。

  • \(s(n,n-2)=2\times \binom{n}{3}+3\times \binom{n}{4}\)

我们分两种情况讨论:第一种情况,我们把 \(n-3\) 个元素分给 \(n-3\) 个圆排列,其余 \(3\) 个元素自成一个排列,这样的方案数为 \(2\times \binom{n}{3}\),前者是 \(3\) 元素圆排列个数,后者是从 \(n\) 个元素中选出三个当圆排列。

第二种情况,我们把 \(n-4\) 个元素分给 \(n-4\) 个圆排列,然后剩下两个圆排列每个圆排列两个元素,首先 \(\binom{n}{4}\) 选出 \(4\) 个元素,然后再 \(\binom{4}{2}\) 选出两个元素给第一个圆排列,考虑到我们又给排列定了顺序,所以乘上 \(\frac 12\) 。由此可以得到原式。

  • \(\sum_{k=0}^ns(n,k)n^k=n!\)

通过下文中的第一类斯特林数的生成函数可以得到这个性质。

符号

第一类斯特林数分为有符号斯特林数和无符号斯特林数,有符号斯特林数通常表示为 \(s_s\),无符号斯特林数通常表示为 \(s_u\),我们有 \(s_s(n,k)=(-1)^{n-k}s_u(n,k)\),在本文中,若无特殊说明,第一类斯特林数通常都指的是无符号斯特林数。

第二类斯特林数

\(\left\{n\atop m\right\}\)\(S(n,m)\) 表示把 \(n\) 个元素划分成 \(m\) 个非空集合的方案数,其中 \(m\) 个集合两两相同。

通项公式

我们考虑容斥来计算第二类斯特林数的通项公式,首先不管两个限制:非空和集合两两相同。

我们钦定有 \(i\) 个集合是空的,然后把所有的球随意的放进剩下的盒子,这里盒子两两不同,这样的方案数应该为 \(\binom{n}{i}(m-i)^n\),然后我们容斥一下,就可以得到非空的方案数,再乘上 \(\frac{1}{m!}\) 就可以得到盒子两两相同的方案数。由此,我们可以得到:

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

递推式

我们一样考虑第 \(n\) 个元素怎么放。

第一种情况,把第 \(n\) 个元素放在最后一个盒子里,其余的元素放在其他的盒子里,这样的方案数为 \(S(n-1,m-1)\)。第二种情况,把第 \(n\) 个元素和其他元素放在一起,注意这里元素两两不同而盒子两两相同,所以说我们关注的是元素的组合情况,对于每一种方案,我们把第 \(n\) 个元素加入一个新的组合都会产生一种情况,所以方案数为 \(mS(n-1,m)\),由此,我们可以得到 \(S(n,m)=S(n-1,m-1)+mS(n-1,m)\)

边界条件:\(S(n,n)=1(n\ge 0),S(n,0)=0(n>1)\)

性质

  • \(S(n,1)=1\)

根据第二类斯特林数的定义不难的出这个结论。

  • \(S(n,2)=2^{n-1}-1\)

    两个集合我们考虑第一个集合放哪些数,这样的计数结果为 \(\sum_{i=1}^{n-1}\binom ni\),考虑到我们给集合定顺序但集合间并没有顺序,所以我们算重了两边,最终结果为:

\[\frac 12\sum\limits_{i=1}^{n-1}\binom ni=\frac 12(2^n-2)=2^{n-1}-1 \]

  • \(S(n,n-1)=\binom n2\)

不难想到这个东西实际上是从 \(n\) 个元素中选出 \(2\) 个放到一个集合里去,由此可以得到上面这个式子。

  • \(\left\{ n\atop m \right\}\equiv 0\bmod n\)\(n\) 是质数且 \(1<m<n\) 时成立。

证明:

\(n\) 是质数且 \(1<m<n\) 时,我们可以得到:

\[\left\{ n\atop m \right\} = \frac{1}{m!}\sum\limits_{i=0}^m(-1)^i\binom{m}{i}(m-i)^n\\ =\sum\limits_{i=0}^m(-1)^i \frac{(m-i)^n}{i!(m-i)!}\\ \equiv \sum\limits_{i=0}^m(-1)^i\frac{m-i}{i!(m-i)!} \]

我们对上面这个东西建立生成函数:

\[F(x)=\sum\limits_{m\ge0}(\sum\limits_{i=0}^m(-1)^i\frac{m-i}{i!(m-i)!})x^m \]

发现这个东西是由两个生成函数卷积得到:

\[F(x)=(\sum\limits_{i\ge0}\frac{(-1)^i}{i!}x^i) \times (\sum\limits_{i\ge0}\frac{i}{i!}x^i) \]

发现这个是因为关注到 \(F(x)\) 的系数本身就是一个卷积形式。

发现前面这个东西的封闭形式是 \(e^{-x}\),证明可以通过写出 \(e^ {-x}\) 在原点处的泰勒展开得到。

而后面那个式子,不难发现 \(i=0\) 时式子值为 \(0\),所以能够得到:

\[\sum\limits_{i\ge0}\frac{i}{i!}x^i=\sum\limits_{i\ge 1}\frac{i}{i!}x^i\\ =\sum\limits_{i\ge 1} \frac{1}{(i-1)!}x^i=\sum\limits_{i\ge 0} \frac{x^{i+1}}{i!}\\ =x\sum\limits_{i\ge0}\frac{x^i}{i!}=xe^x \]

由此我们可以得到 \(F(x)\) 的封闭形式 \(F(x)=x\)

注意到 \(F(x)\) 的第 \(m\) 次项为 \(0\) ,而第 \(m\) 项的系数为 \(\left\{ n\atop m \right\}\),由此可知原式成立。

  • \(n^k=\sum_{i=0}^kS(k,i)i!\binom ni\)

第三类斯特林数

第三类斯特林数也称作拉赫数,因为和第一二类斯特林数比较类似,所以有这两个名字。
拉赫数可以通过上升幂与下降幂之间的转化来定义,即:

\[x^{\overline{n}}=\sum\limits_{k=0}^nL(n,k)x^{\underline{k}}\\ x^{\underline{n}}=\sum\limits_{k=0}^n(-1)^{n-k}L(n,k)x^{\overline{k}} \]

由此我们可以得到 \(L(n,k)\) 的通项公式:

\[L(n,k)=\binom{n-1}{k-1}\frac{n!}{k!} \]

有这个通项公式可以知道第三类斯特林数的递推公式:

\[L(n,k)=(n+k-1)L(n-1,k)+L(n-1,k-1) \]

这个定西可以简单的通过代入来证明。

各种幂之间的转换

这里先给出上升幂与下降幂的公式:

\[x^{\overline{n}}=x(x+1)...(x+n-1)\\ x^{\underline{n}}=x(x-1)...(x-n+1) \]

上升幂与下降幂之间的转换关系:

\[(-x)^{\underline{n}}=(-1)^nx^{\overline{n}}\\ (-x)^{\overline{n}}=(-1)^nx^{\underline{n}} \]

二项式系数与下降幂之间的关系:

\[\binom nk=\frac{n^{\underline{k}}}{k!} \]

证明比较显然,这里不再赘述。

  • 上升幂与通常幂之间的转换:

\[x^{\overline{n}}=\sum\limits_{i=0}^ns(n,i)x^i\\ x^n=\sum\limits_{i=0}^n(-1)^{n-i}S(n,i)x^{\overline{i}}\\ \]

证明:

  • 通常幂与下降幂之间的转换:

\[x^{\underline n}=\sum\limits_{i=0}^n(-1)^{n-i}s(n,i)x^i\\ x^n=\sum\limits_{i=0}^nS(n,i)x^{\underline{i}}\\ \]

  • 上升幂与下降幂之间的转换:

\[x^{\overline{n}}=\sum\limits_{k=0}^nL(n,k)x^{\underline{k}}\\ x^{\underline{n}}=\sum\limits_{k=0}^n(-1)^{n-k}L(n,k)x^{\overline{k}} \]

以上性质可以通过归纳以及上升幂与下降幂之间的转换来证明,这里不再赘述。

记忆上面的实际只需要注意什么时候添加 \(-1\),给定序列 \(x^{\underline{n}},x^n,x^{\overline{n}}\),从左往右转换时需要加,从右往左转换时不需要加,然后注意从上升下降幂转换到通常幂用第一类斯特林数,从通常幂转换到上升下降幂用第二类斯特林数。

通过以上式子,我们通过把上升幂用第三类斯特林数直接转化成下降幂,和先用第一类斯特林数转化成通常幂,再用第二类斯特林数转化成下降幂两种方式,通过比较下降幂系数,我们可以得到第三类斯特林数和两个斯特林数之间的关系:

\[L(n,k)=\sum\limits_{k=0}^ns(n,k)S(k,i) \]

生成函数

第一类斯特林数的生成函数就是上升幂。

\(B_k(x)=\sum_{i\ge k} S(i,k)x^i\),通过观察,我们可以知道:

\[B_k(x)=xB_{k-1}(x)+kxB_{k}(x) \]

由此我们可以得到:

\[B_k(x)=\frac{xB_{k-1}(x)}{1-kx}=B_k(x)=\frac{x^2B_{k-2}(x)}{(1-kx)(1-(k-1)x)}\\ =\frac{x^k}{\prod_{r=1}^k(1-rx)} \]

\(F_k(x)=\sum_{i\ge k}S(i,k)\frac{x^i}{i!}\) 则我们可以得到:

\[F_k(x)=\sum\limits_{i\ge 0}\frac{1}{k!}\sum\limits_{j=0}^k(-1)^{k-j}\binom kj j^i\frac{x^i}{i!}\\ =\frac{1}{k!}\sum\limits_{j=0}^k(-1)^{k-j}\binom kj\sum\limits_{i\ge 0}j^i\frac{x^i}{i!}\\ =\frac{1}{k!}\sum\limits_{j=0}^k(-1)^{k-j}\binom kje^{jx}\\ =\frac{(e^x-1)^k}{k!} \]

斯特林反演

斯特林反演公式:

\[f(n)=\sum\limits_{i=0}^nS(n,i)g(i)\Leftrightarrow g(n)=\sum\limits_{i=0}^n(-1)^{n-i}s(n,i)f(i) \]

要证明上面这个式子,我们首先引入一个反转公式:

\[x^n=\sum\limits_{i=0}^nS(n,i)x^{\underline{i}}\\ =\sum\limits_{i=0}^nS(n,i)(-1)^i(-x)^{\overline{i}}\\ =\sum\limits_{i=0}^nS(n,i)(-1)^i\sum\limits_{j=0}^is(i,j)(-x)^j\\ =\sum\limits_{j=0}^nx^j\sum\limits_{i=j}^nS(n,i)s(i,j)(-1)^{i-j}\\ \]

比较两边系数你就可以得到:

\[\sum\limits_{i=m}^nS(n,i)s(i,m)(-1)^{i-m}=[n=m] \]

注意这里 \(-1\) 的系数也可以是 \(n-i\),容易发现当 \(n-m=0\) 时这两个数奇偶性相同,当奇偶性不同的时候这两个数绝对不相等,也就是说是 \(0\),这并不影响我们这个式子的恒等。

用同样的方法,我们可以得到另一个反转公式:

\[\sum\limits_{i=m}^ns(n,i)S(i,m)(-1)^{i-m}=[n=m] \]

现在我们来证明斯特林反演。

\[g(n)=\sum\limits_{i=0}^n[i=n]g(i)\\ =\sum\limits_{i=0}^ng(i)\sum\limits_{j=i}^n s(n,j)S(j,i)(-1)^{n-j}\\ =\sum\limits_{j=0}^ns(n,j)(-1)^{n-j}\sum\limits_{i=0}^jS(j,i)g(i)\\ =\sum\limits_{j=0}^ns(n,j)(-1)^{n-j}f(j) \]

同理,从右往左也可以证明,于是原式得证。

和二项式反演一样,这个式子也有许多变式。由反转公式对称性可以知道,我们交换等号两边的斯特林数仍然成立。我们让和式从 \(n\) 开始枚举,枚举的量变成第一个数,式子仍然成立。只需要注意证明的时候不用 \(n-j\) 而是用 \(j-m\)。这里不再赘述其他的几种斯特林反演。

posted @ 2022-01-08 17:37  hyl天梦  阅读(734)  评论(2编辑  收藏  举报