下降幂多项式和斯特林数

阶乘幂 (Factorial Power)

主要有递进阶乘和递降阶乘两种. 分别记为:

xn¯=i=0n1(x+i)=(x+n1)!(x1)!xn_=i=0n1(xi)=x!(xn)!

一般常用的是递降阶乘, 也就是 OI 中经常提到的下降幂.

第一类斯特林数

我们定义第一类斯特林数 s(a,b) 为:

xn_=i=0ns(n,i)xi

我们记:

[ab]=|s(a,b)|s(a,b)=(1)ab[ab]

[ab] 即为无符号斯特林数. 无符号斯特林数有性质:

xn¯=i=0n[ni]xi

圆排列

圆排列指从全集中取特定数量元素排成一个环而不是一个序列的总方案数. 记 Q(a,b) 表示把大小为 a 的全集中取 b 个元素排成一个环的方案数. 因为对于 Q(a,b), 每个方案对应了 b!(ab) 中的 b 个方案, 因此有:

Q(a,b)=b!(ab)b=a!(ab)!b

无符号斯特林数 [ab] 的组合意义是把 a 个元素分成 b 个子集, 并且将每个子集圆排列的方案数.

根据组合意义, 我们可以得到无符号斯特林数的递推式:

[ab]=(a1)[a1b]+[a1b1]

其意义为: [ab] 中的方案, 由两种情况组成: 第一种是任意 [a1b1] 中的情况, 加上第 a 个元素自成一环; 第二种是将 [a1b] 中的每种方案, 将第 a 个元素插入到前 a1 个元素中任意一个的后面形成的方案.

根据 s(a,b)[ab] 的互推式可以得到 s(a,b) 的递推式:

s(a,b)=(1a)s(a1,b)+s(a1,b1)

第二类斯特林数

定义第二类斯特林数 {ab} 为:

xn=i=0n{ni}xi_

第二类斯特林数有定义式:

{ab}=1b!i=0b(1)i(bi)(bi)a=i=0b(1)i(bi)ai!(bi)!

第二类斯特林数 {ab} 的组合意义是将 a 个元素分成 k 个非空子集的方案数. 因此有递推式:

{ab}=b{a1b}+{a1b1}

对于 {ab} 的所有方案, 可以分为两种情况. 一种是元素 a 独自分到第 a 个集合, 和 {a1b1} 中的方案一一对应; 另一种是元素 a 加入到 {a1b} 任意方案中的 b 个集合之一, 所以一个 {a1b} 的方案对应 b{ab} 的元素.

下降幂多项式

我们把形如下式的多项式称为下降幂多项式.

f(x)=i=0naixi_

如果我们有多项式 f(x)=i=0naixi, 需要求出一组系数 b, 使得 f(x)=g(x)=i=0nbixi_, 可以尝试使用第二类斯特林数:

i=0nbixi_=i=0naixii=0nbixi_=i=0naij=0i{ij}xj_i=0nbixi_=j=0nxj_i=jnai{ij}bi=j=inaj{ji}

下降幂和组合数

如果有组合数 (ab), 那么它乘以 b 的下降幂有如下式子:

bx_(ab)=a!b!(ab)!×b!(bx)!=a!(ab)!(bx)!=(ax)!(ab)!(bx)!ax_=(axbx)ax_

posted @   Wild_Donkey  阅读(368)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示