母函数
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
母函数
母函数思想的起源可以追溯到18世纪Jacob B的《猜度术》一书。这本书是在作者去世8年后的1713年出版的,它是早期概率论中最重要的著作。《猜度术》一书共分四个部分,其中在第二部分中,作者讨论了组合论问题。主要是运用伯努利数通过完全归纳法证明了n 为正整数时的二项式定理。在第三部分中,作者把排列和组合的理论运用到概率论中,给出了24种有关在各种赌博情形中利益预测的例子。在第四部分中作者给出了著名的伯努利大数定律:若P是事件发生一次的概率,q是该事件不发生的概率,则在n次实验中该事件至
少出现m次的概率等于的展开式中从项到包括为止的各项之和。
母函数是组合数学的一个重要理论。Jacob B考虑掷n粒骰子时所得点数总和等于m,这种场合的数目等于
的展开式中这一项的系数,开了母函数研究的先河。在18世纪,Euler L对组合方法的发
展做出了重大贡献。他关于自然数的分解与合成的研究为母函数方法奠定了基础。
1812年,法国数学家Laplace P.S. 出版了《概率的分析理论》一书。这本书第一部分的小标题为“母函数的计算”,这一部分致力于母函数计算的数学方法及其一般数学理论,这是对Euler L所提出的母函数理论的发展。所以现代学术界认为母函数方法是由Euler L和Laplace P.S. 共同发现的。由此,组合数学中的母函数理论基本建立起来了。
在当代组合学理论中,母函数是解决计数问题的重要方法。一方面,母函数可以看成是代数对象,其形式上的处理使得人们可以通过代数手段计算一个问题的可能性的数目;另一个方面,母函数是无限可微分函数的Taylor级数。如果能够找到函数和它的Talor级数,那么Taylor级数的系数则给出了问题的解。
本章主要介绍母函数的两种形式:普通型母函数和指数型母函数。然后通过一些典型问题的分析,帮助读者加深对这一方法的理解。并且在分析中,有的问题采用多种方法求解。通过对比,读者可以明显地看到用母函数的方法解决问题具有较高的效率,并且程序具有非常规范的形式,易于实现。在本章的最后,我们就组合计数的常用方法加以归纳,并用母函数的方法来描述SAT问题和顶点覆盖问题,以帮助读者更好地理解母函数的方法。
1普通型母函数
大家对图1所示的三角形一定不会感到陌生,这个三角形就是通常所说的杨辉下角形,在西方则称之为帕斯卡三角形。世界上最早研究帕斯卡二角形的是中国的贾宪。贾宪生活在大约11世纪上半叶。他发展了中国古代数学的算法理论,在算法的抽象化、程序化,一般化方面做出了极大贡献。贾宪总结了《九章算术》以来的开方程序,并创造了“开方作法本源”。在《释锁》一书中,贾宪将0~6次的二项式展开式的系数,从上而下排成三角形,并提出了增乘方求廉法作为造表法,这是世界上最早的帕斯卡三角形。继贾宪后,在杨辉(1261)、朱世杰(1303)、吴敬(1450)的著作中,都有关于帕斯卡三角形的研究。在欧洲,15世纪的阿拉伯数学家Al-KashiG于1427年在《算术之钥》一书中给出了一个二项式展开式的系数表,这是欧洲对帕斯卡三角形的最早研究;而法国数学家Pascal B则于1654年在《算术三角形》中给出了如图2所示的三角形,但没有给出证明。
在杨辉三角形中的第n行的数字就是的展开式从低项到高项的各项系数。其实,它的展开式就是一个母函数。我们首先从分析开始来学习母函数。
首先分析(1+x)的物理意义。它和选择物品的情形联系了起来。
在构造和分析一个母函数时,“1”一般都看做,虽然,但是比1具有更为丰富的物理意义。这样,可对应于从n个物品中选取物品的情况。在这n个物品中,如果没有选取第i () 个物品,则相当于从第i个括号中取出了;如果选取了第i个物品,则相当于从第i个括号中取出了;由于对于每一件物品而言,“选”与“不选”这两个事件是相互排斥的,也就是说,不可能同时做这两件事情,也不可能这两件事情都不
做。所以每一个括号写为1 +x,这是加法原理的应用。
再来分析。(1+x)表示对于每一件物品,都有“选”与“不选”两种可能性。而
对于总共的n个物品而言,都要做出这样的选择,也就是说,对于每一件物品,都要决定“选择它”或者是“不选择它”,所以在这个时候就需要用到乘法原理了。也就是把n个(1+x)乘
起来,就得到了。这样在一个具体的选择中,如果没有选择第i个物品,则相当于从第i个括号中取出了;如果选择了第i个物品,则相当于从第i个括号中取出了。这样,在的展开式前面的系数就是从n个物品中选取i个物品的所有组合情况的总数。即的展开式
中前面的系数就是从n个物品选取i个物品的所有组合情况的总数。
下面我们给出普通型母函数的定义。
定义1给定数列,构造一函数
称F(x)为数列的母函数,其中序列只作为标志用,所以称之为标志函数。
标志函数的最有用和最重要的形式是。在这种情况下,对于数列
的母函数为
这是我们研究的重点。
普通型母函数用下面的定理描述。
定理1设从n元集合中取k元素的组合是,若限定元素出现的次数集合为,则该组合数序列的母函数为
下面举几个简单的例子帮助读者理解普通型母函数的概念。关于普通型母函数在程序设计竞赛中的具体应用读者可在本章后面几节中看到。
例1有重量为1, 3, 5(克)的砝码各两个,问:
(1)可以称出多少种不同重量的物品?
(2)若要称出重量为7(克)的物品,所使用的砝码有多少种本质不同的情况?
解根据定理1,构造母函数如下
其中,第一个括号中的1表示可以不用重量为1的砝码,x表示可以使用1个重量为1的砝码,表示可以使用2个重量为1的砝码。同理,第二个括号中的1表示可以不用重量为3的砝码,表示可以使用1个重量为3的砝码,表示可以使用2个重量为3的砝
码,以此类推。我们将上面的多项式展开后,比如多项式扩,它表示我们可以用2个重量为1的砝码和1个重量为5的砝码来称出重量为7的物体,代表了一种称
重量的方法。显然当把G(x)展开并将指数相同的项进行合并后有多少个系数非0的项,就代表了可以称量出多少种不同重量的物品,而相应的前而的系数则表明了称量出重量为i的物品可选砝码的方案数。
所以,项前面的系数就是本题第二问的解,而G(x)的展开式中系数不为0的项的个数就是我们所求的方案数。
例2投掷一次色子,出现点数的概率为1/6。问连续投掷10次,出现的点数之
和为30的概率是多少?
解用多项式
表示投掷一次可能出现的点数,则连续投掷10次,其和为30的方法总数为
中的系数,而
所以的系数为