定义
第一类斯特林数(Stirling Number of the First Kind) 将 (n) 个数分成 (k) 个轮换的方案数,记为
[{nrack k}
]
第二类斯特林数(Stirling Number of the Second Kind) 将 (n) 个数分成 (k) 个非空子集的方案数,记为
[nrace k
]
基本性质
注意到,一个子集对应至少一个轮换。所以很明显有
[{nrack k}ge{nrace k}
]
当 (k=n,n-1) 时取到等号,此时有 ({nrack n}={nrace n}=1,{nrack n-1}={nrace n-1}={nchoose 2})
从置换的角度考虑第一类斯特林数。众所周知,任意一个置换可分解为若干轮换的乘积,并与一个排列一一对应,于是对所有轮换求和得到
[sum_{k=0}^n{nrack k}=n!
]
递推公式
从组合意义来考虑。
先看第一类。最后一个数要么独立组成一个轮换,要么插入之前的轮换中,后者有 (n-1) 种方法,于是有
[{nrack k}=(n-1){n-1rack k}+{n-1rack k-1}
]
第二类也是一样的推法,区别是插入之前的子集中只有子集个数种方法,即
[{nrace k}=k{n-1race k}+{n-1race k-1}
]
用上面的推法可知:
[{nrace 2}=2^{n-1}-1
]
下面再来推推第二类斯特林数的通项公式。我们使用容斥原理,枚举有多少个集合是空的,得到
[{nrace m}=frac{1}{m!}sum_{i=0}^m(-1)^i{mchoose i}(m-i)^n
]
最后要除以 (m!) 是因为集合是无序的,不除的是有序的。
阶乘幂的互化
常幂与下降幂的转化:
[n^m=sum_{i=0}^m{nchoose i}{mrace i}i!=sum_{i=0}^m{mrace i}n^{underline{i}}
]
考虑组合意义,左边是将 (m) 个球放入 (n) 个盒子中,右边相当于枚举有多少个盒子非空,由于斯特林数是无序的,要乘 (i!) 变成有序的。
上升幂与常幂的转化:
[n^{overline{m}} = sum_{i=0}^m { m rack i } n^i
]
这个式子组合意义不好解释,我们考虑归纳法。(m=1) 显然成立,考虑现在 (m-1) 成立,于是有:
[egin{aligned}n^{overline{m}} &= (n+m-1)n^{overline{m-1}}\
&= (n+m-1)sum_{i=0}^{m-1} { m-1 rack i } n^i \
&= sum_{i=0}^{m-1} { m-1 rack i } n^{i+1}+sum_{i=0}^{m-1}(m-1) { m-1 rack i } n^i \
&= sum_{i=1}^{m} { m-1 rack i-1 } n^{i}+sum_{i=0}^{m-1}(m-1) { m-1 rack i } n^i \
&= sum_{i=0}^mleft({ m-1 rack i-1 }+(m-1) { m-1 rack i }
ight)n^i \
&= sum_{i=0}^m{ m rack i }n^iend{aligned}]
最后面的边界问题,由于 (0) 项与 (m) 项边界都溢出了,我们按照 (0) 处理。
斯特林反演
[f(n)=sum_{k=0}^n{nrace k}g(k)iff g(n)=sum_{k=0}^n(-1)^{n-k}{nrack k}f(k) \
f(n)=sum_{k=0}^n{nrack k}g(k)iff g(n)=sum_{k=0}^n(-1)^{n-k}{nrace k}f(k)]
欲证明这个式子,先证明若干引理。
[x^{underline{n}}=(-1)^n(-x)^{overline{n}},x^{overline{n}}=(-1)^n(-x)^{underline{n}}
]
以上式子是显然的。
反转公式:
[sum_{k=m}^n(-1)^{n-k}{nrack k}{krace m}=sum_{k=m}^n(-1)^{n-k}{nrace k}{krack m}=[m=n]
]
反转公式的证明:
[egin{aligned}n^m &= sum_{k=0}^m{mrace k}n^{underline{k}} \
&= sum_{k=0}^m{mrace k}(-1)^k(-n)^{overline{k}} \
&= sum_{k=0}^m{mrace k}sum_{j=0}^k(-1)^j(-1)^{k-j}{krack j}(-n)^j \
&= sum_{j=0}^mn^jsum_{k=j}^m{mrace k}{krack j}(-1)^{k-j}end{aligned}]
上式可以看作是关于 (n) 的多项式,那么显然必须在 (j=m) 时后面的项值为一,否则为零,于是
[sum_{k=j}^m{mrace k}{krack j}(-1)^{k-j}=sum_{k=j}^m{mrace k}{krack j}(-1)^{m-k}=[j=m]
]
得证。
反转公式的另一种形式也是一样的推法,这里不再赘述。
现在来证明斯特林反演,同样我们只证明一种形式:
若 (g(n)=sum_{i=0}^n(-1)^{n-i}{nrack i}f(i)),则
[egin{aligned}f(n) &= sum_{i=0}^n[i=n]f(i) \
&= sum_{i=0}^nf(i)sum_{j=i}^n{nrace j}{jrack i}(-1)^{j-i} \
&= sum_{j=0}^n{nrace j}sum_{i=0}^jf(i){jrack i}(-1)^{j-i} \
&= sum_{i=0}^n{nrace i}g(i)end{aligned}]