第一类、第二类Stirling数和Bell数


第一类Stirling数(斯特林数)

定义:s(n,k)的一个的组合学解释是:将n个物体排成k个非空循环排列(非空的)的方法数。

S(p, k)的递推公式:S(n, k)= (n - 1) * S(n- 1, k) + S(n - 1, k - 1).

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

  S(n, n) = 1, n>= 0.(有n个人和n个圆圈,每个圆圈就只有一个人)

我们考虑第n个物品。

1.该物品自己可以成一个非空循环排列,也就是S(k-1,n-1)种。

2.该物品也可以加到已经形成的k个非空循环排列中,共可以放在其他n- 1个物品的任意一个的一个位置。也就是( n - 1) * S(n- 1, k)种。

代码和杨辉三角求C(n,k)相似,要用long long,因为大于20种就会超int

第二类Stirling数(斯特林数)

S(n,k)是n个数的集合的划分为k个非空集合方法的数目。(n个不同小球放到m个相同的盒子,每个盒子至少放一个球的种数

例如S3,2 = 3因为3个元素的集合{a, b, c}有3种不同的划分方法:

{{a}, {b, c}}, {{b}, {a, c}}, {{c}, {a, b}}。可以知道Bell(n) = Sn,ki,( 1 <= ki <= n)。

递推式:S(n, k) = k * S(n - 1, k) + S(n - 1, k - 1)

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

             S(n, 0) = 0, n >= 1

解释:第n个物品来单独考虑。。我们要分为k个集合。。

1.可以把当前第n个物品作为一个集合,也就是S(n - 1, k - 1)中方法。

2.也可以把当前第n个物品放在其他的集合中来构成k个集合。也就是S(n - 1, k)中方法。

扩展:k! *S(n,k) 计数的是把n元素集合划分到k个可区分的盒子里且没有空盒子的划分个数。


Bell数

B ell数 基数 为n的集合的 划分 方法的数目。

B3 = 5因为3个元素的集合{a, b, c}有5种不同的划分方法:

{{a}, {b}, {c}}, {{a}, {b, c}}, {{b}, {a, c}}, {{c}, {a, b}}, {{a, b, c}}。

B0是1,因为空集正好有1种划分方法。

求和公式:

递推公式:

上述组合公式的证明:


依次类推,得到了上述组合公式








  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值