64
20 20 第 第第第第 第 第第第第 第第第第第第第第 1. 1. 排排排排排排排排排排 排排排排排排排排排排 2. 2. 排排排排 排排排排 3. 3. 排排排排 排排排排

第 20 讲 组合计数

Embed Size (px)

DESCRIPTION

第 20 讲 组合计数. 主要内容: 1. 排列组合与二项式定理 2. 生成函数 3. 递归关系. Chapter 8 组合计数. 我们知道,离散数学研究离散对象 . 组合计数,简称计数 (counting) 就是计算满足一定条件的离散对象的安置方式的数目 . - PowerPoint PPT Presentation

Citation preview

第第 2020 讲 组合计数讲 组合计数 主要内容:主要内容: 1.1. 排列组合与二项式定理排列组合与二项式定理

2.2. 生成函数生成函数

3. 3. 递归关系递归关系

Chapter 8Chapter 8 组合计数组合计数 我们知道,离散数学研究离散对象我们知道,离散数学研究离散对象 . . 组合计数,组合计数,

简称计数简称计数 (counting)(counting) 就是计算满足一定条件的离就是计算满足一定条件的离散对象的安置方式的数目散对象的安置方式的数目 . .

对于给定离散对象的安置方式,要考虑其存在性对于给定离散对象的安置方式,要考虑其存在性问题、计数问题、构造方法、最优化问题,这些问题、计数问题、构造方法、最优化问题,这些是组合数学研究的全部内容是组合数学研究的全部内容 (( 参见文献参见文献 [6]). [6]). 组合组合数学发源于数学消遣和数学游戏,其研究历史可数学发源于数学消遣和数学游戏,其研究历史可追溯到公元前追溯到公元前 22002200 年中国的大禹治水时代,从洛年中国的大禹治水时代,从洛河中浮出的神龟背部上出现的三阶幻方开始,该河中浮出的神龟背部上出现的三阶幻方开始,该方阵的每一行、每一列以及两条对角线的三个数方阵的每一行、每一列以及两条对角线的三个数字之和都等于字之和都等于 1515 ,其研究方兴未艾,其研究方兴未艾 . .

计算机科学是研究算法的一门科学,组合计算机科学是研究算法的一门科学,组合计数是算法分析与设计的基础,它对于分计数是算法分析与设计的基础,它对于分析算法的时间复杂度和空间复杂度是至关析算法的时间复杂度和空间复杂度是至关重要的重要的 . . 当然,组合计数在诸多领域的很当然,组合计数在诸多领域的很多问题的讨论中也经常用到多问题的讨论中也经常用到 . . 从儿时的数从儿时的数“数”也略知组合计数的重要性“数”也略知组合计数的重要性 . .

本章主要讨论组合计数的基本计数技巧和本章主要讨论组合计数的基本计数技巧和方法,包括计数的基本原理、排列组合、方法,包括计数的基本原理、排列组合、二项式定理、生成函数与递归关系等内容,二项式定理、生成函数与递归关系等内容,它们都与集合、映射、运算和关系密切联它们都与集合、映射、运算和关系密切联系系 . .

8.1 8.1 排列组合与二项式定理排列组合与二项式定理 8.1.1 8.1.1 排列排列 1. 1. nn 个元素的个元素的 rr-- 排列排列 从从 nn 个不同的元素中,取个不同的元素中,取 rr 个出来按个出来按顺序顺序排排

列,就是列,就是 nn 个元素的个元素的 rr-- 排列排列 (permutation)(permutation) ,,其排列个数记为 或其排列个数记为 或 PP((nn, , rr).). r

nP

注意到注意到

随着随着 nn 的增大,的增大, nn!! 呈指数增长呈指数增长 . .

StirlingStirling 给出的近似公式为给出的近似公式为 ::

