您的位置:首页 > 其它

组合数学笔记之四——“递推关系和生成函数”

2016-09-07 16:10 211 查看

简单数列举例及应用

令h1,h2,h3,⋯,hn,⋯

表示一个数列,hn 叫做序列的一般项或生成项。

算数数列

每一项都比前一项大一个常数q 。 若给定初始项h0 和常数 q 则序列唯一确定 : h0,h0+q,h0+2q,⋯,h0+nq,⋯

有递推关系 hn=hn−1+q, 一般项为 hn=h0+nq

并且可以知道算数数列的部分和(前n项和,n为任意非负整数)Sn=(n+1)h0+qn(n+2)2

几何序列

每一项都是前一项的常数q 倍。 若给定初始项h0 和常数 q 则序列唯一确定 :h0,qh0,q2h0,q3h0,⋯,qnh0,⋯

有递推关系 hn=qhn−1 , 一般项为 hn=h0qn

也可以知道集合序列的部分和为

Sn=⎧⎩⎨⎪⎪qn+1−1q−1h0(n+1)h0(q≠1)(q=1)

斐波拉契(Fibonacci)序列

斐波拉契数列-百度百科

其递推关系为 fn=fn−1+fn−2

其部分和满足Sn=fn+2−1

斐波拉契数满足公式

fn=15√(1+5√2)n−15√(1−5√2)n

虽然斐波拉契数是整数,可是对这些显式公式却包含无理数5√ 。而所有这些 5√ 又奇迹般地消失了。

线性齐次递推关系

令h0,h1,h2,⋯,hn,⋯

是一个数列。如果存在量 a1,a2,⋯,ak,ak≠0 和 量 bn (每一个量都有可能依赖于 n), 使得 hn=a1hn−1+a2hn−2+⋯+akhn−k+bn(n≥k)

则称该序列满足k阶线性递推关系。

例如 错位排列D0,D1,D2,⋯,Dn,⋯ 满足递推关系

DnDn=(n−1)Dn−1+(n−1)Dn−2=nDn−1+(−1)n(n≥2)(n≥1)

第一个递推关系的阶为2,且 a1=n−1,a2=n−1和bn=0 ,第二个关系的阶为 1, 且 a1=n以及bn=(−1)n

由例子可知,量 a1,a2,⋯,ak 可以是常数或依赖于 n。 同样 量 bn 也可以是常数(可能为0)或依赖于 n 。

如果 bn 是常数0, 则线性递推关系成为齐次的,如果a1,a2,⋯,ak 是常数,则称递推关系具有常系数。这里只讨论求解常系数线性齐次递推关系, 即形如:

hn=a1hn−1+a2hn−2+⋯+akhn−k(n≥k)

其中,a1,⋯,ak 是常数且ak≠0 的递推关系的一种特殊方法。所描述的方法成功与否依赖于能否找到与上式相关的某个个多项式方程的根。

递推关系可以重写为 :

hn−a1hn−1−a2hn−2−⋯−akhn−k=0(n≥k)

一旦所谓的初始值即 h0,h1,h2,⋯,hk−1 的值能够给出,则满足上述递推关系的数列 h0,h1,h2,⋯,hn,⋯ 就能够被唯一确定。

定理 令 q 为一非零数。则 hn=qn 是常系数线性齐次递推关系hn−a1hn−1−a2hn−2−⋯−akhn−k=0(ak≠0n≥k) 的解,当且仅当 q 是多项式方程 xk−a1xk−1−a2xk−2−⋯−ak=0 的一个根。如果多项式有 k 个不同的根 q1,q2,⋯,qk,则hn=c1qn1+c2qn2+⋯+ckqnk 是下述意义下递推关系的一般解 : 无论给定h9,h1,h2,⋯,hk−1 什么初始值,都存在常数c1,c2,c3,⋯,ck,使得上述的hn的一般解是满足递推关系和初始条件的唯一的序列。

上述定理中关于x的多项式方程叫做该递推关系的特征方程,而它的k个根叫做特征根。由上述定理,如果特征根互异,那么 关于hn 的一般式就是递推关系的一般解。

定理 令 q1,q2,⋯,qt 是常系数线性递推关系 hn−a1hn−1−a2hn−2−⋯−akhn−k=0(n≥k) 的特征方程的互异的根。 此时,如果qi 是si 重根, 则该递推关系对 qi 的部分一般解为 H(i)n=(n−1)Dn−1+(n−1)Dn−2=(c1+c2n+⋯+csinsi−1)qni

递推关系的一般解则是 hn=H(1)n+H(2)n+⋯+H(t)n

非齐次递推关系

非齐次递归关系,即在hn 的递推关系式中,bn 项不为 0 时的递推关系。

例如

Hanoi塔问题中,将n个圆盘从一个针柱移动到另一个针柱上所必须的移动次数满足 hn=2hn−1+1(n≥1)h0=0

这是一个1阶常系数线性递推关系,但却不是齐次的,因为出现了1这一项。 将hn−1 递归展开,可得hn 的迭代式 :

hn=2n−1+⋯+22+2+1

于是数hn 是几何序列 1,2,22,⋯,2n,⋯

的部分和,即hn 满足: hn=2n−12−1=2n−1

常系数一阶线性递推关系的解法

现在我们来阐述求解常系数一阶线性递推关系,即形式为

hn=ahn−1+bn(n≥1)

的递推解法。

类似于求解非齐次微分方程方法的离散模拟。可以总结如下:

求齐次关系的一般解;

求非齐次关系的一个特解。

将一般解和特殊解联合,确定一般解中出现的常数值,使得联合的解满足初始条件。

