斯特林数相关

最近做题时发现斯特林数这一块不怎么成系统,于是从各路神仙的博客里学习了一下,因此也就有了这篇博客

主要学习了这位神仙的博客:第二类斯特林数总结

第二类斯特林数

第二类斯特林数 \(\begin{Bmatrix}n\\i\end{Bmatrix}\) 代表将 \(n\) 个元素划分到 \(i\) 个集合里的方案数,也可以理解为将 \(n\) 个不同的小球放入 \(i\) 个相同的盒子里的方案数,递推公式为
\[ \begin{Bmatrix}n\\i\end{Bmatrix}=\begin{Bmatrix}n-1\\i-1\end{Bmatrix}+i\times \begin{Bmatrix}n-1\\i\end{Bmatrix}\tag{1.1} \]
即讨论第 \(n\) 个元素是放进已有的 \(i\) 个盒子里还是放到一个新盒子里

直接递推求是 \(O(n^2)\) 的,但我们还有一个等式
\[ n^m=\sum\limits_{i=0}^{n}\begin{Bmatrix}m\\i\end{Bmatrix}i!\dbinom{n}{i}\tag{1.2} \]
二项式反演一下得到
\[ \begin{Bmatrix}m\\n\end{Bmatrix}=\frac{1}{n!}\sum\limits_{i=0}^{n}(-1)^{n-i}\dbinom{n}{i}i^m\tag{1.3} \]
然后就能 \(\text{FFT}\)

其实式 \((1.3)\) 也可以从容斥的角度思考,其中 \(\dbinom{n}{i}\) 是选择 \(i\) 个盒子必须为空的方案数,而又因为这些计算都是在盒子不同的基础上进行的,所以最后还要除以 \(n!\) 消去有序性

另外,对于式 \((1.2)\) ,我们也可以将其写成
\[ n^m=\sum\limits_{i=0}^{m}\begin{Bmatrix}m\\i\end{Bmatrix}n^{\underline{i}}\tag{1.4} \]
我们将在下面看到这个等式的用途

第一类斯特林数

第一类斯特林数分为有符号和无符号两种,设 \(s_s\) 表示有符号第一类斯特林数,\(s_u\) 为无符号第一类斯特林数,两者的关系为 \(s_s(n,m)=(-1)^{n+m}s_u(n,m)\)

在这里我们重点讨论无符号第一类斯特林数

无符号第一类斯特林数 \(\begin{bmatrix}n\\i\end{bmatrix}\) 的含义为将 \(n\) 个元素分到 \(i\) 个圆排列中的方案数,递推公式为
\[ \begin{bmatrix}n\\i\end{bmatrix}=\begin{bmatrix}n-1\\i-1\end{bmatrix}+(n-1)\times \begin{bmatrix}n-1\\i\end{bmatrix}\tag{2.1} \]
即考虑在已有的 \(n-1\) 个元素中的一侧插入第 \(n\) 个元素扩大圆排列或单独把第 \(n\) 个元素作为一个圆排列

它有一些不错的性质
\[ \sum\limits_{i=0}^{n}\begin{bmatrix}n\\i\end{bmatrix}=n!\tag{2.2} \]
以及
\[ \begin{bmatrix}n\\1\end{bmatrix}=(n-1)!\tag{2.3} \]
对于式 \((2.2)\) ,左边的式子其实在枚举由 \(i\) 个循环组成的置换的个数,而 \(n\) 个元素的排列与置换一一对应,那么显然等式成立

对于式 \((2.3)\) ,我们考虑展开 \(\begin{bmatrix}n\\1\end{bmatrix}\)
\[ \begin{bmatrix}n\\1\end{bmatrix}=(n-1)\begin{bmatrix}n-1\\1\end{bmatrix}=(n-1)(n-2)\begin{bmatrix}n-2\\1\end{bmatrix}=...=(n-1)!\tag{2.4} \]
其中展开出来的 \(\begin{bmatrix}n\\0\end{bmatrix}\) 因等于 \(0\) 而被舍弃

类似于式 \((1.4)\),第一类斯特林数也有类似的等式
\[ \sum\limits_{i=0}^{n}s_u(n,i)x^i=x^{\overline{n}}\tag{2.5} \]

\[ \sum\limits_{i=0}^{n}s_s(n,i)x^i=x^{\underline{n}}\tag{2.6} \]
根据 \(s_s\)\(s_u\) 的关系,式 \((2.6)\) 也可以写为
\[ \sum\limits_{i=0}^{n}(-1)^{n-i}s_u(n,i)x^i=x^{\underline{n}}\tag{2.7} \]
用数学归纳法证明式 \((2.7)\)
\[ x^{\underline{n+1}}\\=x^{\underline{n}}\times (x-n)\\=(x-n)\sum\limits_{i=0}^{n}(-1)^{n-i}s_u(n,i)x^i\\=\sum\limits_{i=1}^{n+1}(-1)^{n+1-i}s_u(n,i-1)x^i+\sum\limits_{i=0}^{n}(-1)^{n+1-i}ns_u(n,i)x^i\\=s_u(n+1,n+1)x^{n+1}+\sum\limits_{i=0}^{n}(-1)^{n+1-i}(s_u(n,i-1)+ns_u(n,i))x^i\\=s_u(n+1,n+1)x^{n+1}+\sum\limits_{i=0}^{n}(-1)^{n+1-i}s_u(n+1,i)x^i\\=\sum\limits_{i=0}^{n+1}(-1)^{n+1-i}s_u(n+1,i)x^i \]
那么对于式 \((2.5)\) 同理也可证明

