把p个对象排成k个非空循环排列的方法数 组合数学-第一类stirling数

根据《组合数学》中,定理8.2.9:把p个可区分对象排成k个非空循环排列的方法数,称作第一类stirling数,用小写s(p,k)表示。


什么叫非空循环排列?

比如序列12345,将其首尾连接起来组成循环排列,那么经过循环移动得到的序列都是等价的,即234561,345612等。

其和第一类stirling数的关联:

两者递推关系式上非常接近。

第一类是把p个对象划分为k个非空循环排列,第二类是把p个对象划分为k个非空份。显然第一类的情况更加复杂,所以第一类stirling数较大。

第一类stirling数用小写s(p,k)表示,第二类stirling数用大小S(p,k)表示。


递推公式:

边界条件:

s(0,0) = 1

当p>=0,s(p,p) = 1

当p>=1,s(p,0) = 0

递推公式:

当1<= k <=p-1,s(p,k) = (p-1)*s(p-1,k) + s(p-1,k-1)

对于某一个对象,它可以自己作为一个非空循环排列,则其它的对象组成了问题s(p-1,k-1);它也可以和其他p-1个对象黏合在一起,比如黏合在其他对象左边当成一个对象,那么成了p-1个问题s(p-1,k)。


具体应用:

目前我还没遇到此类题目。等遇到之后再补。

你可能感兴趣的:(把p个对象排成k个非空循环排列的方法数 组合数学-第一类stirling数)