首先介绍一下什么是贝尔数。贝尔数以埃里克·坦普尔·贝尔命名,是组合数学中的一组整数数列,开首是
Bn是基数为n的集合的划分方法的数目。集合S的一个划分是定义为S的两两不相交的非空子集的族,它们的并是S。例如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种划分方法。空集的每个成员都是非空集合,而它们的并是空集本身。所以空集是它的唯一划分。
贝尔数的递推公式为:
令S(n,k)表示n个元素划分为k个集合的数目。 第n个贝尔数等于等于S(n,1)+S(n,2)+…S(n,n)的值
S(n,k)的值可以递归的表示为:S(n+1, k) = kS(n, k) + S(n, k-1)。为什么会这样表示呢?当我们将第(n + 1)个元素添加到k个划分集合时,有两种可能性。
1)第n + 1个元素作为一个单独的集合参与到划分成k个集合,有S(n,k-1)个。
2)将第n + 1个元素添加到已经划分的k个集合中,一共有k*S(n,k)种。
S(n, k)也称为第二类斯特林数。
第一种求贝尔数的方法就是,k从1到n计算S(n,k)并且累加求和。
第二种方法就是使用贝尔三角形,如下所示:
贝尔三角形有以下特点:
1)第一行第一项是1,( a 1 , 1 a_{1,1} a1,1 = 1)
2) 对于n>1,第n行第一项等同第n-1行最后一项。( a n ,