递归与母函数

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

解的分析
其中4次方项有
x x +x x +x x +x x x +x x +x x
3 1 3 3 2 3 2 2 1 3 2 1 2 3 2 2 2 3
3 1 3
+x x x +x x x +x x +x x
2 1 2 3 2 1 2 3 3 1 3
2 2 1 2
表达了从8个元素(a1a3各3个,a22个)中取4个的组合. 例如x1x33为一个a1,3个a3的组合,x12x32 两个a1, 两个a3的组合,以此类推.
n
递推关系
利用递推关系进行计数这个方法在算法分析中经常用到,举 例说明如下: 例一.Hanoi问题:这是个组合数学中的著名问题.N个圆盘 依其半径大小,从下而上套在A柱上,如下图示.每次只允 许取一个移到柱B或C上,而且不允许大盘放在小盘上方. 若要求把柱A上的n个盘移到C柱上请设计一种方法来,并估 计要移动几个盘次.现在只有A,B,C三根柱子可用.
2 2 3 3 2 2 =1+ (1+ x1 + x2 + x3 ) + (x1 + x1x2 + x2 + x1x3 + x2 x3 + x3 ) + (x1 + x1 x2 + x1x2 2 2 2 2 3 3 3 2 2 2 + x1 x3 + x1x2 x3 + x2 x3 + x1x3 + x2 x3 + x3 ) + (x1x3 + x2 x3 + x1 x3 + x1x2 x3 + 2 2 3 2 2 3 2 2 x2 x3 + x1 x3 + x1 x2 x3 + x1x2 x3 + x1 x3 + x1 x2 ) +
A
B
C
递推关系
假定n-1个盘子的转移算法已经确定.
对于一般n个圆盘的问题, 先把上面的n-1个圆盘经过C转移到B. 第二步把A下面一个圆盘移到C上 A C 最后再把B上的n-1个圆盘经过A转移到C上
A
B
C
递推关系
算法分析: 算法分析:令h(n)表示n个圆盘所需要的转移盘次. 根据算法先把前面n-1个盘子转移到B上;然后把 第n个盘子转到C上;最后再一次将B上的n-1个 盘子转移到C上. n=2时,算法是对的,因此,n=3是算法是对 的.以此类推.于是有
G(x) = (1+ x + x2 + x3 )(1+ x + x2 )(1+ x + x2 + x3 ) = (1+ 2x + 3x2 + 3x3 + 2x4 + x5 ) (1+ x + x2 + x3 ) =1+ 3x + 6x2 + 9x3 +10x4 + 9x5 + 6x6 + 3x7 + x8
解法1: 解法 :
令 an = n 位十进制数中出现5的数的个数, bn = n位十进制数中出现奇数个5的数 的个数. 故有:
an = 9an1 + bn1 {bn = 9bn1 + an1 a1 = 8, b1 =1
递推关系
解法二: 解法二: n-1位的十进制数的全体共 9×10n2 从中去掉含有偶数个5 的数,余下的便是n-1位中含有奇数个5的数.故有:
n = n1 + n2 ++ nk
从中取r个排列,求不同的排列数. 从中取 个排列,求不同的排列数 个排列
如果 n1 = n2 == nk =1 ,则是一般的排列问题. 则是一般的排列问题.
现在由于出现重复,故不同的排列计数便比较复杂. 现在由于出现重复,故不同的排列计数便比较复杂.先考 个元素的全排列, 个元素没有完全一样的元素, 虑 n个元素的全排列,若n 个元素没有完全一样的元素,则 个元素的全排列 应有n! 种排列.若考虑n 个元素a 应有 种排列.若考虑 i 个元素 i的全排列数为 ni!,则真正 , n! 不同的排列数为
an = 9an1 + bn1 bn1 = 9×10
n2
an1
∴ an = 8an1 + 9×10 ,
n2
a1 = 8
递推关系
例三: 例三:从n个元素 a1, a2 ,, an 中取r个进行允许重复的组 合.假定允许重复的组合数用 C(n, r)表示,其结果可能 有以下两种情况.
a1, a2 ,, an 中取r-1个做允许重复的组合,然后再加上一 个a1 得从n个元素中取r个允许重复的组合.
C(n,1) = n, C(n 1,1) = n 1
C(n,0) =1
整数的拆分
所谓整数拆分即把整数分解成若干整数的 相当于把n个无区别的球放到n 和,相当于把n个无区别的球放到n个无标 志的盒子,盒子允许空着, 志的盒子,盒子允许空着,也允许放多于 一个球.整数拆分成若干整数的和, 一个球.整数拆分成若干整数的和,办法 不一,不同拆分法的总数叫做拆分数. 不一,不同拆分法的总数叫做拆分数.
组合数学 ---母函数与递推 母函数与递推
长沙市雅礼中学 朱全民
母函数与递推关系
递推关系是计数的一个强有力的工具,特别是在做算法 分析时是必需的.递推关系的求解主要是利用母函数. 当然母函数尚有其他用处,但这主要是介绍解递推关系 上的应用.例如
(1 + a1 x)(1 + a2 x)...(1 + an x) = 1 + (a1 + a2 + ... + an ) x + (a1a2 + a1a3 + ... + an 1an ) x 2 + ... + a1a2 ...an 1an x n
2 3 4 5 6
+ x7 + x8 + x9 + x10
问题举例
从右端的母函数知可称出从1克到10克,系数便是方案 数.例如右端有 项,即称出5克的方案有2
5 = 2 + 3 =1+ 4
同样, 6 =1+ 2 + 3 = 4 + 2
10 =1+ 2 + 3 + 4
故称出6克的方案有2,称出10克的方案有1
1)不出现某特定元素设为a1 ,其组合数为C(n 1, r) 中取r ,相当于排除 a1 后从 a2 ,, an 中取r个做允许重 复的组合. 复的组合. ) 相当于从 2)至少出现一个a ,取组合数为 C(n, r 1 1
递推关系
依据加法原理,有
C(n, r) = C(n, r 1) + C(n 1, r)
问题举例
若有1 克的砝码各一枚, 例1:若有1克,2克,3克,4克的砝码各一枚, 问能称出那几种重量?有几种可能方案? 问能称出那几种重量?有几种可能方案?
(1+ x)(1+ x )(1+ x )(1+ x )
2 3 4
= (1+ x + x2 + x3 )(1+ x3 + x4 + x7 ) =1+ x + x + x + x + x + x
问题举例
从母函数可以得知,用这些砝码可以称出从1克到63克 的重量,而且办法都是唯一的.
这问题可以推广到证明任一十进制数n, 这问题可以推广到证明任一十进制数 , 可表示为
n = ∑ak 2k , 0 ≤ ak ≤1, k ≥ 0
k≥0
而且是唯一的. 而且是唯一的.
指数型母函数
设有n个元素, 重复了n 元素a 设有 个元素,其中元素 a1 重复了 1次,元素 2 重复 个元素 了n2次,…,ak 重复了 k 次, , 重复了n
定义: 定义:对于序列 a0 , a1 , a2 , , 构造一函 G ( x) = a0 + a1 x + a2 x 2 + , 数: 称函数G(x)是序列a0 , a1 , a2 ,, 的母函数
(1 + x) n 是序列 (n,0), C (n,1), , C (n, n) C 例如
的母函数. 若已知序列 a 0 , a 1 , a 2 , , 则对应的母函数G(x)便可根 据定义给出.反之,如若以求得序列的母函数G(x) ,则该序列也随之确定. 序列 a0 , a1 , a2 , , 可记为 {a }
解的分析
从x4的系数可知,这8个元素中取4个组合,其组合数为 10.这10个组合可从下面展开式中得到
2 3 2 2 3 (1+ x1 + x1 + x1 )(1+ x2 + x2 )(1+ x3 + x3 + x3 ) 2 2 3 2 2 3 2 2 3 2 = [1+ (x1 + x2 ) + (x1 + x1x2 + x2 ) + (x1 + x1 x2 + x1x2 ) + (x1 x2 + x1 x2 ) + x1 x2 ] 2 3 (1+ x3 + x3 + x3 )
母函数
x2项的系数 1a2+a1a3+…+ an-1an 中所有的项包括 个 项的系数a 中所有的项包括n个 元素a 两个组合的全体 元素 1 , a2 , …,an中取两个组合的全体;同理项系 中取两个组合的全体; 数包含了从n个元素 个元素a 中取3个元素组合 数包含了从 个元素 1 , a2 , …,an 中取 个元素组合 的全体.以此类推. 的全体.以此类推. 若令a 项系数a 若令 1=a2= …=an=1,在 x2项系数 1a2+a1a3+…+ an1 中每一个组合有1个贡献,其他各项以此类推. 1an中每一个组合有1个贡献,其他各项以此类推. 故有: 故有:
m
= [C(m+ n,0) + C(m+ n,1)x ++ C(m+ n, m+ n)xm+n
比较等号两端项对应系数, 比较等号两端项对应系数,可得一等式 C(m + n, r) = C(m,0)C(n, r) +
C(m,1)C(n, r 1) ++ C(m, r)C(n,0)
相关公式
令r=n,则, ,
问题举例
若有1克砝码3 克砝码4 克砝码2枚的砝码各一枚, 例3:若有1克砝码3枚,2克砝码4枚,4克砝码2枚的砝码各一枚,问能 称出那几种重量?各有几种方案? 称出那几种重量?各有几种方案?
G(x) = (1+ x + x2 + x3 )(1+ x2 + x4 + x6 + x8 ) (1+ x4 + x8 ) = (1+ x + 2x2 + 2x3 + 2x4 + 2x5 + 2x6 + 2x7 + 2x8 + 2x9 + x10 + x11)(1+ x4 + x8 ) =1+ x + 2x2 + 2x3 + 3x4 + 3x5 + 4x6 + 4x7 + 5x8 + 5x9 + 5x10 + 5x11 + 4x12 + 4x13 + 3x14 + 3x15 + 2x16 + 2x17 + x18 + x19
C(m+ n, n) = C(m,0)C(n,0) + C(m,1)C(n,1) ++ C(m, m)C(n, n) = n*2n1
对原方程等号的两端对x求导可得: 对原方程等号的两端对 求导可得: 求导可得
C(n,1) + 2C(n,2) + 3C(n,3) ++ nC(n, n) = n2
n1
母函数
n1!n2!nk !
解的分析
先讨论一个具体问题:若有8个元素,其中设a 先讨论一个具体问题:若有8个元素,其中设a1重复 重复2 重复3 从中取r个组合, 3次,a2重复2次,a3重复3次.从中取r个组合,其 组合数为c 则序列c 组合数为cr ,则序列c1 ,c2 , c3 , c4 , c5 , c6 , c7 , 的母函数为: c8的母函数为:
(1 + x) n = 1 + C (n,1) x + C (n,2) x 2 + + C (n, n) x n
母函数
∵ (1+ x) (1+ x) = (1+ x)
m n m+n
∴ [C(n,0) + C(n,1)x百度文库++ C(n, n)xn ] [C(m,0) + C(m,1)x ++ C(m, m)x ]
问题举例
例2:求用1分,2分,3分的邮票贴出不同数值的方案数. :
因邮票允许重复,故母函数为 2 2 4 G(x) = (1+ x + x + 1+ x + x + )( )
(1+ x + x + )
3 6
以其中为例,其系数为4,即4拆分成1, 2,3之和的拆分数为4,即
4 =1+1+1+1 =1+1+ 2 =1+ 3 = 2 + 2
h(n) = 2h(n 1) + 1, h(1) = 1
位十进制数中出现偶数个5的数的个数 例2. 求n位十进制数中出现偶数个 的数的个数. 位十进制数中出现偶数个 的数的个数.
先从分析n位十进制数出现偶数个5的数的 结构入手 p1 p2 pn1 是n-1位十进制数,若含 有偶数个5,则 pn1 取5以外的0,1,2,3,4, p1 p2 pn1 6,7,8,9九个数中的一个,若 只有奇数个5,则取 pn = 5,使 p1 p2 pn1 pn 成为出现偶数个5的十进制数.
相关文档
最新文档