斯特林数 [Stirling Numbers]
第二类斯特林数:f(n,k)表示划分n个数为k个非空子集的划分方式的个数
例如:n = 4、k = 2 有{1,2,3}U{4}、{1,2,4}U{3}、{1,3,4}U{2}、{2,3,4}U{1}
{1,2}U{3,4}、{1,3}U{2,4}、{1,4}U{2,3}因此,f(4,2) = 7
对于k = 0,易知f(n, 0) = 0 n > 0,对于k = 1,只有一种方式将n个非空元素放到一个非空子集中,故f(n,1) = 1
对于k = 2,f(0,2) = f(1,2) = 0,n >= 2时
考虑最后一个数,设包含最后元素的集合为A,则A包含最后一个元素及剩下的n - 1个元素中的某些元素
由于前n - 1个元素都可以选择放或者不放到集合B中,则对于集合B有2^(n - 1)中方式,除去集合为空的情况共2^(n - 1) - 1种分法
即:f(n, 2) = 2^(n - 1) - 1 n > 0
考虑更一般的情况,f(n, k),对于最后一个元素,我们可以将其单独放某集合中,或者和前n - 1个中的某些元素一起放某集合中
第一种情况即将剩下的n - 1个元素放k - 1个集合中,即f(n - 1, k - 1)
第二种情况有f(n - 1, k)种方式将前n - 1个元素放k个非空集合,对于每一种划分,最后一个元素都可以放入该k个集合的任何一个子集中,
所以共有k*f(n - 1, k)种综上有:
f(n, k) = k * f(n - 1, k - 1) + f(n - 1, k) n > 0
第一类斯特林数:是n个元素的集合分作k个环排列的方法数目,用g(n, k)表示
例如循环列[A,B,C,D],则和它等价的循环列为[B,C,D,A],[C,D,A,B],[D,A,B,C]。PS:只能同向转当n = 4,k = 2时,有:
[1,2,3][4], [1,2,4][3], [1,3,4][2], [2,3,4][1], [1,3,2][4], [1,4,2][3], [1,4,3][2], [2,4,3][1][1,2][3,4], [1,3][2,4], [1,4][2,3]
即g(4, 2) = 11k = 1时,对于n个数的全排列为n!,对于每一个环排列,转动n次,可以得到n个不同的排列,故g(n, 1) = (n - 1)!
对于g(n, k),我们可以参考f(n, k)的求法,考虑最后一个元素,我们可以将其单独放一循环列中,
此时结果为g(n - 1, k - 1),也可以将其插入到有前n - 1个元素分得的的k个环排列中
对于一个有n个数的环排列,插入一个数有n中方法如插入D到[A,B,C]中有:[A,B,C,D], [A,B,D,C], [A,D,B,C]三种
所以将最后一个元素放入前n - 1个元素组成的每种环排列方案中有n - 1种方式
所以得到:g(n, k) = (n - 1)g(n - 1, k) + g(n - 1, k -1)