第22章 递推关系与生成函数

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单独白球与单独黄球的组合方式分别为: 1,1和 1,1
分别构造函数1+w和1+y。
20
第22章 递推关系与生成函数
生成函数
(1+r+r2) (1+w)(1+y)
=1+(r+w+y)+(r2+rw+ry+wy) +(r2w+r2y+rwy)+r2wy 把r,w,y都用x来表示,可得: (1+x+x2)(1+x)(1+x)
子集数为
f (n 2)
.由加法原理得:
f (n) f (n 1) f (n 2)
17
第22章 递推关系与生成函数
§22.2 生成函数
• 生成函数是可重复排列和组合问题中处理 特殊约束的一个方便工具.
18
第22章 递推关系与生成函数
生成函数
例:有红球两个,白球、黄球各一个,试 求有多少种不同的组合方案,假设两个红球没 有区别。
H (n) a1H (n 1) a2 H (n 2) ak H (n k ) 0 (22.1)
称为常系数线性齐次递推关系,其中 n k , ai (i 1,2,, k ) 是常数, 且 ak 0 ;而方程
x a1 x
k
k 1
a2 x
k 2
4
第22章 递推关系与生成函数
递推关系
例一.Hanoi塔问题:N个半径各不相同 的圆盘,三根圆柱A,B,C; 求总共需要移动多少次? 设分别为h1,h2,…,hn
算法: n=1时,1次 n>1时,hn=2hn-1+1
5
第22章 递推关系与生成函数
§22.1 递推关系及其解法
• 定义22.1.1 给定一个数的序列 H(0),H(1),…,H(n),…,除了前面的若干数 外,将其余各项H(n)与它前面的若干个数 H(i)关联起来的方程叫做递推关系.
第22章 递推关系与生成函数
1
第22章 递推关系与生成函数
• 在组合数学中, 递推关系和生成函数是解决 计数问题的两个有密切联系的重要工具.
2
第22章 递推关系与生成函数
递推关系 递归是子程序或函数重复地调用自己 例一.Hanoi塔问题:N个半径各不相同 的圆盘,三根圆柱A,B,C; 算法: n=1时,直接把A柱的盘移到C上。 n>1时,先把A柱最上面的n-1张盘通过C 柱移到B上; 然后再将A柱上最下面的盘移到C盘上; 最后将B盘上的盘通过A盘移到C盘上。
Fn Fn 1 Fn 2
n3
(22.3)
显然, F1 1, F2 1 .按题意,要求 F13 ,可将初始值 F1 F2 1
13
第22章 递推关系与生成函数
逐步进行迭代,最后求出
F13 233
对于(22.3)式的一般解 Fn ,可以用求特征根的方法求得:
1 1 5 n 1 5 n Fn [( ) ( ) ] 2 2 5 n0
H (n) (n 2) H (n 1) (n 2)(n 1) H (n 2) (n 2)(n 1)3 H (0)
(n 2) (n 1)3 2 (n 2)!
9
第22章 递推关系与生成函数
• 定义22.1.1 递推关系
解:一、用组合方法来解: 一个都不选:1种方案 选1个球,3种方案 选2个球,4种方案 选3个球,3种方案 选4个球,1种方案
共有1+3+4+3+1=12种组合方案。
19
第22章 递推关系与生成函数
生成函数
二、用函数的方法 解:设r,w,y分别代表红球,白球,黄球;
单独红球的组合方式为1,1,1: 构造函数:1+r+r2
第22章 递推关系与生成函数
显然 g 是单射,又对第二部分中的任何一个交替子集
S { j1, j2 ,, jr 1, jr }, j1 j2 jr 1 jr
由 S ' 对应的 {1,2,, n 2} 中的交替子集,若 jr 1 n 1, 则 S S '{ jr } 就是与 S ' 对应的{1, ,, n 2}中的交替子集, 即 g 是满射,故 g 是双射,从而第二部分中的交替
qi

