第二类斯特林数
定义
第二类斯特林数 S(n,m)S(n,m)S(n,m) 表示将 nnn 个不同的小球放到 mmm 个相同的盒子里的方案数。S(n,m)S(n,m)S(n,m) 也可以用 {nm}\begin{Bmatrix} n \\ m\end {Bmatrix}{nm} 表示。
公式
递推公式:S(n,m)=S(n−1,m−1)+mS(n−1,m)S(n,m)=S(n-1,m-1)+mS(n-1,m)S(n,m)=S(n−1,m−1)+mS(n−1,m)。即考虑第 nnn 个球是单独新分到一个盒子或者和前面的球装在同个盒子里。如果是单独新分到一个盒子里,那么就是 S(n−1,m−1)S(n-1,m-1)S(n−1,m−1),如果和前面的球装在一起,也就是从 mmm 个盒子里选一个装,即 mS(n−1,m−1)mS(n-1,m-1)mS(n−1,m−1).
容斥原理:
S(n,m)=∑k=0m(−1)k(mk)(m−k)nm!
S(n,m)=\frac{\sum_{k=0}^m(-1)^k\binom{m}{k}(m-k)^n}{m!}
S(n,m)=m!∑k=0m(−1)k(km)(m−k)n
即枚举空盒的数量 kkk,然后 mmm 个盒子里选出 kkk 个为空,剩下的随便放,因为盒子是相同的,所以要除以盒子数量的阶乘 m!m!m!。
这个式子可以化为卷积形式:
S(n,m)=1m!∑k=0m(−1)k(m−k)n(km)S(n,m)=1m!∑k=0m(−1)k(m−k)nm!k!(m−k)!S(n,m)=∑k=0m(−1)k(m−k)n1k!(m−k)!S(n,m)=∑k=0m(−1)kk!⋅(m−k)n(m−k)!
S(n,m)=\frac{1}{m!}\sum_{k=0}^{m}(-1)^k(m-k)^n\binom{k}{m}\\
S(n,m)=\frac{1}{m!}\sum_{k=0}^{m}(-1)^k(m-k)^n\frac{m!}{k!(m-k)!}\\
S(n,m)=\sum_{k=0}^{m}(-1)^k(m-k)^n\frac{1}{k!(m-k)!}\\
S(n,m)=\sum_{k=0}^{m}\frac{(-1)^k}{k!}\cdot\frac{(m-k)^n}{(m-k)!}
S(n,m)=m!1k=0∑m(−1)k(m−k)n(mk)S(n,m)=m!1k=0∑m(−1)k(m−k)nk!(m−k)!m!S(n,m)=k=0∑m(−1)k(m−k)nk!(m−k)!1S(n,m)=k=0∑mk!(−1)k⋅(m−k)!(m−k)n
令 A(x)=(−1)kk!,B(x)=mnm!A(x)=\frac{(-1)^k}{k!},B(x)=\frac{m^n}{m!}A(x)=k!(−1)k,B(x)=m!mn,则 S(n,m)=∑k=0mA(k)B(m−k)S(n,m)=\sum_{k=0}^mA(k)B(m-k)S(n,m)=∑k=0mA(k)B(m−k)。是经典的卷积形式,可以用 FFT/NTTFFT/NTTFFT/NTT 在 O(nlogn)\text{O(nlogn)}O(nlogn) 的时间内解决。
具有组合意义的等式:
∑k=0m{mk}nk‾=nm
\sum_{k=0}^m\begin{Bmatrix}m\\k\end{Bmatrix}n^{\underline k}=n^m
k=0∑m{mk}nk=nm
也就是 ∑k=0m(nk){mk}k!=nm\sum_{k=0}^{m}\binom{n}{k}\begin{Bmatrix}m\\k\end{Bmatrix}k!=n^m∑k=0m(kn){mk}k!=nm。
其中 nk‾n^{\underline k}nk 表示 nnn 的 kkk 次下降幂,即 n(n−1)⋯(n−k+1)n(n-1)\cdots(n-k+1)n(n−1)⋯(n−k+1)。
右边就是 mmm 个球任意放到 nnn 个盒子里的方案数,左边就是枚举非空盒子的数量 kkk,选出这 kkk 个非空盒子,mmm 个球分到 kkk 个盒子里,盒子可以调换顺序(算不同方案)k!k!k!。
证明:
令 f(m)=∑k=0m{mk}nk‾f(m)=\sum_{k=0}^{m}\begin{Bmatrix}m\\k\end{Bmatrix}n^{\underline{k}}f(m)=∑k=0m{mk}nk.
则 f(0)=1f(0)=1f(0)=1.
当 m>0m>0m>0 时
f(m)=∑k=0m{mk}nk‾=∑k=1m{m−1k−1}nk‾+∑k=0m−1k{m−1k}nk‾=∑k=0m−1{m−1k}nk+1‾+∑k=0m−1k{m−1k}nk‾=∑k=0m−1(n−k){m−1k}nk‾+∑k=0m−1k{m−1k}nk‾=n∑k=0m−1{m−1k}=nf(m−1)
\begin{aligned}
f(m)
& =\sum_{k=0}^{m}\begin{Bmatrix}m\\k\end{Bmatrix}n^{\underline{k}}\\
& =\sum_{k=1}^{m}\begin{Bmatrix}m-1\\k-1\end{Bmatrix}n^{\underline{k}}+\sum_{k=0}^{m-1}k\begin{Bmatrix}m-1\\k\end{Bmatrix}n^{\underline{k}}\\
& =\sum_{k=0}^{m-1}\begin{Bmatrix}m-1\\k\end{Bmatrix}n^{\underline{k+1}}+\sum_{k=0}^{m-1}k\begin{Bmatrix}m-1\\k\end{Bmatrix}n^{\underline{k}}\\
& =\sum_{k=0}^{m-1}(n-k)\begin{Bmatrix}m-1\\k\end{Bmatrix}n^{\underline{k}}+\sum_{k=0}^{m-1}k\begin{Bmatrix}m-1\\k\end{Bmatrix}n^{\underline{k}}\\
& =n\sum_{k=0}^{m-1}\begin{Bmatrix}m-1\\k\end{Bmatrix}\\
& =nf(m-1)
\end{aligned}
f(m)=k=0∑m{mk}nk=k=1∑m{m−1k−1}nk+k=0∑m−1k{m−1k}nk=k=0∑m−1{m−1k}nk+1+k=0∑m−1k{m−1k}nk=k=0∑m−1(n−k){m−1k}nk+k=0∑m−1k{m−1k}nk=nk=0∑m−1{m−1k}=nf(m−1)
性质
∑i=0nik=∑j=0k{kj}(n+1)j+1‾j+1
\sum_{i=0}^{n}i^k=\sum_{j=0}^k\begin{Bmatrix}k\\j\end{Bmatrix}\frac{(n+1)^{\underline{j+1}}}{j+1}
i=0∑nik=j=0∑k{kj}j+1(n+1)j+1
证明:
∑i=0nik=∑i=0n∑j=0k{kj}j!(ij)=∑j=0k{kj}j!∑i=jn(ij)=∑j=0k{kj}j!(n+1j+1)=∑j=0k{kj}(n+1)j+1‾j+1
\begin{aligned}
\sum_{i=0}^{n}i^k
&=\sum_{i=0}^n\sum_{j=0}^k\begin{Bmatrix}k\\j\end{Bmatrix}j!\binom{i}{j}\\
&=\sum_{j=0}^k\begin{Bmatrix}k\\j\end{Bmatrix}j!\sum_{i=j}^n\binom{i}{j}\\
&=\sum_{j=0}^k\begin{Bmatrix}k\\j\end{Bmatrix}j!\binom{n+1}{j+1}\\
&=\sum_{j=0}^k\begin{Bmatrix}k\\j\end{Bmatrix}\frac{(n+1)^{\underline{j+1}}}{j+1}
\end{aligned}
i=0∑nik=i=0∑nj=0∑k{kj}j!(ji)=j=0∑k{kj}j!i=j∑n(ji)=j=0∑k{kj}j!(j+1n+1)=j=0∑k{kj}j+1(n+1)j+1

本文介绍了第二类斯特林数的定义,详细讲解了其递推公式和容斥原理,并通过卷积形式展示了快速计算的方法。此外,还探讨了斯特林数的一些组合意义和性质。
594

被折叠的 条评论
为什么被折叠?



