第二类斯特林数总结
标签: 第二类斯特林数
最近做题的时候遇到了一些跟第二类斯特林数有关的东西,发现网上的资料不是很多,于是写一篇博客来总结一下。
第二类斯特林数
定义
第二类斯特林数(S(n,m))表示的是把n个不同的小球放在m个相同的盒子里方案数。
upd:为了看得清楚,有时候我们也用(egin {Bmatrix} n \ mend {Bmatrix})来表示(S(n,m))
求法
一般有两种求法。
递推:
(S(n,m)=S(n-1,m-1)+mS(n-1,m))
即讨论第一个球是否单独在一个盒子里面。
如果不独占一盒,那么把这个球放进任一个盒子,这个盒子就相当于与其他的盒子不同,那么在乘答案的时候就要多乘一个m.
容斥原理:
即枚举空盒的个数,剩下的随意放置,由于盒子是相同的最后要除以(m!)
注意到这个式子是一个卷积,所以可以在(O(nlogn))内求出(S(n,0),S(n,1)......)
性质
只有一个公式
很好理解,左边就是k个球可以任意放置在n个盒子里。
右边就是枚举非空盒子的数量i,那么把k个球放在i个盒子(盒子不同,需要乘上一个i!)里面再乘上选出i个非空盒子的方案数。
有了这个东西,我们可以很方便的维护一些东西。
组合等式推导
upd:感觉以前写的菜爆了。。。。更新一点吧
上面的性质与求法都是基于组合意义而来的,接下来我们采用一个具有组合意义的等式,将其通过一些变换得到上面的等式。
(x^{underline k})是(x)的(k)次下降幂,就是(x imes (x-1) imes(x-2).... imes(x-k+1))
(其实就是上面的性质啦)
当然准确来说这个式子才是定义式,因为这个式子具有清晰的组合意义。
这个式子可以方便的得到递推式:
当然这个步骤写的不太严谨,如果把上面的式子倒过来就是正确的证明步骤,但是这样推就不太好想(不过我们已经知道了结论就随便了)。
好像还有一个等式?
再来审视一下之前的定义式。
我们把(m)看作常量,令(f_i=i^m,g_i=egin{Bmatrix} m \i end{Bmatrix} i!)。
那么(inom{k}{i})相当于从(g_i)到(f_k)的一个转移矩阵
直接二项式反演,得
再把(k!)移过去就得到最初的式子了。
斯特林反演
对第二类斯特林数的反演。
其中(egin{bmatrix} n\ mend{bmatrix})是第一类斯特林数,也可以写作(s(n,m)),在不作特殊的说明情况的下(即(s_s(n,m))代表有符号的第一类斯特林数),本文中写到的均为无符号的第一类斯特林数。
在这里,我们只需要知道(s(n,m))的生成函数。
其实这差不多就是有符号和无符号的区别,一个是下降幂,一个是上升幂。
我们发现,这个式子与上面第二类斯特林数的定义式出奇的像。
将([1])式带入([2])中,得
显然得到等式
接下来,我们将斯特林反演的两式相互带入,不难得出其等价与上式。
值得一提的是,我们令矩阵(f_{i,j}=egin{Bmatrix} i \ j end{Bmatrix},g_{i,j}=(-1)^{i-j} egin{bmatrix} i\ j end{bmatrix})
那么根据上面的式子,有(FG=E),即矩阵(F,G)互逆。