【笔记】生成函数/母函数在通项公式上的应用

前言

在看了好多篇博客,翻阅了几本书后,终于对生成函数有了一点点理解,还请各位和我一样刚入门的同学一起静下心来仔细思考,最好在草稿纸上演算一下

本文面向oier,并没有运用严格的数学语言


定义

对于序列 {ai} { a i } ,它对应的生成函数为

G(x)=i=0+aixi=a0+a1x+a2x2+a3x3+ G ( x ) = ∑ i = 0 + ∞ a i x i = a 0 + a 1 x + a 2 x 2 + a 3 x 3 + …

相应的,一个生成函数与一个序列之间应该是唯一对应的,即已知一个序列 {ai} { a i } 可以得到与其对应的唯一的生成函数 G(x) G ( x ) ,而已知一个生成函数 G(x) G ( x ) 可以得到对应的唯一的序列 {ai} { a i }

而我们可以利用这个生成函数中多项式的性质解决一些问题,一般是比较复杂的组合问题


前置技能

在此之前先介绍一个式子:

11x=1+x+x2+x3+ 1 1 − x = 1 + x + x 2 + x 3 + …

11x=+i=0xi 1 1 − x = ∑ i = 0 + ∞ x i

证明:

将分母乘过去:
1=(1x)+i=0xi=+i=0xix+i=0xi=+i=0xi+i=1xi=x0=1 1 = ( 1 − x ) ∑ i = 0 + ∞ x i = ∑ i = 0 + ∞ x i − x ∑ i = 0 + ∞ x i = ∑ i = 0 + ∞ x i − ∑ i = 1 + ∞ x i = x 0 = 1

这个式子在后面会有很大的用处:

11x=1+x+x2+x3+ 1 1 − x = 1 + x + x 2 + x 3 + …

变形有:
11λx=1+λ+λ2x2+λ3x3+ 1 1 − λ x = 1 + λ + λ 2 x 2 + λ 3 x 3 + …

11αx+11βx=(α+β)x+(α2+β2)x2+(α3+β3)x3+ 1 1 − α x + 1 1 − β x = ( α + β ) x + ( α 2 + β 2 ) x 2 + ( α 3 + β 3 ) x 3 + …


引入例题

我们先用生成函数证明一个定理: ki=0CinCkim=Ckn+m ∑ i = 0 k C n i C m k − i = C n + m k

这明显可以用定义证明:在 n n 个白球和m个黑球中取 k k 个的方案数为(在n个白球中取 i i 个并在m个黑球中取 ki k − i 个的方案数)对于 i[0,k] i ∈ [ 0 , k ] 的和

但这里用生成函数进行证明:

对于序列 {Cin} { C n i } 的生成函数为 G1(x)=C0n+C1nx+C2nx2+ G 1 ( x ) = C n 0 + C n 1 x + C n 2 x 2 + …

我们知道 (1+x)n ( 1 + x ) n 的式子展开后对应的 xi x i 项的系数为 Cin C n i (这一部分看Pascal三角后理解会更透彻一些)

即这个序列的生成函数等价于 G1(x)=(1+x)n G 1 ( x ) = ( 1 + x ) n ,同样对于序列 {Cim} { C m i } 的生成函数为 G2(x)=(1+x)m G 2 ( x ) = ( 1 + x ) m

原定理中等号左边可视作卷积形式,将等号左边视作一个整体,其生成函数为 G1(x)G2(x)=(1+x)n(1+x)m=(1+x)n+m G 1 ( x ) ⋅ G 2 ( x ) = ( 1 + x ) n ⋅ ( 1 + x ) m = ( 1 + x ) n + m

也就是说等号右边的生成函数为 G3=(1+x)n+m G 3 = ( 1 + x ) n + m

将这个生成函数展开: G3=(1+x)n+m=C0n+m+C1n+mx+C2n+mx2+ G 3 = ( 1 + x ) n + m = C n + m 0 + C n + m 1 x + C n + m 2 x 2 + …

将其中各项系数提出来即为原序列: {Ckn+m} { C n + m k }

即可得证


思路

