斯特林数
第二类斯特林数(Stirling Number)
虽然被称作「第二类」,第二类斯特林数却在斯特林的相关著作和具体数学中被首先描述,同时也比第一类斯特林数常用得多。
第二类斯特林数(斯特林子集数)
递推式
边界是
考虑用组合意义来证明。
我们插入一个新元素时,有两种方案:
- 将新元素单独放入一个子集,有
种方案; - 将新元素放入一个现有的非空子集,有
种方案。
根据加法原理,将两式相加即可得到递推式。
通项公式
使用容斥原理证明该公式。设将
显然
根据二项式反演
考虑
同一行第二类斯特林数的计算
“同一行”的第二类斯特林数指的是,有着不同的
根据上面给出的通项公式,卷积计算即可。该做法的时间复杂度为
下面的代码使用了名为 poly
的多项式类,仅供参考。
同一列第二类斯特林数的计算
“同一列”的第二类斯特林数指的是,有着不同的
利用指数型生成函数计算。
一个盒子装
另外,
这里涉及到很多“有标号”“无标号”的内容,注意辨析。
第一类斯特林数(Stirling Number)
第一类斯特林数(斯特林轮换数)
一个轮换就是一个首尾相接的环形排列。我们可以写出一个轮换
递推式
边界是
该递推式的证明可以考虑其组合意义。
我们插入一个新元素时,有两种方案:
- 将该新元素置于一个单独的轮换中,共有
种方案; - 将该元素插入到任何一个现有的轮换中,共有
种方案。
根据加法原理,将两式相加即可得到递推式。
通项公式
第一类斯特林数没有实用的通项公式。
同一行第一类斯特林数的计算
类似第二类斯特林数,我们构造同行第一类斯特林数的生成函数,即
根据递推公式,不难写出
于是
这其实是
同一列第一类斯特林数的计算
仿照第二类斯特林数的计算,我们可以用指数型生成函数解决该问题。注意,由于递推公式和行有关,我们不能利用递推公式计算同列的第一类斯特林数。
显然,单个轮换的指数型生成函数为
它的
应用
上升幂与普通幂的相互转化
我们记上升阶乘幂
则可以利用下面的恒等式将上升幂转化为普通幂:
如果将普通幂转化为上升幂,则有下面的恒等式:
下降幂与普通幂的相互转化
我们记下降阶乘幂
则可以利用下面的恒等式将普通幂转化为下降幂:
如果将下降幂转化为普通幂,则有下面的恒等式:
多项式下降阶乘幂表示与多项式点值表示的关系
在这里,多项式的下降阶乘幂表示就是用
的形式表示一个多项式,而点值表示就是用
来表示一个多项式。
显然,下降阶乘幂
即
这是一个卷积形式的式子,我们可以在
习题
参考资料与注释
贡献者:@llmmkk@purple-vine@WenzelTian@Menci@Ir1dXD@H-J-Granger@Great-designer
本页面最近更新:2/3/2023, 12:00:00 AM,更新历史
发现错误?想一起完善? 在 GitHub 上编辑此页!
本页面的全部内容在 CC BY-SA 4.0 和 SATA 协议之条款下提供,附加条款亦可能应用