众所周知,斯特林数有2种(不是斯大林数,英文名字叫string)
这两种数没有什么关系,只是因为同一个人发现的所以叫同一个名字。
1.定义:
1.1第一类斯特林数:
将n个数划分成m个数的圆排列的方案数。
$egin{bmatrix}n\mend{bmatrix}=egin{bmatrix}n-1\m-1end{bmatrix}+(n-1)egin{bmatrix}n-1\mend{bmatrix}$
意义:在新加入第n个元素的时候,有两种方案:新开一个圆排列,或者插入到之前的圆排列的任意位置之后。
1.2第二类斯特林数:
将n个数划分为m个集合的方案数。
$egin{Bmatrix}n\mend{Bmatrix}=egin{Bmatrix}n-1\m-1end{Bmatrix}+megin{Bmatrix}n-1\mend{Bmatrix}$
意义:和第一类斯特林数相似。在新加入第n个元素的时候,有两种方案:新开一个集合,或者加入到之前任意一个集合中。
1.3斯特林数的求法:
显然的,对于这两种斯特林数我们可以在$O(n^2)$的复杂度下求出。
另外,对于第二类斯特林数我们可以考虑一种容斥求法。
$egin{Bmatrix}n\mend{Bmatrix}=frac{1}{m!}sum_{i=0}^{m}(-1)^iC_m^i(m-i)^n$
意义比较显然,我们规定m个集合中必定有i个集合是空的,其余的集合是不是空的无所谓。这样的方案数显然是$C_m^i(m-i)^n$
虽然这样比较好求,但其余的集合是不是空的无所谓这一点会让我们算重,导致答案偏大,因此我们容斥一下。
最后,由于涉及到了组合数所以这样得出的答案是有顺序的。所以除以顺序就好了。
2.性质:
2.1斯特林数普通幂转下降幂:
先来看看公式:
$i^k=sum_{j=0}^{k}egin{Bmatrix}k\jend{Bmatrix}inom{i}{j}j!$
然后分析意义:
$i^k$的组合意义就是k个不同的球放入i个不同的盒子的方案数。
我们考虑如何求出这个方案数。
首先枚举有j个盒子中被放入了小球。
然后求出从i个盒子中选取j个放小球的方案数就是$C_i^j$
然后求出k个不同小球放入j个相同盒子的方案数就是$egin{Bmatrix}k\jend{Bmatrix}$
由于我们是放入不同的盒子,所以我们需要关注顺序,因此答案乘$j!$
2.2斯特林数反演
$f(n)=sum_{k=0}^{n}egin{Bmatrix}n\kend{Bmatrix}g(k)Leftrightarrow g(n)= sum_{k=0}^{n}(-1)^{n-k}egin{bmatrix}n\kend{bmatrix}f(k)$
$f(n)=sum_{k=0}^{n}egin{bmatrix}n\kend{bmatrix}g(k)Leftrightarrow g(n)= sum_{k=0}^{n}(-1)^{n-k}egin{Bmatrix}n\kend{Bmatrix}f(k)$