ri
重根,则其通解为
H (n) (C11 C12 n C1r1 nr 1 ) q1n
n (C21 C22 n C2r2 nr 1 ) q2
(Ct1 Ct 2 n Ctrt nrt 1 qtn )
其中 C11, C12 ,, C1r ; C21, C22 ,, C2r ; Ct1, Ct 2 ,, Ctr 为任意常数。
= (1+x+x2)(1+2x+ x2) =1+3x+4x2+3x3+x4
这个函数的系数正好与取不同球数的组合数 相等,这就是生成函数的方法。
21
第22章 递推关系与生成函数
生成函数定义
定义22.2.1 设
a0 , a1, a2 ,an ,
是一个序列.作幂级数
f ( x) a0 a1x1 a2 x2 an xn
7
第22章 递推关系与生成函数
用迭代法求解递推关系
hn 2hn1 1
h1 1,
h2 2 1,
h3 2h2 1 2(2 1) 1 2 2 1.......
2
百度文库
hn 1 2
n2
2
n 3
n2
... 2 1
2
n 3
hn 2hn 1 1 2(2
上式两边对
于是
x
微分得
1 2 n 1 1 2 x 3 x nx 2 (1 x)
1 f ( x) (1 x)2
24
第22章 递推关系与生成函数
几个基本的生成函数
1 2 3 k 1 x x x ... x ... 1 x
1 1 nx (nx) 2 (nx)3 ... (nx) k ... 1 nx

f ( x)
为序列 a0 , a1, a2 ,an , 的生成函数.
xi
生成函数只是一种形式幂级数,其中
仅看作
ai 的指示符,
例如:
i 0,1,2,
2 n 1 2 x 22 x 2 2n x n 就是 a0 1, a1 2, a2 2 ,, an 2 ,
的生成函数.
第22章 递推关系与生成函数
22
[例22.2.1] 确定下列数列的一般生成函数
(1) 解: (2)
1,1,1,, (1)n ,;
1 f ( x) 1 x x x (1) x 1 x
2 3 n n
1 (1) 1 n 1 , , ,, (1) ,; 0! 1! 2! n!
ak x
k k
0
(22.2)
称为(22.1)式的特征方程.
10
第22章 递推关系与生成函数
设 q1, q2 ,, qk 是(22.1)式的特征方程的根, n n ck qk (1)若 qi q j , i j ,则 H (n) c1 q1n c2 q2 是任意常数; 是递推关系(22.1)式的通解,其中 ci (i 1, 2,, k ) (2)若
{2,3, 4,5},{1,3, 4}就不是交替的.

f (n) 表示交替子集的数目.试证:
f (n) f (n 1) f (n 2)
证明: 显然 f (1) 2,其交替子集为 {1}, ; },{1,2} f (2) 3 ,其交替子集为 ,{1
.
15
第22章 递推关系与生成函数
Fn 称为第
n 个斐波那契(Fibonacci)数,
它在数学上十分重要,很多计数问题都将归结为求 Fibonacci数.
14
第22章 递推关系与生成函数
[例22.1.4] 集合 {1, 2,3,, n}的一个子集称为交替的, 如果将该子集的元素按递增次序列出时,它们 是奇、偶、奇、偶……交替序列.例如 {3, 4, 7,8},{1, 4, 7}都是交替的.空集也看作是交替的.但
3
第22章 递推关系与生成函数
递推关系
void hanoi(char A,char B,char C,int n) {if (n==1) printf(“move disk1 from %c to %c ” A,C) else { hanoi(A,C,B,n-1); printf(“move disk %d from %c to %c”,n,A,C) hanoi(B,A,C,n-1); } }
1 1 1 2 n 1 n f ( x) x (1) x e x 0! 1! 2! n!
解:
23
第22章 递推关系与生成函数
(3) 解: 注意到
1,2,3, (n 1),
f ( x) 1 2x 3x nx
2
n 1

1 1 x x 2 x3 x n 1 x
将{1,2,3,, n} 的所有子集分为两部分,一部分为
{1,2,3,, n 1} 的所有子集, 另一部分是由
{1,2,3,, n 1} 的每一个子集加进元素
n 以后得到的子集.
第一部分的交替子集为 f (n 1) ,第二部分中的交替子集 正好同 {1,2,, n 2} 的交替子集是对应的.事实上,定义
... 2 1) 1
2 n 1 2 n 2 ... 2 1
8
第22章 递推关系与生成函数
用迭代法求解递推关系
[例22.1.2] 解下列递推关系
H (n) (n 2) H (n 1) H (0) 2 n 1
解: 由 H ( n) 的定义,有
H (n) (n 2) H (n 1) H (0) 2
ì ï ï h( n) = 2h( n - 1) + 1 í ï h(1) = 1 ï î
第22章 递推关系与生成函数
n 1
n? 2
6
• 下面通过实例来讨论递推关系的建立及求 解,因为实际问题的满足要求的递推关系目 前还没有固定的程式可循,主要是通过分析 问题中对应于前后几个变元的函数值之间 的关系得出.
H (n) (C1 C2 n) 2n
C1 0, (C1 C2 ) 2 1
解得
C1 0, C1 1/ 2.
从而得
1 H (n) n 2 n n 2n 1 2
12
第22章 递推关系与生成函数
用特征方程求解递推关系
[例22.1.3] 兔子问题(Fibonacci) 在一年开始之际买来一对新兔子放入栏中,已知每月 每对中的母兔生出一对新的性别不同的兔子,满二个 月后的每对新兔子也生出一对兔子,问一年以后栏中 有多少对兔子? 解: 设第 n 个月初时栏中的兔子 Fn对.可将 Fn 个月初时已经在围栏中的兔子,有 分成两部分,一部分是 n 1 Fn 1 对;另一部分是第 n 个月初出生的小兔,有 Fn 2 对,于是有
1 2 t
11
第22章 递推关系与生成函数
用特征方程求解递推关系
[例22.1.2] H (n) 4H (n 1) 4H (n 2)
H (0) 0, H (1) 1 n2
解: 特征方程 所以
x2 4x 4 0
,解此方程得 ,代入初值得
x1 x2 2
{1,2,3,, n 2} 的交替子集到第二部分中的交替子集之间映射
g 如下:
{n} g () {n 1, n}
n为奇数 n为偶数
n为奇数但ik为偶数 n为奇数但ik为奇数 n为偶数但ik为偶数 n为偶数但ik为奇数
16
g (s) g ({i1, i2 ,ik })
S {n} S {n 1, n} S {n 1, n} S {n}
1 2 3 k 1 2 x 3x 4 x ... (k 1) x ... 2 (1 x)
1 n(n 1) 2 k 1 nx x ... C ( n k 1 , k ) x ... n (1 x) 2!
相关文档
最新文档