斯特林数
创建时间:2025-08-23
斯特林数简介
斯特林数也是一种有着独特性质的数,虽然应用场景可能没有卡特兰数广泛,但生活中的应用场景也不少,经常和生成函数、FFT、NTT、二项式反演等算法一起使用。
第一类斯特林数
第一类斯特林数的定义:
对于数字 \(1\sim n\),将其划分为 \(k\) 个圆排列的方案数称为第一类斯特林数,记作 \(s(n,k)\) 或 \([n,k]\)。
圆排列:将一个排列首尾相接拼成一个环
可以直接递推求斯特林数 \(s(i,j)\),其初始状态为 \(s(0,0)=0,s(n,0)=0\)(\(n>0\))。若 \(i\) 在一个新的圆排列中,则方案数为 \(s(i-1,j-1)\);否则 \(i\) 可能排在 \(1,2,3,\cdots,i-1\) 中任意一个数后面,其方案数为 \(s(i-1,j) \cdot (i-1)\)。故有递推公式:
\[s(i,j)=\left\{\begin{aligned}
1 \quad i=j=0 \\
0 \quad i>j=0\\
s(i-1,j-1)+s(i-1,j) (i-1) \quad i\ge j>0 \\
\end{aligned}\right.\]
根据第一类斯特林数的定义可以推导出以下常用结论:
\[\begin{equation} s(n,1)=(n-1)! \end{equation}
\]
\[\begin{equation} s(n,2)=C_n^2 \end{equation}
\]
\[\begin{equation} \sum_{k=0}^n s(n,k)=n! \end{equation}
\]
第二类斯特林数
第二类斯特林数的定义:
对于数字 \(1\sim n\),将其划分为 \(k\) 个集合的方案数称为第二类斯特林数,记作 \(S(n,k)\) 或 \(\{n,k\}\)。
类比第一类斯特林数,使用递推的方式求解。有初始状态 \(S(0,0)=1,S(n,0)=0\)(\(n>0\))。若 \(i\) 属于一个新集合,则方案数为 \(S(i-1,j-1)\);否则,\(i\) 可能属于之前的 \(j\) 个集合中的任意一个,方案数为 \(S(i-1,j-1) \cdot j\)。故有递推公式:
\[S(i,j)=\left\{\begin{aligned}
1 \quad i=j=0\\
0 \quad i>j=0\\
S(i-1,j-1)+S(i-1,j) j \quad i\ge j>0
\end{aligned}\right.\]
根据定义,同样有结论:
\[\begin{equation} S(n,2)=2^{n-1}-1 \end{equation}
\]
\[\begin{equation} S(n,n-1)=C_n^2 \end{equation}
\]
\[\begin{equation} \sum_{k=0}^mS(m,k)k!C_n^k=n^m \end{equation}
\]

浙公网安备 33010602011771号