整理下思路,我们的目的是证明这个式子等号两边相等,则我们可以 x=1,2,3, x = 1 , 2 , 3 , … 带进去得到序列 {ai} { a i }
求出式子左边形成数列 {ai} { a i } 和右边形成数列 {bi} { b i } 的生成函数 G1 G 1 G2 G 2 ,看是否相等,由于数列与生成函数之间唯一对应,所以只要生成函数相等则原数列相等,即在 x x 取任意值下等号左右两边都相等

建议看完这一段后理一下思路,再看看上下的例题结合理解一下


例题1

我们来解决另外一个问题:给定递推式an=2an1+1求通项公式 an a n a1=1 a 1 = 1

这个问题在我之前写的一篇博客上有解法:点我

接下来考虑生成函数的解法

设这个序列的生成函数

G(x)=a1x+a2x2+=+i=0aixi G ( x ) = a 1 x + a 2 x 2 + … = ∑ i = 0 + ∞ a i x i

转化(其中注意 a0=0 a 0 = 0

G(x)=a1x+a2x2+ G ( x ) = a 1 x + a 2 x 2 + …
=(2a0+1)x+(2a1+1)x2+ = ( 2 a 0 + 1 ) x + ( 2 a 1 + 1 ) x 2 + …
=(2a0x+2a1x2+)+(x+x2+) = ( 2 a 0 x + 2 a 1 x 2 + … ) + ( x + x 2 + … )
=2x(a1x+a2x2+)+(x+x2+) = 2 x ( a 1 x + a 2 x 2 + … ) + ( x + x 2 + … )

记得之前证的式子: 1+x+x2+x3+=11x 1 + x + x 2 + x 3 + … = 1 1 − x


G(x)=2xG(x)+11x G ( x ) = 2 x G ( x ) + 1 1 − x
G(x)=1(1x)(12x)=112x11x G ( x ) = 1 ( 1 − x ) ( 1 − 2 x ) = 1 1 − 2 x − 1 1 − x

G(x)=112x11x=(1+2x+22x2+)(1+x+x2+) G ( x ) = 1 1 − 2 x − 1 1 − x = ( 1 + 2 x + 2 2 x 2 + … ) − ( 1 + x + x 2 + … )

算出每一项系数: an=2n1 a n = 2 n − 1 ,而这个系数所组成的序列即为所求原序列
得通项公式: an=2n1 a n = 2 n − 1


例题2

再用这种方法求一下斐波那契数列通项公式( an=an1+an2,a1=a2=1 a n = a n − 1 + a n − 2 , a 1 = a 2 = 1

设生成函数 G(x) G ( x )

根据递推式得 G(x)x2x=x[G(x)x]+x2G(x) G ( x ) − x 2 − x = x [ G ( x ) − x ] + x 2 G ( x ) (如果看不懂的话想想 a1=a2=1 a 1 = a 2 = 1

继续变形:
G(x)=x1xx2 G ( x ) = x 1 − x − x 2
=15[111+52x11152x] = 1 5 [ 1 1 − 1 + 5 2 x − 1 1 − 1 − 5 2 x ]

为方便表示,设 α=11+52,β=1152x α = 1 − 1 + 5 2 , β = 1 − 1 − 5 2 x
=15[(αβ)x+(α2β2)x2+] = 1 5 [ ( α − β ) x + ( α 2 − β 2 ) x 2 + … ]

算出每一项系数即最终通项: an=αnβn5 a n = α n − β n 5

注意到这个式子是在无穷定义下得到的通项公式,所以其中的 n n 应该具有+的性质

所以这个式子中由于 |β|=11521 | β | = | 1 − 1 − 5 2 | ≤ 1 ,即 βn=0 β n = 0

最终得到通项公式: an=αn5=55(1+52)n a n = α n 5 = 5 5 ( 1 + 5 2 ) n


总结

由上我们可以总结一下用生成函数由递推公式推得通项公式的步骤:

  • 设数列生成函数为 G(x)=+i=0aixi G ( x ) = ∑ i = 0 + ∞ a i x i
  • 由递推式推得 G(x) G ( x ) 的数值表达式
  • G(x) G ( x ) 的数值表达式转换出形似 11λx 1 1 − λ x 的式子并用一开始证明的式子进行转换
  • 去除在无穷定义下无用项
  • xi x i 的系数提出即为数列的项 ai a i

留坑

生成函数还不能熟练应用,许多性质的前置技能未激活,需要循序渐进,在接下来的时间里慢慢补上

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值