斯特林数与斯特林反演

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

第一类斯特林数#

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

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

递推式#

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

[nm]=[n1m1]+(n1)[n1m]

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

递推边界:s(n,n)=1(n0),s(n,0)=0(n1)

性质#

  • s(n,1)=(n1)!

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

  • s(n,n1)=(n2)

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

  • s(n,2)=(n1)!i=1n11i

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

s(n,2)=i=1n1(ni)(i1)!(ni1)!2=i=1n112n!i!(ni)!×(i1)!×(ni1)!=i=1n112n!i(ni)=(n1)!i=1n112(1i+1ni)

容易发现 1i1ni 的贡献相同,所以原式得证。

  • s(n,n2)=2×(n3)+3×(n4)

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

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

  • k=0ns(n,k)nk=n!

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

符号#

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

第二类斯特林数#

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

通项公式#

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

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

{nm}=1m!i=0m(1)i(mi)(mi)n

递推式#

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

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

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

性质#

  • S(n,1)=1

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

  • S(n,2)=2n11

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

12i=1n1(ni)=12(2n2)=2n11

  • S(n,n1)=(n2)

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

  • {nm}0modnn 是质数且 1<m<n 时成立。

证明:

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

{nm}=1m!i=0m(1)i(mi)(mi)n=i=0m(1)i(mi)ni!(mi)!i=0m(1)imii!(mi)!

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

F(x)=m0(i=0m(1)imii!(mi)!)xm

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

F(x)=(i0(1)ii!xi)×(i0ii!xi)

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

发现前面这个东西的封闭形式是 ex,证明可以通过写出 ex 在原点处的泰勒展开得到。

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

i0ii!xi=i1ii!xi=i11(i1)!xi=i0xi+1i!=xi0xii!=xex

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

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

  • nk=i=0kS(k,i)i!(ni)

第三类斯特林数#

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

xn¯=k=0nL(n,k)xk_xn_=k=0n(1)nkL(n,k)xk¯

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

L(n,k)=(n1k1)n!k!

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

L(n,k)=(n+k1)L(n1,k)+L(n1,k1)

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

各种幂之间的转换#

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

xn¯=x(x+1)...(x+n1)xn_=x(x1)...(xn+1)

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

(x)n_=(1)nxn¯(x)n¯=(1)nxn_

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

(nk)=nk_k!

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

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

xn¯=i=0ns(n,i)xixn=i=0n(1)niS(n,i)xi¯

证明:

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

xn_=i=0n(1)nis(n,i)xixn=i=0nS(n,i)xi_

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

xn¯=k=0nL(n,k)xk_xn_=k=0n(1)nkL(n,k)xk¯

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

记忆上面的实际只需要注意什么时候添加 1,给定序列 xn_,xn,xn¯,从左往右转换时需要加,从右往左转换时不需要加,然后注意从上升下降幂转换到通常幂用第一类斯特林数,从通常幂转换到上升下降幂用第二类斯特林数。

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

L(n,k)=k=0ns(n,k)S(k,i)

生成函数#

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

Bk(x)=ikS(i,k)xi,通过观察,我们可以知道:

Bk(x)=xBk1(x)+kxBk(x)

由此我们可以得到:

Bk(x)=xBk1(x)1kx=Bk(x)=x2Bk2(x)(1kx)(1(k1)x)=xkr=1k(1rx)

Fk(x)=ikS(i,k)xii! 则我们可以得到:

Fk(x)=i01k!j=0k(1)kj(kj)jixii!=1k!j=0k(1)kj(kj)i0jixii!=1k!j=0k(1)kj(kj)ejx=(ex1)kk!

斯特林反演#

斯特林反演公式:

f(n)=i=0nS(n,i)g(i)g(n)=i=0n(1)nis(n,i)f(i)

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

xn=i=0nS(n,i)xi_=i=0nS(n,i)(1)i(x)i¯=i=0nS(n,i)(1)ij=0is(i,j)(x)j=j=0nxji=jnS(n,i)s(i,j)(1)ij

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

i=mnS(n,i)s(i,m)(1)im=[n=m]

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

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

i=mns(n,i)S(i,m)(1)im=[n=m]

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

g(n)=i=0n[i=n]g(i)=i=0ng(i)j=ins(n,j)S(j,i)(1)nj=j=0ns(n,j)(1)nji=0jS(j,i)g(i)=j=0ns(n,j)(1)njf(j)

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

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

posted @   hyl天梦  阅读(767)  评论(2编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示
主题色彩