生成函数

定义

生成函数将数列转化成函数的形式处理。数列中的每一个数依次对应函数中的系数。具体而言,有

F(x)=i=0naixi

比较显而易见的特点是,如果系数所对应的序列有通项公式,则系数就是通项公式,如
对于 ai=i2,即 a=<1,4,9,16>,生成函数就是 i=0n=i2xi

基本运算

事实上,运算时我们就将生成函数视为普通函数运算。
设函数 F,G 的系数分别为 ai,bi
加减法直接对位相加

F(x)±G(x)=i=0n(ai±bi)xi

乘法就是普通卷积

F(x)G(x)=i=0nxij=0iajbij

封闭形式

听起来有些神奇,我们可以将一个无限的生成函数转化为封闭形式。最经典的是:

F(x)=i=0xi

观察一下显然有

F(x)x+1=F(x)

解方程立得

F(x)=11x

这个式子在生成函数转封闭形式的时候非常常用。

将封闭形式转化成通项公式的常规方法是待定系数法。如

F(x)=1(x1)(x2)2

我们将其拆分为和的形式,形如

F(x)=c1x1+c2x2+c3(x2)2

显然这几项可以通分变为原式。直接解方程即可(直接通分后拆开括号对应系数)。

{c1=13c2=13c3=13

再求对应的生成函数的展开式的系数,加起来就是生成函数的通项公式。通用的解法是广义二项式定理展开。

广义二项式定理:

(1+z)k=n=0(kn)zn

展开后就很好做了。注意展开前先满足广义二项式定理的形式。

[xn]F(x)=13+16×2n+n+112×2n

P10780 BZOJ3028 食物

非常经典的例题。

  • 将每种食物能选试做1,选不了试做0,发现对应的生成函数的乘积就是方案数。将所有食物乘起来对应的系数就是总方案数。
    乘出来生成函数是

x(x1)4

同样是二项式定理

(1x)4 应用广义二项式定理:

(1x)4=n=0(4n)(x)n

广义二项式系数 (4n) 为:

(4n)=(4)(5)(6)(4n+1)n!=(1)n(n+3)!3!n!=(1)n(n+33)

因此,展开式为:

(1x)4=n=0(1)n(n+33)(x)n=n=0(n+33)xn

将生成函数乘以 x

x(x1)4=xn=0(n+33)xn=n=0(n+33)xn+1

通过改变索引 m=n+1,我们得到:

n=0(n+33)xn+1=m=1(m+23)xm

因此,生成函数 x(x1)4 的通项公式为:

am=(m+23)

对于 m1,我们可以将其表示为:

am=(m+2)(m+1)m6

因此
生成函数 x(x1)4 的通项公式为:

an=(n+23)=(n+2)(n+1)n6

答案就是这个了。

posted @   all_for_god  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
点击右上角即可分享
微信分享提示