第7章 递推关系和生成函数
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
A
B
C
1 2 3 4
图
Hanoi塔是个经典问题. 对于这个问题, 我们先要设计算法, 进而估计算法的计 算复杂性, 这里就是移动的总次数.
(1) 算法设计: n=2时, 圆盘1从A套在B上;把圆盘2从 A转移到C上;把圆盘1从B上转移到C 上. 完毕. n=3时, 把圆盘1从A转移到C上;把圆 盘2从A转移到B上;把圆盘1从C上转 移到B上; 把圆盘3从A套在C上; 把圆盘 1从B再转移到A上; 把圆盘2从B转移到 C上, 把圆盘1从A套在C上. 完毕. 看看n=3的演示过程.
• •
例10:解hn=3hn-1-4n (n≥1) h0=2 步骤总结
I. 求齐次关系的一般解 II. 求非齐次关系的一个特解 III. 将一般解和特解联合,按初始条件求系数
• • • •
困难在于特解的求解。 例11: hn=2hn-1+3n (n≥1) h0=2 例12:hn=3hn-1+3n (n≥1) h0=2 例13: hn=hn-1+n3 (n≥1) h0=0
从多项式 (1+ax)(1+bx)(1+cx) (7.2) =1+(a+b+c)x+(ab+ac+bc)x2+(abc)x3 中发现, 所有这些可能的选取方式正好 是x幂的系数. 其中xi的系数是从三个球 中选取i个的方法之形象表示. 因子(1+ax)形象地指出, 对球a, 有两种 选取方法: 不选a, 或选a. 因子(1+ax)中 的1表示不选a, 而x的系数a表示选a.
(5) 相乘: A(x)B(x)=cixi, 其中 c0=a0b0, c1=a0b1+a1b0, c2=a0b2+a1b1+a2b0, …………., cr=a0br+a1br-1+…+arb0, …………. (6) 逆: 如果A(x)B(x)=1, 则称B(x) 为A(x)的逆, 记为B(x)=A-1(x) =1/A(x). (显然两者互为逆.)
既然在上述多项式中, xi的系数表明选 取i个球的方法, 那么 (1+ax)(1+bx)(1+cx) 所表明的是: 对a, b, c三球, 选取的方法 是, “选a或不选a”和“选b或不选b”以 及“选c或不选c”. 多项式中x的幂次表示选取球的个数, 而其相应系数表示一切可能的选取方 法.
如果我们只关心不同组合方案的数目, 不关心各种方案的罗列. 可以在(7.2)式 中令a=b=c=1, 则得到 (1+x)3 = C(Leabharlann Baidu,0)+C(3,1)x +C(3,2)x2+C(3,3)x3 =1+3x+3x2+x3. (7.3) 总方案数 N=C(3,0)+C(3,1)+C(3,2)+C(3,3) =1+3+3+1=8.
(2) 算法分析:令hn表示n个圆盘所需要 的转移次数. 根据算法先把前面n-1个 盘子转移到B上; 然后把第n个盘子转 移到C上; 最后再一次将B上的n-1个盘 子转到C上. 算法可实现性可用归纳法得到. 因n=2 时对, 假定n-1对, 那么n自然也对. 关于转移次数容易得到一个递归关系: hn=2hn-1+1 , h1=1.
3. 母函数的运算 设序列{ai}的母函数A(x)=aixi, {bi}的 母函数为B(x)= bixi. 运算定义如下: (1) 相等:A(x)=B(x){ai}={bi}ai= bi, i=1,2,… (2) 相加: A(x)+B(x)=(ai+bi) xi (3) 相减: A(x)-B(x)=(ai-bi) xi (4) 数乘: cA(x)=(cai) xi
A
B
C
假定n-1个盘子的转移算法已经确定. 对n个圆盘问题, 先把上面的圆盘1,2,…, n-1转移到B上, 再把最后一个盘子转移 到C上, 然后把B上的n-1个圆盘转移到 柱C上. 转移完毕. 这运用的是递归算法n=2时给出了算法; n=3时先利用n=2时的算法把圆盘1, 2移 B上; 再把圆盘3转移到柱C上;再利用 n=2时的算法把B上两个圆盘转移到柱 C上. n=4,5,以此类推.
7.3 非齐次递推关系
例9 (Hanoi塔问题):n个圆盘依其半径 大小, 从下而上套在柱A上, 如图3.1所 示. 每次只允许取一个转移到柱B或C 上, 而且不允许大盘放在小盘上方. 若 要求把A上的n个盘转移到C柱上. 请设 计一种方法, 并估计要移动几个盘次. 现在只有A, B, C三根柱子可供使用.
1 1 x
1
1 x x x
2 k
1 2x
1 1 x
1 2x 2 x 2 x
2 2 k k
则(F(x)-G(x))(1-3x+2x2)=x. 这说明
1 1 2x G( x ) F ( x ) x 1 3x 2x
• 定理7.1.2 沿Pascal三角形左下到右上 对角线上的二项式系数的和是 Fibonacci数
7.2 线性齐次递推关系
• 数列h0,h1,h2,…,hn,… • hn=a1hn-1+a2hn-2+…+akhn-k+bn (n≥k) • 错排数列Dn=(n-1)(Dn-2+Dn-1) (n ≥2) Dn=nDn-1+(-1)n (n ≥1)
母函数把数列的所有成员用一种非常 巧妙的方法联系在一起, 虽然这样做并 不一定能得到数列的简单公式, 可是也 许能够给出一个幂级数和的简单公式, 展开这个和函数, 所得到的幂级数的系 数就是我们所要找的数列. 比如后面我们将会学习到的Fibonacci 数列, 它满足一个递归关系 Fn+1=Fn+Fn-1 (n2; F1=F2=1).
2
.
这与把它们看成普通函数的运算是一致的.
• 例16:令k是一个整数,并令序列 h0,h1,h2,…,hn,…使hn等于e1+e2+…+ek=n的非 负整数解的个数。 • 例17:确定苹果、香蕉、橘子和梨的n组合 的个数,其中在每个n组合中苹果的个数是 偶数,香蕉的个数是奇数,橘子的个数在0 和4之间,而且至少要有一个梨。 • 例18:确定可以由苹果、香蕉、橘子和梨 袋装水果的袋数hn,其中在每个袋子中苹 果数是偶数,香蕉数是5的倍数,橘子数最 多是4个,梨的个数为0或1。
(7.3)就是一个关于形式变量x的幂函数, 这个幂函数中不同幂次的系数都是一 个组合数. 这可以推广到任意n个不同球所有可能 组合的方案数情况. 这其实就是我们大 家熟悉的二项式系数. 不过现在我们是 用形式级数的观点来看问题. 利用这种形式级数不仅仅是一种不同 的表达形式, 还非常有用.
2. 母函数定义 定义7.1 利用给定序列a0,a1,a2,所构造 的函数 F(x)= a0+a1x+a2x2+ 称为序列a0, a1, a2,的母函数. 母函数定义中的级数是形式幂级数, 不 必关心收敛性, x只是一个形式变量. 有限序列 a0, a1,, an也可以定义它的 母函数. (后面添加0)
第7章 递推关系和生成函数
7.1 一些数列
• 算术序列(等差数列) • 几何序列(等比数列) • 例1:确定平面一般位置上的n个互相 交叠的圆所形成的区域数。
例2 (Fibonacci问题):
Fibonacci数列是递推关系的又一典型 问题, 数列的本身有着许多应用. (1) 问题的提出:假定初生的一对雌雄兔 子, 从出生的第2个月之后每个月都可 以生出另外一对雌雄兔. 如果第1个月 只有一对初生的雌雄兔子, 问n个月之 后共有多少对兔子?
• 例6:求满足初始值h0=1,h1=2,h2=0的递推 关系hn=2hn-1+hn-2-2hn-3 (n≥3)的解 • 例7:只由三个字母a,b,c组成的长度为n的 一些单词将在通信信道上传输,满足条件: 传输中不得有两个a连续出现在任一单词中。 确定通信信道允许传输的单词个数。 • 例8:递推关系hn=4hn-1-4hn-2 (n≥2)的解 • 定理7.2.2 令q1,q2,…,qt为hn=a1hn-1+a2hn2+…+akhn-k (ak≠0,n≥k) 的特征方程的互异的 根。此时,如果qi是si重根,则对qi部分一 般解为Hn(i)=(c1+c2n+…+csinsi-1)qin
但是,
如果一个未知数列没有简单公式, 或者即便存在, 但是很复杂, 很不容易 得到, 我们也不知道, 该怎么办? 如果我们还希望研究这个数列, 讨论它 的性质, 该如何下手? 举一个极端的例子, 假定这个数列是2, 3, 5, 7, 11, 13, 17, 19, 23, …., 此处an是 第n个素数. 这样的情况, 期望任何简单 的公式都是不合理的.
• 例19:确定方程e1+e2+…+ek=n的非负奇整 数解e1,e2,…,ek的个数hn的母函数。 • 例20:令hn表示方程3e1+4e2+ 2e3+5e4 =n的 非负整数解的个数。求h0,h1,h2,…,hn,…的母 函数g(x)。 • 例21:有无限多现成的一分、五分、一角、 两角五分和五角的硬币。确定用这些硬币 凑成n分钱方法数hn的母函数g(x)。
• Fibonacci数列 Fn= Fn-1+ Fn-2 (n ≥2)
• 阶乘序列hn=nhn-1 (n ≥1) • 几何序列hn=qhn-1 (n ≥1)
• hn=a1hn-1+a2hn-2+…+akhn-k (n≥k) 其中 a1,a2,…,ak 是常系数,称为常系数线性齐次 递推关系。 • 定理7.2.1 令q为一非零数。则hn=qn是hna1hn-1-a2hn-2-…-akhn-k =0(ak≠0,n≥k) 的解,当 且仅当q是多项式方程xk-a1xk-1-a2xk-2-…ak=0的一个根。如果多项式方程有k个不同 的根q1,q2,…,qk,则hn=c1q1n+c2q2n+…+ckqkn
1. 母函数概念 设有a, b, c三个不同的球, 从中选取一 个, 或选a, 或选b, 或选c, 把这些可能 的选取形象地表示为a+b+c. 类似地, 从中选取二个, 或选a和b, 或 选a和c, 或选b和c. 可形象地表示为 ab+ac+bc, 同样, 从中选取三个, 只有 一种方法, 也可形象地表示为abc.
(3) Fibonacci数列的性质
I.
部分和Sn=f0+f1+f2+…+fn=fn+2-1
II. Fibonacci数列是偶数当且仅当n能被 3整除 III. Fibonacci数列满足公式
fn 1 1 5 2 5
n
1 1 5 2 5
n
(n 0)
• 例3:令g0,g1,g2,…,gn,…是满足下面 给出的Fibonacci数列递推关系和初始 条件:gn=gn-1+gn-2 (n≥2) g0=2,g1=-1 • 例4:确定2Xn棋盘用多米诺骨牌完美 覆盖的方法数hn。 • 例5:确定用单牌和多米诺骨牌对1Xn 棋盘完美覆盖的方法数bn。
1月 2月 3月 4月
5月
6月
(2) 求递推关系: 设满n个月时兔子对数 为Fn,则第n-1个月留下的兔子数目为 Fn-1对;当月新生兔数目为Fn-2对, 即第n2个月的所有兔子到第n个月都有繁殖 能力 Fn= Fn-1+ Fn-2, F1 =F2=1 (7.1) 由递推关系(7.1)式可依次得到 F3= F1+F2=2, F4= F2+F3=3, F5= F3+ F4=3+2=5, 前几项为:0,1,1,2,3,5,8,13, 21,34,55,89,144,233,…
例14 设F(x)= 1+x+x2+, G(x)=1-x, 由定 义可以得到 F(x)G(x)=1, 因此1/G(x)= G-1(x)=F(x), 即
1 1 x 1 x x
2
这同微积分中函数1/(1-x)的幂级数展开 式是完全一致的.
例15 设
F ( x)
G( x )
7.4 生成函数(母函数)
母函数就象一根晒衣绳, 我们把需要 得到的一列数就挂在它上面. 假定我们的问题的解是一列数: a0,a1,a2,,an, . 我们想知道这个数 列是什么, 我们期望得到怎样的答案? 当然, 最好的答案就是关于an的一个 简单的公式. 比如诸如an=n2+3之类的 表达式. 即, 通项公式.