主要的困难在于找出步骤2的特解。在常系数一阶线性递推关系中的非齐次部分bn , 存在某些尝试的特解类型。下面只叙述两种:

如果bn 是n的k次多项式,那么寻找也是n的k次多项式的特解hn 。因此尝试

1. hn=r(常数)如果bn=d(常数)

2. hn=rn+s如果bn=dn+e

3. hn=rn2+sn+t如果bn=fn2+dn+e

如果bn 是指数形式,那么寻找的特解也是指数形式。因此尝试

hn=pdn或者bn=dn

求解hn=2hn−1+3n(n≥1)h0=2

由于齐次关系hn=2hn−1 只有一个特征根即 q=2 , 因此它的一般解为hn=c2n(n≥1)

为求hn=2hn−1+3n(n≥1) 的一个特解,我们尝试hn=p3n

要想hn 是解, p必须满足方程p3n=2p3n−1+3n

消元后,该方程化为3p=2p+3或等价于p=3

因此hn=c2n+3n+1

对常数的每一个选择都是一个解。现在要确定c, 使得初始条件h0=2 满足:(n=0)c20+3=0

这就给出c=−1 , 问题的解是hn=−2n+3n+1(n≥0)

解答完毕。

要注意,用上述方法求解递推关系hn=ahn−1+bn(n≥1) 在a=1 的情况下是行不通的。这时递归关系变成hn=hn−1+bn(n≥1) 而迭代产生hn=h0+b1+b2+⋯+bn 因此在a=1时的解式与级数b1+b2+⋯+bn 的求和相同。

生成函数

令h0,h1,h2,⋯,hn,⋯

为一无穷序列。它的生成函数定义为无穷级数g(x)=h0+h1x+h2x2+h3x3+⋯+hnxn+⋯

在g(x) 中,xn 的系数是无穷序列的第n项 hn , 从而xn 作为 hn 的 “位置持有者”。 有限序列h0,h1,h2,⋯,hm

可以看成无穷序列h0,h1,h2,⋯,hm,0,0,⋯

在这个序列中,除去有限项外所有其余的项都等于0。因此,每个有限序列都有一个生成函数g(x)=h0+h1x+h2x2+⋯+hmxm

它是一个多项式。

令m 是一正整数 。 关于二项式系数C(m,0),C(m,1),C(m,2),⋯,C(m,m)

的生成函数是gm(x)=C(m,0)+C(m,1)x+C(m,2)x2+⋯+C(m,m)xm

根据二项式定理可知gm(x)=(1+x)m

它以紧凑形式显示出关于二项式系数的序列信息。

常用生成函数:

hn=1 的生成函数为 g(x)=1+x+x2+x3+⋯+xn+⋯ 。其值为g(x)=11−x

令α 是一个实数。由牛顿二项式定理, 二项式系数C(α,0),C(α,1),C(α,2),⋯,C(α,n),⋯ 的无穷序列的生成函数是g(x)==C(α,0)+C(α,1)x+C(α,2)x2+⋯+C(α,n)xn+⋯(1+x)2

令k 是一个整数,并令序列h0,h1,h2,⋯,hn,⋯ 使hn 等于 e1+e2+⋯+ek=n 的非负整数个数。从多重集的组合 知道hn=C(n+k−1,n), 其生成函数为g(x)==∑n=0∞C(n+k−1,n)xn1(1−x)k

递归和生成函数

这一节介绍如何用生成函数求解常系数线性齐次递推关系。

定理 令 h0,h1,h2,⋯,hn,⋯ 为满足线性齐次递推关系 h0+c1hn−1+⋯+ckhn−k=0,ck≠0,(n≥k) 的数列。则它的生成函数g(x) 形如g(x)=p(x)q(x) 其中,q(x) 为具有非零常数项的k 次多项式, p(x) 是小于k 次的多项式。反之,给定这样的p(x) 和 q(x) ,则存在序列h0,h1,h2,⋯,hn,⋯ , 满足形如递推关系公式的k 阶常系数线性齐次递推关系,其生成函数由p(x)q(x) 给出。

且在上述定理中,q(x) 满足 q(x)=1+c1x+c2x2+⋯+ckxk

和p(x) 满足 p(x)=h0+(h1+c1h0)x+(h2+c1h1+c2h0)x2+⋯+(hk−1+c1hk−2+⋯+ck−1h0)xk−1

指数生成函数

对于其项可计数的序列,可以考虑关于单项式1,x,x22!,⋯,xnn!,⋯

的生成函数更有用。这些单项式出现在ex 的泰勒级数ex=∑n=0∞xnn!=1+x+x22!+⋯+xnn!+⋯

中。关于上述单项式序列的生成函数就做指数生成函数

定理 令S 为多重集 n1∗a1,n2∗a2,⋯,nk∗ak ,其中 n1,n2,⋯,,nk 均为非负整数。令hn 是 S 的 n-排列数。则序列h0,h1,h2,⋯,hn,⋯ 的指数生成函数g(e)(x) 由 g(e)(x)=fn1(x)fn2(x)⋯fnk(x) 给定,其中,对于i=1,2,⋯,k, fni(x)=h0+h1x+h2x22!+⋯+hnxnini!

确定用红色,白色和蓝色对一行n列棋盘的方格涂色的方法数hn, 其中红方格的个数是偶数并且至少有一个蓝方格。

指数生成函数g(e)(x) 为g(e)(x)====(1+x22!+x44!+⋯)∗(1+x1!+x22!+⋯)∗(x1!+x22!+⋯)ex+e−x2ex(ex−1)e3x−e2x+ex−1212∑n=0∞3n−2n+12xnn!

因此hn=3n−2n+12(n=1,2,⋯)

以上です。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数学 生成函数