第二类斯特林数学习笔记

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

第二类斯特林数

定义

第二类斯特林数 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(n1,m1)+mS(n1,m)。即考虑第 nnn 个球是单独新分到一个盒子或者和前面的球装在同个盒子里。如果是单独新分到一个盒子里,那么就是 S(n−1,m−1)S(n-1,m-1)S(n1,m1),如果和前面的球装在一起,也就是从 mmm 个盒子里选一个装,即 mS(n−1,m−1)mS(n-1,m-1)mS(n1,m1).

容斥原理:
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)(mk)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=0m(1)k(mk)n(mk)S(n,m)=m!1k=0m(1)k(mk)nk!(mk)!m!S(n,m)=k=0m(1)k(mk)nk!(mk)!1S(n,m)=k=0mk!(1)k(mk)!(mk)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(mk)。是经典的卷积形式,可以用 FFT/NTTFFT/NTTFFT/NTTO(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=0m{mk}nk=nm
也就是 ∑k=0m(nk){mk}k!=nm\sum_{k=0}^{m}\binom{n}{k}\begin{Bmatrix}m\\k\end{Bmatrix}k!=n^mk=0m(kn){mk}k!=nm
其中 nk‾n^{\underline k}nk 表示 nnnkkk 次下降幂,即 n(n−1)⋯(n−k+1)n(n-1)\cdots(n-k+1)n(n1)(nk+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=0m{mk}nk=k=1m{m1k1}nk+k=0m1k{m1k}nk=k=0m1{m1k}nk+1+k=0m1k{m1k}nk=k=0m1(nk){m1k}nk+k=0m1k{m1k}nk=nk=0m1{m1k}=nf(m1)

性质

∑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=0nik=j=0k{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=0nik=i=0nj=0k{kj}j!(ji)=j=0k{kj}j!i=jn(ji)=j=0k{kj}j!(j+1n+1)=j=0k{kj}j+1(n+1)j+1

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值