斯特林数与斯特林反演
首先我们先来了解什么叫做斯特林数。
第一类斯特林数
\(\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\) 中放法,由此可以得到这样一个式子:
这就是第一类斯特林数的递推式。
递推边界:\(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\) 遍,由此我们可以得到:
容易发现 \(\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!}\) 就可以得到盒子两两相同的方案数。由此,我们可以得到:
递推式
我们一样考虑第 \(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\),考虑到我们给集合定顺序但集合间并没有顺序,所以我们算重了两边,最终结果为:
- \(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\) 时,我们可以得到:
我们对上面这个东西建立生成函数:
发现这个东西是由两个生成函数卷积得到:
发现这个是因为关注到 \(F(x)\) 的系数本身就是一个卷积形式。
发现前面这个东西的封闭形式是 \(e^{-x}\),证明可以通过写出 \(e^ {-x}\) 在原点处的泰勒展开得到。
而后面那个式子,不难发现 \(i=0\) 时式子值为 \(0\),所以能够得到:
由此我们可以得到 \(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\)
第三类斯特林数
第三类斯特林数也称作拉赫数,因为和第一二类斯特林数比较类似,所以有这两个名字。
拉赫数可以通过上升幂与下降幂之间的转化来定义,即:
由此我们可以得到 \(L(n,k)\) 的通项公式:
有这个通项公式可以知道第三类斯特林数的递推公式:
这个定西可以简单的通过代入来证明。
各种幂之间的转换
这里先给出上升幂与下降幂的公式:
上升幂与下降幂之间的转换关系:
二项式系数与下降幂之间的关系:
证明比较显然,这里不再赘述。
- 上升幂与通常幂之间的转换:
证明:
- 通常幂与下降幂之间的转换:
- 上升幂与下降幂之间的转换:
以上性质可以通过归纳以及上升幂与下降幂之间的转换来证明,这里不再赘述。
记忆上面的实际只需要注意什么时候添加 \(-1\),给定序列 \(x^{\underline{n}},x^n,x^{\overline{n}}\),从左往右转换时需要加,从右往左转换时不需要加,然后注意从上升下降幂转换到通常幂用第一类斯特林数,从通常幂转换到上升下降幂用第二类斯特林数。
通过以上式子,我们通过把上升幂用第三类斯特林数直接转化成下降幂,和先用第一类斯特林数转化成通常幂,再用第二类斯特林数转化成下降幂两种方式,通过比较下降幂系数,我们可以得到第三类斯特林数和两个斯特林数之间的关系:
生成函数
第一类斯特林数的生成函数就是上升幂。
设 \(B_k(x)=\sum_{i\ge k} S(i,k)x^i\),通过观察,我们可以知道:
由此我们可以得到:
设 \(F_k(x)=\sum_{i\ge k}S(i,k)\frac{x^i}{i!}\) 则我们可以得到:
斯特林反演
斯特林反演公式:
要证明上面这个式子,我们首先引入一个反转公式:
比较两边系数你就可以得到:
注意这里 \(-1\) 的系数也可以是 \(n-i\),容易发现当 \(n-m=0\) 时这两个数奇偶性相同,当奇偶性不同的时候这两个数绝对不相等,也就是说是 \(0\),这并不影响我们这个式子的恒等。
用同样的方法,我们可以得到另一个反转公式:
现在我们来证明斯特林反演。
同理,从右往左也可以证明,于是原式得证。
和二项式反演一样,这个式子也有许多变式。由反转公式对称性可以知道,我们交换等号两边的斯特林数仍然成立。我们让和式从 \(n\) 开始枚举,枚举的量变成第一个数,式子仍然成立。只需要注意证明的时候不用 \(n-j\) 而是用 \(j-m\)。这里不再赘述其他的几种斯特林反演。