123)1(! nnn

.e

π2!n

nnn

利用乘法原理有下述结论利用乘法原理有下述结论 . . 定理定理 8-18-1 对于任意对于任意 rr ≤ ≤ nn, , 有有

显然 显然 , , nn 个元素的全排列个数为个元素的全排列个数为 nn!. !.

约定约定

)!(

!)1()1(

rn

nrnnnP r

n

.10 nP

2. 2. nn 个元素的个元素的 rr-- 圆排列圆排列 实际上实际上 , , nn 个元素的个元素的 rr-- 排列是线排列排列是线排列 . . 如果如果

从从 nn 个不同的元素中个不同的元素中 , , 取取 rr 个出来按顺序排个出来按顺序排列成一个圆列成一个圆 , , 就是就是 nn 个元素的个元素的 rr-- 圆排列圆排列 (cir(circular permutation), cular permutation), 这样的排列个数记为⊙ 这样的排列个数记为⊙ 或⊙ 或⊙ PP((nn, , rr). ).

rnP

1

1

2

2 3

3

4

4

中国传统(上下左右)?

上面的圆排列可以得到上面的圆排列可以得到 1234,2341,34121234,2341,3412 和和 44123123 四个线排列四个线排列 . .

一般地一般地 , , 一个一个 rr-- 圆排列可以得到圆排列可以得到 rr 个个 rr-- 排排列列 ,, 于是 于是

⊙ ⊙r

PP

rnr

n

3. 3. nn 个元素的个元素的 rr-- 可重排列可重排列 前面所讨论的排列中要求没有重复元素前面所讨论的排列中要求没有重复元素 . .

如果从如果从 nn 个不同的元素中,可重复取个不同的元素中,可重复取 rr 个元个元素按顺序排列,就是素按顺序排列,就是 nn 个元素的个元素的 rr-- 可重排可重排列列 (permutation with repetition)(permutation with repetition) ,这样的排,这样的排列个数记为 或列个数记为 或 UU((nn, , rr).).r

nU

可以这样理解可以这样理解 rr-- 可重排列可重排列 : : 先从先从 nn 个元素个元素中任取一个元素出来排在第一位置中任取一个元素出来排在第一位置 , , 有有 nn种选取方式种选取方式 . . 将其放回后将其放回后 , , 再任意取一个再任意取一个元素出来排在第二位置元素出来排在第二位置 , , 也有也有 nn 种选取方种选取方式式 . . 这样一直进行下去这样一直进行下去 , , 直到有直到有 rr 个元素排个元素排列为止列为止 . . 因此因此 , , 根据乘法原理有根据乘法原理有

rrn nU

4. 4. 有重复元素的全排列有重复元素的全排列 定理定理 8-2 8-2 设设 AA11, , AA22, …, , …, AAkk 是是 kk 个不同元素,个不同元素,

现有现有 nnii 个个 AAii 元素元素 ((ii = 1, 2, …, = 1, 2, …, kk, , nn11 + + n n22 + … + …

+ + nnkk = = nn), ), 即即

(( 可重集可重集 ))

则这则这 nn 个元素的全排列个数为个元素的全排列个数为

},,,{ 2211 kk AnAnAnA

!!!

!

21 knnn

n

Proof Proof 记这记这 nn 个可重元素的全排列个数为个可重元素的全排列个数为 NN. . 将将 nnii 个个 AAii 元素看作不同的元素元素看作不同的元素

于是得到于是得到 nn11 + + n n22 + … + + … + nnkk = = nn 个不同元素,个不同元素,其全排列个数为其全排列个数为 nn!. !. 由于由于 nnii 个不同的元素的个不同的元素的全排列个数为全排列个数为 nnii! (! (ii = 1,2,…, = 1,2,…,kk),), 于是所给于是所给 nn

个可重元素的一个全排列可以得到个可重元素的一个全排列可以得到 nn11!! n n22! !

… … nnkk!! 个个 nn 个不同元素的全排列个不同元素的全排列 , , 根据乘法根据乘法原理知原理知 N N ··nn11!! n n22! … ! … nnkk! = ! = nn!! ,进而,进而

.,...,2,1,,,, 21 kiAAA iniii

!!!

!

21 knnn

nN

2 2 组合组合 1. 1. nn 个元素的个元素的 rr-- 组合组合 从从 nn 个不同的元素中个不同的元素中 , , 取取 rr 个出来放成一堆个出来放成一堆而不考虑其顺序而不考虑其顺序 , , 就是就是 nn 个元素的个元素的 rr-- 组合组合(combination), (combination), 其组合个数记为 或 其组合个数记为 或 或或 CC((nn, , rr). ).

上面的三个组合个数的记号都是标准的上面的三个组合个数的记号都是标准的 , , 但但

和 容易混淆和 容易混淆 . .

rnC

r

n

rnC

r

n

约定当约定当 rr > > nn 时时 , , ;同时约定;同时约定 , ,

由于一个由于一个 rr-- 组合可以得到组合可以得到 rr!! 个个 rr-- 排列,根排列,根据乘法原理有下述结论据乘法原理有下述结论 . .

定理定理 8-38-3

0rnC .1,1 0

00 CCn

!)!(

!

! rrn

n

r

PC

rnr

n

2. 2. nn 个元素的个元素的 rr-- 可重组合可重组合 如果从如果从 nn 个不同的元素中个不同的元素中 , , 可重复地取可重复地取 rr 个个

元素而不考虑其顺序元素而不考虑其顺序 , , 就是就是 nn 个元素的个元素的 rr--可重组合可重组合 (combination with repetition)(combination with repetition) ,这,这样的组合个数记为 或样的组合个数记为 或 FF((nn, , rr). ).

定理定理 8-48-4 RemarkRemark 一一对应是组合计数常用的解题一一对应是组合计数常用的解题技巧之一技巧之一 ..

rnF

rrn

rn CF 1

证证 (Euler(Euler证法证法 ) ) 不妨设不妨设 nn 个不同元素分别为个不同元素分别为1, 2, …, 1, 2, …, nn. . 可重复选取的可重复选取的 rr 个元素为个元素为 cc11, , cc22, … , …

, , ccrr, , 可设可设 cc11≤≤cc22≤…≤≤…≤ccrr. . 记记 dd11 = = cc11, , dd22 = = cc22+ 1, … + 1, …

, , ddrr = = ccrr+ (+ (rr - 1), - 1), 于是得到另外一个组合于是得到另外一个组合 dd11, , dd22,,

… , … , ddrr. . 显然显然 , ,

是是 {{cc11, , cc22, … , , … , ccrr}} 到到 {{dd11, , dd22, … , , … , ddrr}} 的一一对的一一对应应 , , 于是组合于是组合 cc11, , cc22, … , , … , ccrr 的个数与组合的个数与组合 dd11, , dd

22, … , , … , ddrr 的个数相同的个数相同 . . 而组合而组合 dd11, , dd22, … , , … , ddrr 是是在在 1, 2, …, 1, 2, …, nn, , nn + 1, …, + 1, …, nn + ( + (rr - 1) - 1) 这这 nn + + rr – 1 – 1个不同的元素的个不同的元素的 rr-- 组合组合 , , 其个数为其个数为

.,...,2,1,: ridcf ii

.1r

rnC

容易证明容易证明 , , nn 个元素的个元素的 rr-- 可重组合个数与不可重组合个数与不定方程定方程

的非负整数解的个数相同的非负整数解的个数相同 . . 利用这一点利用这一点 , , 可以证明:若可以证明:若 nn 个元素的个元素的 rr-- 可重组合中每可重组合中每个元素至少出现一次个元素至少出现一次 , , 则则 rr ≥ ≥ nn 且这样的组且这样的组合个数为 合个数为

例例 8-1 8-1 从为数众多的一元币、五元币、十从为数众多的一元币、五元币、十元币、五十元币和一百元币中选取元币、五十元币和一百元币中选取 66 张出张出来,有多少种选取方式? 来,有多少种选取方式?

rxxx n 21

.11

nrC

Solution Solution 根据题意根据题意 , , 就是从就是从 55 个不同的元素中个不同的元素中 , , 可可

重复地取重复地取 66 个元素而不考虑其顺序的个元素而不考虑其顺序的 6-6- 可可重组合重组合 , , 其组合个数为其组合个数为

610

6165

65 CCF

.210123456

5678910

与组合有关的恒等式有近与组合有关的恒等式有近 10001000 个个 ,, 下面是下面是常用的三个组合恒等式常用的三个组合恒等式 ,, 可采用组合的计算可采用组合的计算公式定理公式定理 8-38-3 加以证明加以证明 ,, 也可以根据组合的也可以根据组合的意义进行“组合证明”意义进行“组合证明” . .

(1) (1) 对称公式对称公式

(2) (2) 加法公式加法公式

(3) (3) 移进移出公式移进移出公式

.rnn

rn CC

.111

r

nrn

rn CCC

.11

r

nrn C

r

nC

3 3 二项式定理二项式定理 与组合密切相关的是下述二项式定理与组合密切相关的是下述二项式定理 .. 定理定理 8-58-5(( 二项式定理二项式定理 ) ) 设设 nn 为正整数为正整数 , , 则则

对于任意对于任意 xx 和和 yy, , 有 有

.)(0

rnrn

r

rn

n yxCyx

正因为这样,组合数又称为正因为这样,组合数又称为二项式系数二项式系数 . . 根据二项式定理,有根据二项式定理,有

思考思考 将所有 将所有 nn 个元素的个元素的 rr-- 排列和排列和 rr-- 组合列组合列举出来的方法举出来的方法 ..

作业作业 1,2,3,4.1,2,3,4.

.1)1( 221

0

nnnnn

rn

r

rn

n xCxCxCxCx

.1)11(2 21

0

nnnn

rn

r

rn

nn CCCxC

8.2 8.2 生成函数生成函数 前面从计数的加法原理和乘法原理出发,介绍了前面从计数的加法原理和乘法原理出发,介绍了

排列组合的概念以及一些计算其个数的公式排列组合的概念以及一些计算其个数的公式 . . 生成函数生成函数 (generating function)(generating function) 又称为母函数,它又称为母函数,它

是解决满足一定要求的排列组合计数问题的一种是解决满足一定要求的排列组合计数问题的一种重要工具重要工具 , , 也是求解递归关系的一种工具也是求解递归关系的一种工具 . .

利用生成函数解决计数问题的基本思想就是将要利用生成函数解决计数问题的基本思想就是将要计算的个数计算的个数 aarr = = ff((rr) ) 转化为一个关于转化为一个关于 xx 的函数,的函数,通过对通过对 xxrr 或 的系数的讨论得出结论或 的系数的讨论得出结论 ((r r = 0, 1, 2, = 0, 1, 2,

…).…). !r

xr

8.2.1 8.2.1 组合计数生成函数组合计数生成函数 定义定义 8-1 8-1 对于数列对于数列 aa00 ,, aa11 ,…,,…, aarr ,…,,…,

其其组合计数生成函数组合计数生成函数 (ordinary generating fu(ordinary generating function)nction) 为为

(( 形式形式 )) 幂级数幂级数 ??

0

2210)(

r

rr

rr xaxaxaxaaxG

(1) (1) 设设 nn 个元素的个元素的 rr-- 组合个数为组合个数为 aarr ,, r r = 0, = 0,

1, 2, …. 1, 2, …. 显然显然 , , 有 有

其组合计数生成函数为其组合计数生成函数为

nr

nrC

r

a rnr

,0

,

0,1

nnnnnn xxCxCxC )1(1 221

n

xxx )1()1)(1(

于是于是 , , aarr 就是其组合计数生成函数 中就是其组合计数生成函数 中xxrr 的系数且的系数且

实际上实际上 , , 中第中第 ii 个个 (1 + (1 + xx)) 可理解为可理解为 nn 个元素中的第个元素中的第 ii 个元素,其中个元素,其中的“的“ 1”1” 表示在组合中不取第表示在组合中不取第 ii 个元素,个元素,““ xx”” 表示在组合中选取了第表示在组合中选取了第 ii 元素元素 ((ii = 1, 2, = 1, 2, …, …, nn).).

0r

rr xa

.)1()1()1)(1(0

n

n

r

rr xxxxxa

n

xxx )1()1)(1(

(2) (2) 设设 nn 个元素的个元素的 rr-- 可重组合个数为可重组合个数为 aarr ,, r r

= 0, 1, 2, …. = 0, 1, 2, …. 显然显然 ,, 有有 特别地特别地 aa00 = 1. = 1. 现考虑 现考虑

其展开式中其展开式中 xxrr 来源于第一个括号来源于第一个括号 (1 + (1 + x x + + xx22 + …+ …)) 中的 中的 , , 第二个括号第二个括号 (1 + (1 + x x + + xx22 + … + …))中的 中的 , , … … , , 第第 nn 个括号个括号 (1 + (1 + x x + + xx22 + … + …))中的 的乘积,即中的 的乘积,即

.1r

rnr Ca

n

xxxxxx )1()1)(1( 222

1mx2mx

nmxrmmm xxxx n 21

这时这时 , ,

该不定方程的非负整数解的个数即为 换该不定方程的非负整数解的个数即为 换句话说句话说 ,, 有 有

因此因此 , , 上式右边展开式中上式右边展开式中 xxrr 的系数就是的系数就是 aarr..

实际上, 实际上,

.,,2,1,0,21 nimrmmm in

.1r

rnC

n

n

r

rr xxxxxxxa )1()1()1( 222

0

中的第中的第 ii 个个 (1 + (1 + x x + + xx22 + … + …) ) 可理解为可理解为 nn 个个元素中的第元素中的第 ii 个元素个元素 , , 其中的“其中的“ 1”1” 表示在表示在组合中不取第组合中不取第 ii 个元素个元素 , “, “xx”” 表示在组合中表示在组合中第第 ii 个元素取一次个元素取一次 , “, “xx22”” 表示在组合中第表示在组合中第 ii个元素取了两次个元素取了两次 , “, “xx33”” 表示在组合中第表示在组合中第 ii 个个元素取了三次元素取了三次 , …, (, …, (ii = 1, 2, …, = 1, 2, …, nn). ).

上述思想还可以推广上述思想还可以推广 , , 例如在组合计数生例如在组合计数生成函数中出现乘积项成函数中出现乘积项 ((xx22 + x + x44)) ,则表示对应,则表示对应的元素可取两次或四次的元素可取两次或四次 . .

n

xxxxxx )1()1)(1( 222

(1)(1)

(2)(2)

((mm 为实数为实数 ).).

(3)(3)

211

1xx

x

2

!2

)1(1)1( x

mmmxx m

32

!3

1

!2

11e xxxx

下面通过例子说明如何利用组合计数生成下面通过例子说明如何利用组合计数生成函数解决一般的组合计数问题函数解决一般的组合计数问题 . .

例例 8-2 8-2 一口袋中有一口袋中有 55 个红球个红球 , 3, 3 个黄球个黄球 , , 绿、绿、白、黑球可任意多提供白、黑球可任意多提供 . . 现从中取现从中取 33 个球个球 , , 有多少种选取方式有多少种选取方式 ??

SolutionSolution 设取设取 rr 个球的方法有个球的方法有 aarr种种 ((rr = 0, 1, = 0, 1,

2, … ), 2, … ), 则组合计数生成函数 则组合计数生成函数 r

r xaxaxaaxG 2210)(

32325432 )1)(1)(1( xxxxxxxxxx

353 a

例例 8-3 8-3 现有现有 22nn 个个 AA, 2, 2nn 个个 BB, 2, 2nn 个个 CC, , 求从求从它们中选出它们中选出 33nn 个字母的方式数个字母的方式数 . .

SolutionSolution 设取设取 rr 个球的方法有个球的方法有 aarr种种 ((rr = 0, 1, = 0, 1,

2, … ), 2, … ), 则组合计数生成函数则组合计数生成函数 r

r xaxaxaaxG 2210)(

322 )1( nxxx

21

2233 3 nnn CCa

2 2 排列计数生成函数排列计数生成函数 Def 8-2 Def 8-2 对于数列对于数列 aa00, , aa11, …, , …, aarr, …, , …, 其其排列计排列计数生成函数数生成函数 (exponential generating function)(exponential generating function)为为

这时这时 , , 排列个数排列个数 aarr 是 的系数是 的系数 . . !r

xr

!!2

)(2

210 r

xa

xaxaaxE

r

r

可以证明下述定理可以证明下述定理 .. Theorem Theorem 8-6 8-6 设设 AA11 , , A A22 , … , , … , AAkk 是是 kk 个不同个不同

元素元素 , , 现有现有 nnii 个个 AAii 元素元素 ((ii = 1, 2, …, = 1, 2, …, kk, , nn11 + + n n

22 + … + + … + nnkk = = nn), ), 则在这则在这 nn 个元素中任取个元素中任取 rr 个个元素的排列个数为元素的排列个数为 aarr, , 则其排列计数生成函则其排列计数生成函数为数为

!!2)(

2

210 r

xa

xaxaaxE

r

r

!!21

!!21

!!21

2

2

2

1

2 21

k

nnn

n

xxx

n

xxx

n

xxx

k

实际上实际上 , , 上式右边的第上式右边的第 ii 个括号表示第个括号表示第 ii 个元素个元素 ,, 其中的“其中的“ 1”1”表示不取第表示不取第 ii 个元素个元素 , “, “xx””表示第表示第 ii个元素取了一次用来排列个元素取了一次用来排列 , “ , “ xx22/2!”/2!”表示第表示第 ii 个个元素取了两次用来排列元素取了两次用来排列 , …, “ ”, …, “ ”表示第表示第 ii 个个元素取了元素取了 nnii次用来排列次用来排列 , , 当然第当然第 ii 个元素最多个元素最多取取 nnii次次 ((ii = 1, 2, …, = 1, 2, …, kk). ).

若一个元素在排列中至少取两次若一个元素在排列中至少取两次 , , 至多取五次至多取五次 , , 则在排列计数生成函数中应出现 则在排列计数生成函数中应出现

乘积项乘积项 . .

!i

n

n

x i

!5!4!3!2

5432 xxxx

利用该思想可以解决很多的排列计数问题利用该思想可以解决很多的排列计数问题 .. 例例 8-4 8-4 用用 0, 1, 2, 3, 40, 1, 2, 3, 4 五个数字五个数字 , , 求可组成求可组成六位数的个数六位数的个数 , , 其中其中 00 恰出现一次恰出现一次 , 1, 1 出现出现两次或三次两次或三次 , 2, 2 不出现或出现一次不出现或出现一次 , 3, 3 没有没有限制限制 , 4, 4 出现奇数次出现奇数次 . .

SolutionSolution 先计算不出现先计算不出现 00 的满足其余条件的满足其余条件的五位数个数的五位数个数 . .

设不出现设不出现 00 的满足其余条件的的满足其余条件的 rr 位数个数为位数个数为aarr ,则排列计数生成函数,则排列计数生成函数

由于在满足要求的六位数中由于在满足要求的六位数中 , 0, 0 恰出现一次恰出现一次 ,, 而由所求出的每个五位数可得到而由所求出的每个五位数可得到 55 个不同个不同的六位数的六位数 , , 如由如由 1213412134 可得到可得到 121340, 1210121340, 121034, 121304, 120134, 102134, 34, 121304, 120134, 102134, 故满足要求的故满足要求的六位数有六位数有 140 140 5 = 700. 5 = 700.

!5!3!3!21)1(

!3!2)(

533232 xxx

xxxx

xxxE

1405 a

例例 8-5 8-5 将将 nn 个点排成一条直线个点排成一条直线 , , 用红、白、用红、白、黑三种颜色对其任意涂色黑三种颜色对其任意涂色 , , 要求同色点为要求同色点为偶数偶数 (( 包括包括 0), 0), 有多少种涂法有多少种涂法 ??

Solution Solution 这是一个排列问题这是一个排列问题 , , 设排成一行设排成一行的的 rr 个点满足要求的涂法有个点满足要求的涂法有 aarr种种 , , r r = 0, 1, 2, = 0, 1, 2,

…, …, 则排列计数生成函数则排列计数生成函数

作业 习题作业 习题 8.2 1—5.8.2 1—5.

342

!4!21)(

xxxE

nnnna )3()1(33

8

1

8.3 8.3 递归关系递归关系 还有一些计数问题可以归结到建立和求解递归关系还有一些计数问题可以归结到建立和求解递归关系 . . 在学在学习数列时,有时会出现数列的后项是由前项或前几项确定习数列时,有时会出现数列的后项是由前项或前几项确定的,这实际上就是递归关系,又称为递推关系的,这实际上就是递归关系,又称为递推关系 ..

利用递归关系解决计数问题是很重要的方法之一,在其他利用递归关系解决计数问题是很重要的方法之一,在其他数学分支中都会用到此技巧数学分支中都会用到此技巧 . . 就计算机科学来说,大多数就计算机科学来说,大多数算法的执行都表现为按某种条件重复地执行一些循环,而算法的执行都表现为按某种条件重复地执行一些循环,而这些循环经常可以用递归关系来表达这些循环经常可以用递归关系来表达 . . 因此,递归关系的因此,递归关系的建立和求解对算法分析来讲就变得至关重要建立和求解对算法分析来讲就变得至关重要 ..

本节先举例说明如何建立递归关系,再给出常用的求解递本节先举例说明如何建立递归关系,再给出常用的求解递归关系的方法归关系的方法 . . 部分内容讨论涉及到高等数学中幂级数及部分内容讨论涉及到高等数学中幂级数及其运算等有关内容其运算等有关内容 . .

1 1 递归关系的概念递归关系的概念 如果一个问题可以归结到其前面一个问题如果一个问题可以归结到其前面一个问题

或前面一些问题或前面一些问题 , , 这就是递归问题这就是递归问题 , , 递归递归 (r(recurrence)ecurrence) 又称为递推又称为递推 . .

在知道在知道 aa00 = 1 = 1 时时 , , 对于任意正整数对于任意正整数 nn,, 定义定义 aa

nn = = nanann-1-1,, 这实际上是阶乘函数的递归定义或这实际上是阶乘函数的递归定义或者说借助于递归给出集合者说借助于递归给出集合 {{ a a00, , aa11,…, ,…, aann,…},…}

的定义的定义 , , aann 的计算归结到其前面的一个的计算归结到其前面的一个 aann-1-1

的计算的计算 ,, 这时这时 aann = = nanann-1-1 就是一个递归关系就是一个递归关系 ,,

或称为递归方程或称为递归方程 ,, 或递归函数或递归函数 ,, 其中其中 aa00 = 1 = 1

称为初始条件或边界条件称为初始条件或边界条件 . .

给定数列给定数列 aa00, , aa11, …, , …, aann , …, , …, 该数列中除有限该数列中除有限项以外的任何项项以外的任何项 aann 与其前面一项或前面一与其前面一项或前面一些项的一个方程称为些项的一个方程称为递归递归关系关系 (recurrence re(recurrence relation), lation), 它表示它表示 aann 与其前面一项或前面一些与其前面一项或前面一些项的一种关系项的一种关系 . .

为了求解该递归关系为了求解该递归关系 , , 所给出的一些条件所给出的一些条件称为称为初始条件初始条件 (initial condition). (initial condition).

对于数列对于数列 aa00, , aa11, …, , …, aann , …, , …, 需要一定的技巧需要一定的技巧才能得出其递归关系才能得出其递归关系 , , 要知道要知道 aann 是是 nn 的一的一个解析表达式个解析表达式 ff((nn)) 有时也是比较困难的有时也是比较困难的 , , 它它通常由其初始条件和递归关系来确定通常由其初始条件和递归关系来确定 . .

我们现在感兴趣的是得出我们现在感兴趣的是得出 aann 是是 nn 的解析表的解析表达式达式 , , 虽然一般情况下很难办到这一点虽然一般情况下很难办到这一点 . .

下面是根据具体问题建立递归关系的两个下面是根据具体问题建立递归关系的两个例子例子 . .

例例 8-6(8-6( 汉诺塔汉诺塔 , Hanoi tower) , Hanoi tower)

(1) (1) 一次只能移动一个金盘一次只能移动一个金盘 ;; (2) (2) 金盘只能在三根宝石针上存放金盘只能在三根宝石针上存放 ;; (3) (3) 不允许将大金盘放在小金盘上不允许将大金盘放在小金盘上 . .

假设假设 nn 是金盘的数目是金盘的数目 (( 如如 nn = 64), = 64), hhnn 按规则需按规则需要移动的次数要移动的次数 ,, 求求 hhnn 的初始条件及递归关系的初始条件及递归关系 . .

SolutionSolution 显然显然 , , 初始条件为初始条件为 hh11 = 1. = 1. 当有当有 nn 个金盘时个金盘时 , , 可以先将宝石针可以先将宝石针 AA 最上面最上面

的的 nn - 1 - 1 个金盘按规则移动另外一根宝石针上个金盘按规则移动另外一根宝石针上 ,, 可设为可设为 BB, , 需要移动需要移动 hhnn – 1 – 1次次 . . 再将再将 AA 上最上最大的金盘移动到大的金盘移动到 CC, , 移动一次移动一次 . . 最后将宝石最后将宝石针针 BB 上的上的 nn - 1 - 1 个金盘按规则移动到个金盘按规则移动到 CC, , 要移要移动动 hhnn – 1 – 1次次 . .

根据加法原理根据加法原理 , , 有递归关系有递归关系12 1 nn hh

例例 8-78-7(( 斐波那契数列斐波那契数列 ,Fibonacci sequence) ,Fibonacci sequence) SolutionSolution 显然显然 ,, 初始条件为初始条件为 FF11 = 1, = 1, FF22 = 1. = 1.

FFnn = = 第第 nn 个月大兔子的对数 个月大兔子的对数 + + 第第 nn 个月小个月小兔子的对数兔子的对数 , ,

而第而第 nn 个月大兔子的对数 个月大兔子的对数 = = 第第 nn - 1 - 1 个月兔个月兔子的对数子的对数 FFn n -1-1, ,

第第 nn 个月小兔子的对数 个月小兔子的对数 = = 第第 nn – 1 – 1 大兔子大兔子的对数 的对数 = = 第第 nn – 2 – 2 兔子的对数兔子的对数 FFn n -2-2, ,

见图见图 8-3, 8-3, 其中实心点表示大兔子对其中实心点表示大兔子对 , , 空心空心点表示小兔子对点表示小兔子对 . .

21 nnn FFF

1 2 3 4 5

2 2 常用的递归关系求解方法常用的递归关系求解方法 1. 1. 递归法递归法 递归法又称为递推法递归法又称为递推法 , , 是将对数列第是将对数列第 nn 项项 aa

nn 的计算转化为对其前面的一个项或一些项的计算转化为对其前面的一个项或一些项的计算的计算 , , 直到最后归结到初始条件直到最后归结到初始条件 . .

例例 8-88-8 在在 hh11 = 1 = 1 时时 , , 求解递归关系求解递归关系 SolutionSolution

.12 1 nn hh

12 1 nn hh

1221)12(2 22

2 nn hh

.1212...22... 21

1 nnn h

另解另解 由于 由于 hh11 = 1 = 1 且且 hhnn = 2 = 2hhnn – 1 – 1 + 1 + 1 ,于是,于是 hh22

= 2= 2hh11 + 1 = 3 = 2 + 1 = 3 = 222 – 1. – 1. 进而有进而有 hh33 = 2= 2hh22 + 1 = + 1 =

7 = 27 = 233 – 1, …, – 1, …, hhnn = 2 = 2nn - 1. - 1.

迭代法与递归法是不同的迭代法与递归法是不同的 . .

当当 nn = 64 = 64 时时 , , hh6464 = 2 = 26464 - 1 = 18,446,744,073,709,551,615. - 1 = 18,446,744,073,709,551,615. 若移动一次只需用若移动一次只需用 1s1s ,约需,约需 58455845 亿年亿年 . .

2. 2. 生成函数法生成函数法 (1) (1) 根据所给数列构造其生成函数;根据所给数列构造其生成函数;

(2) (2) 利用递归关系以及已知函数的形式幂级利用递归关系以及已知函数的形式幂级数求出该生成函数;数求出该生成函数;

(3) (3) 想办法得出生成函数中想办法得出生成函数中 xxnn 或 或 xxnn / /nn!! 的系的系数即为所求数即为所求 aann. .

例例 8-88-8 在初始条件在初始条件 aa11 =1, =1, aa22 = 1 = 1 下下 , , 求解递求解递归关系归关系

Solution Solution

由数列由数列 aa11, , aa22, …, , …, aann, …, , …, 构造组合计数生成构造组合计数生成函数 函数

1

1

n

kknkn aaa

1221

13

133 aaaaaaa

kkk

,132231

14

144 aaaaaaaaa

kkk

rr xaxaxaaxG 2

210)(

xxGxG )()(2

,2

411)(

xxG

2

411)(

xxG

n

n

nn xC

n

1

122

1

122

1 n

nn Cn

a

例例 8-98-9 在初始条件在初始条件 DD00 =1 =1 下下 , , 求解递归关系求解递归关系((nn ≥1) ≥1)

Solution Solution 由数列由数列 DD00, , DD11, …, , …, DDnn, …, , …, 构造排构造排列计数生成函数列计数生成函数

nnn nDD )1(1

!!2

)(2

210 r

xa

xaxaaxE

r

r

xxE

x

1

e)(

!!

1)1(

!3

1

!2

111 n

nD n

n

3. 3. 特征方程法特征方程法 对于常系数线性递归关系对于常系数线性递归关系 , , 可以考虑用特征可以考虑用特征

方程法求解方程法求解 . . 分两种情况分别进行讨论分两种情况分别进行讨论 .. (1) (1) 常系数线性齐次递归关系常系数线性齐次递归关系 设设 kk 为正整数为正整数 , , 在初始条件在初始条件 aa00, , aa11, …, , …, aakk-1-1 下,下,

递归关系递归关系

称为称为 kk阶常系数线性齐次递归关系阶常系数线性齐次递归关系 (linear ho(linear homogeneous recurrence relation of order mogeneous recurrence relation of order kk with c with constant coefficient), onstant coefficient), 其中其中 cc11, , cc22, …, , …, cckk 为常数为常数且且 cckk 0. 0.

)(2211 knacacaca knknnn

kk 阶常系数线性齐次递归关系的阶常系数线性齐次递归关系的特征方程特征方程 (c(characteristic equation)haracteristic equation) 定义为定义为

022

11

kkkk ccc

nna

Theorem 8-7 Theorem 8-7 若递归关系若递归关系

的特征方程有的特征方程有 kk 个不同的根个不同的根

则其通解为则其通解为

给定初始条件给定初始条件 aa00, , aa11, …, , …, aakk-1-1 可唯一确定出其可唯一确定出其中的待定常数中的待定常数 CC11, , CC22, …, , …, CCkk..

)(2211 knacacaca knknnn

,,,, 21 k

.2211nkk

nnn CCCa

例例 8-108-10 在初始条件在初始条件 FF11 = 1, = 1, FF22 = 1 = 1 下下 , , 求解求解递归关系递归关系 FFnn = = FFnn – 1 – 1 + + FFnn – 2 – 2 ( (nn ≥3). ≥3).

Solution Solution 递归关系递归关系 FFnn = = FFnn – 1 – 1 + + FFnn – 2 – 2 的特征的特征方程为方程为

其根为 其根为

012

2

51,

2

5121

.2211nn

n CCa

Theorem 8-8 Theorem 8-8 若递归关系若递归关系

的特征方程有的特征方程有 tt 个不同的根个不同的根 其重数分别为其重数分别为 则其通解为则其通解为

给定初始条件给定初始条件 aa00, , aa11, …, , …, aakk-1-1 可唯一确定出其可唯一确定出其中的待定常数中的待定常数 CC11, , CC22, …, , …, CCkk..

)(2211 knacacaca knknnn ,,,, 21 t

),(,,, 2121 krrrrrr tt

)()()( 21 nananaa tn

.,,2,1,)( 121 tinCnCCna n

ir

iriiii

i

例例 8-118-11 在初始条件在初始条件 aa00 = 1, = 1, aa11 = 2, = 2, aa22 = 7 = 7 下下 , ,

求解递归关系求解递归关系

Solution Solution 递归关系的特征方程为递归关系的特征方程为

其根为其根为

于是于是

)3(375 321 naaaa nnnn

0375 23

3),(1 21 二重

nnn CnCCa 31)( 321

(2) (2) 某些常系数线性非齐次递归关系某些常系数线性非齐次递归关系 设设 kk 为正整数为正整数 , , 在初始条件在初始条件 aa00, , aa11, …, , …, aakk-1-1 下,下,

递归关系递归关系

称为称为 kk 阶常系数线性非齐次递归关系阶常系数线性非齐次递归关系 (linear (linear non-homogeneous recurrence relation of order non-homogeneous recurrence relation of order kk with constant coefficient), with constant coefficient), 其中其中 cc11, , cc22, …, , …, cckk

为常数且为常数且 cckk 0, 0, 非齐次项非齐次项 ff((nn) ) 是关于是关于 nn 的的函数且函数且 ff((nn) ) 0. 0.

))((2211 knnfacacaca knknnn

对于一般的非齐次项对于一般的非齐次项 ff((nn)) 没有统一的求解方没有统一的求解方法法 . . 一般情况下有下述定理一般情况下有下述定理 . .

Theorem 8-9 Theorem 8-9 若若 kk 阶常系数线性非齐次递归阶常系数线性非齐次递归关系有特解关系有特解 bbnn, , 且对应的且对应的 kk 阶常系数线性齐阶常系数线性齐次递归关系次递归关系

的通解为的通解为 BBnn, , 则通解为则通解为

给定初始条件给定初始条件 aa00, , aa11, …, , …, aakk-1-1 可唯一确定出其可唯一确定出其中的待定常数中的待定常数 CC11, , CC22, …, , …, CCkk..

knknnn acacaca 2211

nnn bBa

例例 8-128-12 在初始条件在初始条件 aa11 = 2 = 2 下下 , , 求解递归关求解递归关系系

Solution Solution 因为 因为

)2(31 naa nnn

)2(31 naa nnn

121 3

nnn aa

232 3

nnn aa

2

12 3aa

132

92 1 n

na

例例 8-138-13 求求

Solution Solution 根据题意根据题意 , , 有 有

2222 )1(21 nnan

2221 )1(21 nan

21 naa nn

221 )1( naa nn

122 21 naaa nnn

1)1(22 321 naaa nnn

233 321 nnnn aaaa

233 4321 nnnn aaaa

0464 4321 nnnnn aaaaa

4. 4. 其他方法其他方法 例例 8-148-14 在初始条件在初始条件 ff(1) =1(1) =1 下下 , , 求解递归关求解递归关

系系

其中其中 nn = 2 = 2kk, , kk 为正整数为正整数 . . Solution Solution 令令

于是原递归关系变为 于是原递归关系变为

122

2)(

nnfnf

)(2)( nffkg k

.1)0(,12)1(2)( 1 gkgkg k

作业作业 习题习题 8.3 (8.3 ( 单数或双数单数或双数 ))

1ln2

1)( nnkg

.2,1ln2

1)( knnnnf