斯特林数

斯特林数

第二类斯特林数

定义 :

{nm} 表示将n个数放在m个非空集合的方案数(注:斯特林数写作大括号)

递推式:

{nm}={n1m1}+m×{n1m}

其组合意义是:把最后一个数单开一列 {n1m1} 加上把最后一个数放入 m 个集合中的其中一个 m×{n1m}

递推边界:{nn}={n1}=1(n0){n0}=[n=0]

还有其他一些特值:  {n2}=2n11(n>0),{nn1}=(n2)

通项公式:

{nm}=i=0min(1)mi(mi)!i!

证明:设将 n 个有标号物品放到 k 个有标号盒子(允许空盒子)的方案数为 Gk;将 n 个有标号物品放到 k 个有标号盒子(不允许空盒子)的方案数为 Fk

Gk=kn,Gk=i=0k(ki)Fi

第二个式子表示从 n 个盒子选 i 个必须放物品,然后对 i 求和。

然后二项式反演,得到:

Fk=i=0k(1)ki(ki)Gi=i=0k(1)ki(ki)kn

因为 F 的物品有标号,所以 :

Fkn!={nk}

带回去就得到:

{nm}=i=0min(1)mi(mi)!i!

第一类斯特林数

定义:

[nm]:表示将 n 个元素排成 m 个轮换的方案数。也即所有 n! 个排列中,构成的置换有 m 个无标号环的排列数。

递推式:

[nm]=[n1m1]+(n1)[n1m]

其组合意义是:考虑最后一个元素,可以加入任意一个轮换并且可以插入任意一个位置,相当于可以任选一个数,插在其后面 (n1)[n1m],也可以新开一个轮换 [n1m1]

递推边界以及特殊值:

[n0]=[n=0],[nn]=1[n1]=(n1)!,[nn1]=(n2)

两种斯特林数的大小关系:

由定义和递推式容易看出 :{nm}[nm]。当 m 等于 n,n-1,0 时等号成立。

定理

我们知道一个有 n 个元素的排列和一个 n 个元素的置换一一对应,于是对所有置换 中的轮换个数求和,我们有:

k=0n[nk]=n!

斯特林数与三种幂(很重要!)

先复习一下上升幂,下降幂:

下降幂

nm=n(n1)(n2)(nm+1)

上升幂

nm=n(n+1)(n+2)(n+m1)

相关结论

  1. nm=(n+m1)m,用于处理上升幂
  2. nm=(nm+1)m,用于处理 n<0 情况
  3. xn=(1)n(x)n,用于上升下降幂的转换
  4. (nm)=nmm!

上升下降幂与普通幂的转换

注意到,上升幂和下降幂本质上也是多项式,所以一个多项式也可以用上升幂和下降幂来表示。

他们的关系如下:

xn=k=0n{nk}xk=k=0n{nk}(xk)k!xn=k=0n[nk]xk

可以简记为第二类斯特林数对应下降幂第一类斯特林数对应上升幂

因为下降幂的组合意义比上升幂更好,所以更常用第一个式子来转换普通幂

对于第一个式子,考虑使用数学归纳法证明:

首先观察到:xk+1=xk(xk)xxk=xk+1+kxk

那么:

xxn1=xk=0n1{n1k}xk=k=0n1{n1k}xk+1+k=0n1{n1k}kxk=k=1n{n1k1}xk+k=1n1{n1k}kxk=k=1n(k{n1k}+{n1k1})xk=k=1n{nk}xk

第二个式子也可以用数学归纳法证明:

不过这次的观察是 : (x+n1)xk=xk+1+(n1)xk

xn=(x+n1)xn1=(x+n1)k=0n1[n1k]xk=k=0n1(n1)[n1k]xk+k=1n[n1k1]xk=k=0n[nk]xk

观察到,注意到上升幂和下降幂的多项式展开后,系数是有交错的符号,比如:

x4=x(x1)(x2)(x3)=x46x3+11x26xx4=x(x+1)(x+2)(x+3)=x4+6x3+11x2+6x

形式化的表示为:

xn=k=0n[nk]xkxn=k=0n(1)nk[nk]xk

xn=k=0n{nk}xk

xn=(1)n(x)n

得到:

xn=k=0n{nk}(1)k(x)k

x 替换 x,然后合并 1 的系数后易得:

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

总结一下:

上升下降幂的互相转换: nm=(n+m1)mxn=(1)n(x)n

普通幂转下降幂:xn=k=0n{nk}xk

普通幂转上升幂:xn=k=0n(1)nk{nk}xk

上升幂转普通幂:xn=k=0n[nk]xk

下降幂转普通幂:xn=k=0n(1)nk[nk]xk

反转公式

由上总结,我们能感受到两类斯特林数密不可分的关系,接下来我们就来探究它们的关系。

我们把普通幂转上升幂再转普通幂得:

xn=j=0nk=jn(1)nk{nk}[kj]xj

k=jn(1)nk{nk}[kj] 作为 xj的系数,只有 j=n 时右边的系数为1,其余的系数为0。

所以得到第一个反转公式:

k=jn(1)nk{nk}[kj]=[j=n]

{nn}[nn]=1k=jn1(1)nk{nk}[kj]=0

同理我们把普通幂转下降幂再转普通幂得:

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

斯特林反转

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

带入用反转公式可以验证。

斯特林一行之和与一列之和

和多项式有关。

咕咕咕...

补充

高阶差分与第二类斯特林数有奇妙的性质:

Δmxn|x=0=m!{nm}

posted @   花子の水晶植轮daisuki  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
https://blog-static.cnblogs.com/files/zouwangblog/mouse-click.js
点击右上角即可分享
微信分享提示