首页 > 其他 > 详细

第二类斯特林数小记

时间:2021-09-06 22:47:37      阅读:26      评论:0      收藏:0      [点我收藏+]

第一类斯特林数没弄懂,先咕了。

对于第二类斯特林数记做 \(\begin{Bmatrix}n\\ m\end{Bmatrix}\),也可记做 \(S(n,m)\),表示将 \(n\) 个两两不同的元素,划分到 \(m\) 个互不区分的非空集合的方案数。

递推式

\[\begin{Bmatrix}n\\ m\end{Bmatrix}=\begin{Bmatrix}n-1\\ m-1\end{Bmatrix}+\begin{Bmatrix}n-1\\ m\end{Bmatrix} \]

边界是 \(\begin{Bmatrix}n\\ 0\end{Bmatrix}=[n=0]\)

证明:

新插入一个元素时,有两种方案:

  • 将新元素放进一个新集合里,方案数为 \(\begin{Bmatrix}n-1\\ m-1\end{Bmatrix}\)
  • 将新元素放进一个原来有的集合里,方案数为 \(m×\begin{Bmatrix}n-1\\ m\end{Bmatrix}\)

最后用加法原理相加即可。

通项公式

\(\begin{Bmatrix}n\\ m\end{Bmatrix}=\frac{1}{m!}\sum_{i=0}^m(-1)^{m-i}\tbinom{m}{i}i^n\)

简单理解就是每次钦定有多少个集合有元素,再容斥一下解决,最后因为无序,再除以个 \(\frac{1}{m!}\)

证明:

证明采取二项式反演,设 \(f(i)\) 为将 \(n\) 个元素划分成 \(i\) 个两两不同的集合的方案数(允许有空集),\(g(i)\) 为将 \(n\) 个元素划分成 \(i\) 个两两不同的非空集合的方案数(不允许有空集)

易得

\[f(i)=i^n\f(i)=\sum_{j=0}^i\tbinom{i}{j}g(j) \]

那么反演一下:

\[g(i)=\sum_{j=0}^i(-1)^{i-j}\tbinom{i}{j}f(j)\g(i)=\sum_{j=0}^i(-1)^{i-j}\tbinom{i}{j}j^n \]

根据定义可得 \(\frac{1}{m!}g(m)=\begin{Bmatrix}n\\ m\end{Bmatrix}\)

那么更常用的一种写法是

\[\begin{Bmatrix}n\\ i\end{Bmatrix}=\frac{1}{i!}\sum_{j=0}^i\frac{(-1)^{i-j}j^ni!}{j!(i-j)!}\\begin{Bmatrix}n\\ i\end{Bmatrix}=\sum_{j=0}^i\frac{(-1)^{i-j}j^n}{j!(i-j)!} \]

一种技巧就是设 \(f_i=\frac{(-1)^i}{i!}\)\(g_i=\frac{i^n}{i!}\),然后

\[\begin{Bmatrix}n\\ m\end{Bmatrix}=\sum_{i=0}^mf_i*g_{m-i} \]

\(NTT\) 优化一下。

第二类斯特林数小记

原文:https://www.cnblogs.com/nanfeng-blog/p/15233181.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!