斯特林数有两类,分为第一类斯特林数和第二类斯特林数。
其中第一类斯特林数又有无符号版本和有符号的版本。这里主要介绍无符号版本。
第一类斯特林数
定义
将 1 − n 1-n 1−n划分为 k k k个圆排列的方案数,这 k k k个圆排列相互之间没有顺序。记作 s ( n , k ) s(n,k) s(n,k)或 [ n k ] \begin{bmatrix}n \\k \end{bmatrix} [nk]。
求法
[ n k ] = [ n − 1 k − 1 ] + ( n − 1 ) [ n − 1 k ] \begin{bmatrix}n \\k \end{bmatrix}=\begin{bmatrix}n-1 \\k-1 \end{bmatrix}+(n-1)\begin{bmatrix}n-1 \\k \end{bmatrix} [nk]=[n−1k−1]+(n−1)[n−1k]
推导的思路:
假设我们现在正在放第
n
n
n个数,我们目前有两种选择:
- 将 n n n放到新的圆当中
- 将 n n n放到已有的圆中
对于第一种选择,对于 n n n来说,放到新圆当中,只有一种放法。因此我们主要考虑前 n − 1 n-1 n−1个数的放法即可。我们发现前 n − 1 n-1 n−1个数的放法其实就是一个斯特林数 [ n − 1 k − 1 ] \begin{bmatrix}n-1 \\k-1 \end{bmatrix} [n−1k−1],也就是将 n − 1 n-1 n−1个数划分为 k − 1 k-1 k−1个圆排列的方案数。
对于第二种选择,对于
n
n
n来说,放到之前的圆排列中的方案数,我们可以根据下面的例子得出:
对于这个含有4个数的圆排列,现在我想往里面插入一个数,总共有几种方案?
可以发现,我们可以把新的数插入到
1
1
1的后面,或者到
2
2
2的后面,或者
3
3
3的后面,或者
4
4
4的后面,也就是图中的
a
,
b
,
c
,
d
a,b,c,d
a,b,c,d四个位置。总共有4种方案。
因此我们现在想将 n n n插入到之前已存在的圆排列当中,就相当于选择插入到哪个前 n − 1 n-1 n−1个数的后面。因此,有 n − 1 n-1 n−1种方案。
考虑了 n n n的插入放法,基于之前 n − 1 n-1 n−1个数已经分成了 k k k个圆排列。因此最终第二种选择的方案数就是: ( n − 1 ) ∗ [ n − 1 k ] (n-1)*\begin{bmatrix}n-1 \\k \end{bmatrix} (n−1)∗[n−1k]。
两种选择的方案数相加即可推出上式。
性质
- [ 0 0 ] = 1 \begin{bmatrix}0 \\0 \end{bmatrix}=1 [00]=1
- [ n n ] = 1 \begin{bmatrix}n \\n \end{bmatrix}=1 [nn]=1
- [ n 0 ] = 0 \begin{bmatrix}n \\0 \end{bmatrix}=0 [n0]=0
-
[
n
1
]
=
(
n
−
1
)
!
\begin{bmatrix}n \\1 \end{bmatrix}=(n-1)!
[n1]=(n−1)!
推导:
这就相当于 n n n个数的圆排列。 n n n个数组成一个圆的方案数总共有 n ! n! n!种,不过,对于每种方案,都有 n n n个圆排列通过旋转可以与其相同,因此,不同的圆排列方案数有 n ! n = ( n − 1 ) ! \frac {n!}n=(n-1)! nn!=(n−1)! - [ n n − 1 ] = C n 2 \begin{bmatrix}n \\n-1 \end{bmatrix}=C_n^2 [nn−1]=Cn2
-
[
n
2
]
=
1
2
∑
i
=
1
n
−
1
C
n
i
(
i
−
1
)
!
(
n
−
i
−
1
)
!
=
(
n
−
1
)
!
∑
i
=
1
n
−
1
1
i
\begin{bmatrix}n \\2 \end{bmatrix}=\frac 12\sum_{i=1}^{n-1}C_n^i(i-1)!(n-i-1)!=(n-1)!\sum_{i=1}^{n-1}\frac 1i
[n2]=21∑i=1n−1Cni(i−1)!(n−i−1)!=(n−1)!∑i=1n−1i1
推导过程如下:
1 2 ∑ i = 1 n − 1 C n i ( i − 1 ) ! ( n − i − 1 ) ! = 1 2 ∑ i = 1 n − 1 n ! i ( n − i ) = 1 2 ∑ i = 1 n − 1 ( n − 1 ) ! n i ( n − i ) = 1 2 ∑ i = 1 n − 1 ( n − 1 ) ! ( 1 i + 1 n − i ) = 1 2 ∗ 2 ∑ i = 1 n − 1 ( n − 1 ) ! 1 i = ( n − 1 ) ! ∑ i = 1 n − 1 1 i \frac 12\sum_{i=1}^{n-1}C_n^i(i-1)!(n-i-1)!=\frac 12\sum_{i=1}^{n-1}\frac {n!}{i(n-i)}=\frac 12\sum_{i=1}^{n-1}(n-1)!\frac n{i(n-i)}=\frac 12\sum_{i=1}^{n-1}(n-1)!(\frac 1i+\frac 1{n-i})=\frac 12*2\sum_{i=1}^{n-1}(n-1)!\frac 1i=(n-1)!\sum_{i=1}^{n-1}\frac 1i 21∑i=1n−1Cni(i−1)!(n−i−1)!=21∑i=1n−1i(n−i)n!=21∑i=1n−1(n−1)!i(n−i)n=21∑i=1n−1(n−1)!(i1+n−i1)=21∗2∑i=1n−1(n−1)!i1=(n−1)!∑i=1n−1i1
倒数第二步的推导,是由于 1 i \frac 1i i1和 1 n − i \frac 1{n-i} n−i1在取值范围内的值域相同,因此可以直接2倍。 - [ n n − 2 ] = 2 C n 3 + 3 C n 4 \begin{bmatrix}n \\{n-2} \end{bmatrix}=2C_n^3+3C_n^4 [nn−2]=2Cn3+3Cn4
-
∑
k
=
0
n
s
(
n
,
k
)
=
n
!
\sum_{k=0}^ns(n,k)=n!
∑k=0ns(n,k)=n!
可以通过升阶函数证明。
第二类斯特林数
定义
将 1 − n 1-n 1−n划分成 k k k个子集的方案数,记作 S ( n , k ) S(n,k) S(n,k)或 { n k } \begin{Bmatrix} n \\k \end{Bmatrix} {nk}。
求法
S ( n , k ) = S ( n − 1 , k − 1 ) + k S ( n − 1 , k ) S(n,k)=S(n-1,k-1)+kS(n-1,k) S(n,k)=S(n−1,k−1)+kS(n−1,k)
递推方式与第一类相同。
性质
- S ( n , 0 ) = 0 n S(n,0)=0^n S(n,0)=0n
- S ( n , 1 ) = 1 S(n,1)=1 S(n,1)=1
- S ( n , n ) = 1 S(n,n)=1 S(n,n)=1
-
S
(
n
,
2
)
=
2
n
−
1
−
1
S(n,2)=2^{n-1}-1
S(n,2)=2n−1−1
假设两个集合有序,那么 n n n个数插入两个集合的总方案数是 2 n 2^n 2n,由于两个集合都不能为空,因此方案数是 2 n − 2 2^n-2 2n−2。最后因为两个集合不考虑相互位置,因此,总方案数是 ( 2 n − 2 ) / 2 = 2 n − 1 − 1 (2^n-2)/2=2^{n-1}-1 (2n−2)/2=2n−1−1。 - S ( n , n − 1 ) = C n 2 S(n,n-1)=C_n^2 S(n,n−1)=Cn2
- S ( n , n − 2 ) = C n 3 + 3 C n 4 S(n,n-2)=C_n^3+3C_n^4 S(n,n−2)=Cn3+3Cn4
- S ( n , n − 3 ) = C ( n , 4 ) + 10 C ( n , 5 ) + 15 C ( n , 6 ) S(n,n-3)=C(n,4)+10C(n,5)+15C(n,6) S(n,n−3)=C(n,4)+10C(n,5)+15C(n,6)
- ∑ k = 0 n S ( n , k ) = B n , B n 是 贝 尔 数 \sum_{k=0}^nS(n,k)=B_n,B_n是贝尔数 ∑k=0nS(n,k)=Bn,Bn是贝尔数
通项公式
S ( n , m ) = 1 m ! ∑ k = 0 m ( − 1 ) k C ( m , k ) ( m − k ) n S(n,m)=\frac 1{m!}\sum_{k=0}^m(-1)^kC(m,k)(m-k)^n S(n,m)=m!1∑k=0m(−1)kC(m,k)(m−k)n
两类斯特林数的关系
∑ k = 0 n [ n k ] { k m } = ∑ k = 0 n { n k } [ k m ] \sum_{k=0}^n\begin{bmatrix}n \\k \end{bmatrix}\begin{Bmatrix}k \\m \end{Bmatrix}=\sum_{k=0}^n\begin{Bmatrix}n \\k \end{Bmatrix}\begin{bmatrix}k \\m \end{bmatrix} ∑k=0n[nk]{km}=∑k=0n{nk}[km]