斯特林数学习笔记

斯特林数学习笔记

注:本篇只为作者自己看懂,方便以后复习。

注意:如无特殊说明,以下公式的范围皆为 n0n 为整数。

因为我太菜啦,所以很多东西都只有最浅显的部分。

Part 1.定义

斯特林数分为两种,分别是第一类、第二类。其中第二类较为常用。

第二类斯特林数

定义:第二类斯特林数{nk}表示把 n不同元素划分成 m相同的集合中(不能有空集)的方案数。

通项公式:

1.1 第二类斯特林数通项

{nk}={n1k1}+(k1){n1k}

推导的话考虑第 n 个数独立放在新的集合,此时系数为 1。或者放在新的集合,有 k1 种可能。

第一类斯特林数

定义:第一类斯特林数[nm]表示将 n不同元素构成 m轮换的数目。

其中,轮换也可称作原排列,既如果两个排列可以通过旋转相等,那么他们就是相等的。感性理解一下就好。

通项公式:

1.2 第一类斯特林数通项

[nk]=[n1k1]+(n1)[n1k]

对比一下的话,发现这两个式子十分的相像。实际上,这两类斯特林数关系非常紧密(不然为啥名字一样呢)

推导的话类似,考虑第 n 个数。然后插入的话考虑轮换对应排列就差不多。

注意:轮换与排列是双射关系,考虑排列 aii 连边组成的连通块组成的环即为不同的轮换。


注意,斯特林数通常出现在各种神秘推式子题,所以各种恒等式才是最重要的。

Part 2.恒等式

2.1

k=0n[nk]=n!

轮换与排列双射。

2.2

xn=k=0{nk}xk_

证明的话考虑有 x 种颜色,n 个格子,那么两边的意义都是给 n 个格子染成 x 种颜色的方案数。当然,用数学归纳法证明也是可以的。

k 得有意义范围为 min(n,x),因此这个式子常常用来优化一些 n 很大的问题,把枚举上限优化。

2.3

xn¯=k=0[nk]xk

xn¯=x(x+1)(x+2)...(x+n2)(x+n1),然后考虑这个多项式的系数,发现刚好就是第一类斯特林数。证明的话可以归纳法证明,但是我们直接设 dp fi,j 表示 [xj]xi¯,然后推一下递推式发现刚好是第一类斯特林数,就证完了。这里感谢码学长教我这个方法。

2.2 和 2.3 两个式子的样子很是相似。实际上,他们也可以作为斯特林数的定义式,人们需要研究上升幂、下降幂以及正常幂运算的关系,然后发现可以用斯特林数来将他们连接起来。

2.4

xn=k=0{nk}(1)nkxk¯

这个式子不会,开摆

2.5

xn_=k=0[nk](1)nkxk

发现与 2.3 很相似。原因:

x4_=x(x1)(x2)(x3)=x46x3+11x26x

x4¯=x(x+1)(x+2)(x+3)=x4+6x3+11x2+6x

发现相差的只有符号,因此改一下符号即可。

以上四个属于较为常见的。

从通常幂转换到上下降次幂一般用第二类,反之则用第一类。然后从小的转换到大的则需要加符号。

斯特林反演

2.6

f(n)=k=0n{nk}g(k)g(n)=k=0n[nk](1)nkf(k)

证明的话参考这个

首先由结论:

2.6.1

k=0{nk}[km](1)nk=[n=m]

证明:

2.6 证明

f(n)=i=0n[i=n]f(i)=i=0nf(i)j=in{nj}[ji](1)nk=j=0n{nj}i=0j[ji](1)jif(i)=k=0n{nk}g(k)

建议不要看这个证明,有错误。只是给我自己看的

Part 3.求法

首先,我们可以 O(nk) 暴力递推,一些题目是可以的。

但是我们可以在 O(nlogn) 的复杂度内求出两种斯特林数的某一行、某一列,总共四种算法。

我不会,摆了

posted @   编程客  阅读(76)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示