python实现第二类Stirling数

本文介绍了如何使用Python计算第二类Stirling数,该数表示将n个元素划分为k个非空子集的方法数量。通过递推公式S(n,k) = S(n-1,k-1) + kS(n-1,k)进行计算,并提供了实现这个功能的total函数。通过调用total函数并传入特定参数,可以得到不同元素个数和分组数目的Stirling数结果。" 132935910,20038963,使用VTK库实现点云数据可视化,"['信息可视化', '计算机图形学', '点云处理', 'VTK库']
摘要由CSDN通过智能技术生成

python实现第二类Stirling数

第二类Stirling数是把包含n个元素的集合划分为正好k个非空子集的方法的数目。   

简单打个比方说就是n个不同集合分到k个相同的箱子里面有所少种可能

递推公式为:

S(n,k)=0; (n<k||k=0)   S(n,n) = S(n,1) = 1,   
S(n,k) = S(n-1,k-1) + kS(n-1,k).
考虑第p个物品,p可以单独构成一个非空集合,此时前p-1个物品构成k-1个非空的不可辨别的集合,方法数为S(p-1,k-1);也可以前p-1种物品构成k个非空的不可辨别的集合,第p个物品放入任意一个中,这样有k*S(p-1,k)种方法。

说明

程序中的total函数的功能是:想算n各元素的不论有几个分箱的总个数

S(4,0)+S(4,1)+S(4,2)+S(4,3)+S(4,4)=total(4)

假如想看8个元素分3个箱,只需程序中加入print(S(8,3)),即可在控制台查看结果 

#-*-encoding=utf-8-*-
import numpy as np
#第二类斯特林数
'''
n个元素的集合划分为正好k个非空子集的方法的数目
递推公式为:   S(n,k)=0; (n<k||k=0)   S(n,n) = S(n,1) = 1,   
S(n,k) = S(n-1,k-1) + kS(n-1,k).
'''
def S(n,m):
   
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路易三十六

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值