从另一个角度来看,\(x^{\overline{n}}\)\(x^{\underline{n}}\) 分别可看作无符号第一类斯特林数 \(s_u\) 与有符号第一类斯特林数的 \(s_s\) 的生成函数的封闭形式

我们可以用倍增+\(\text{NTT}\)\(O(n\log n)\) 的时间内求出它的生成函数 \(G(x)\),那么 \(s(n,i)=[x^i]G(x)\)

斯特林反演

斯特林反演说的是这样一件事情:有两个数列 \(\{f_n\}\)\(\{g_n\}\) ,那么若有
\[ f_n=\sum\limits_{i=0}^{n}\begin{Bmatrix}n\\i\end{Bmatrix}g_i\tag{3.1} \]
就有
\[ g_n=\sum\limits_{i=0}^{n}(-1)^{n-i}\begin{bmatrix}n\\i\end{bmatrix}f_i\tag{3.2} \]
有了上面的一些推导我们就不难证明其正确性了

由式 \((1.4)\) 与式 \((2.7)\) 可知,若令 \(f_i=x^i\)\(g_i=x^{\underline{i}}\) ,那么显然上面的关系成立,那么有
\[ F=A\times G,G=B\times F\tag{3.3} \]

\[ F=A\times B\times F\tag{3.4} \]
可以看出 \(A\times B=I\) ,即 \(A=B^{-1}\)

说明 \(a_{n,i}=\begin{Bmatrix}n\\i\end{Bmatrix}\) 构成的矩阵与 \(b_{n,i}=(-1)^{n-i}\begin{bmatrix}n\\i\end{bmatrix}\) 构成的矩阵互逆

那么对于任意的 \(f_n\)\(g_n\) ,上述关系一定也还成立

而如果我们暴力将式 \((2.7)\) 代入式 \((1.4)\) 中,也可以得到同样的结论:
\[ n^m\\=\sum\limits_{i=0}^{m}\begin{Bmatrix}m\\i\end{Bmatrix}n^{\underline{i}}\\=\sum\limits_{i=0}^{m}\begin{Bmatrix}m\\i\end{Bmatrix}\sum\limits_{j=0}^{i}(-1)^{i-j}\begin{bmatrix}i\\j\end{bmatrix}n^j\\=\sum\limits_{i=0}^{m}n^i\sum\limits_{j=i}^{m}(-1)^{j-i}\begin{bmatrix}j\\i\end{bmatrix}\begin{Bmatrix}m\\j\end{Bmatrix} \]
那么显然有
\[ [i==m]=\sum\limits_{j=i}^{m}(-1)^{j-i}\begin{bmatrix}j\\i\end{bmatrix}\begin{Bmatrix}m\\j\end{Bmatrix}\tag{3.5} \]
即说明 \(a_{n,i}=\begin{Bmatrix}n\\i\end{Bmatrix}\) 构成的矩阵与 \(b_{n,i}=(-1)^{n-i}\begin{bmatrix}n\\i\end{bmatrix}\) 构成的矩阵互逆

当然第一类斯特林数也可以反演到第二类斯特林数,只不过可能要依据 \(i\)\(m\) 的奇偶性改一改 \(-1\) 的指数

如果有写的不到位的地方我会再补充一点...

转载于:https://www.cnblogs.com/ForwardFuture/p/11507412.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
辽B代驾管理系统对代驾订单管理、用户咨询管理、代驾订单评价管理、代驾订单投诉管理、字典管理、论坛管理、公告管理、新闻信息管理、司机管理、用户管理、管理员管理等进行集中化处理。经过前面自己查阅的网络知识,加上自己在学校课堂上学习的知识,决定开发系统选择小程序模式这种高效率的模式完成系统功能开发。这种模式让操作员基于浏览器的方式进行网站访问,采用的主流的Java语言这种面向对象的语言进行辽B代驾管理系统程序的开发,在数据库的选择上面,选择功能强大的Mysql数据库进行数据的存放操作。辽B代驾管理系统的开发让用户查看代驾订单信息变得容易,让管理员高效管理代驾订单信息。 辽B代驾管理系统具有管理员角色,用户角色,这几个操作权限。 辽B代驾管理系统针对管理员设置的功能有:添加并管理各种类型信息,管理用户账户信息,管理代驾订单信息,管理公告信息等内容。 辽B代驾管理系统针对用户设置的功能有:查看并修改个人信息,查看代驾订单信息,查看公告信息等内容。 辽B代驾管理系统针对管理员设置的功能有:添加并管理各种类型信息,管理用户账户信息,管理代驾订单信息,管理公告信息等内容。 辽B代驾管理系统针对用户设置的功能有:查看并修改个人信息,查看代驾订单信息,查看公告信息等内容。 系统登录功能是程序必不可少的功能,在登录页面必填的数据有两项,一项就是账号,另一项数据就是密码,当管理员正确填写并提交这二者数据之后,管理员就可以进入系统后台功能操作区。项目管理页面提供的功能操作有:查看代驾订单,删除代驾订单操作,新增代驾订单操作,修改代驾订单操作。公告信息管理页面提供的功能操作有:新增公告,修改公告,删除公告操作。公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。新闻管理页面,此页面提供给管理员的功能有:新增新闻,修改新闻,删除新闻。新闻类型管理页面,此页面提供给管理员的功能有:新增新闻类型,修改新闻类型,删除新闻类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值