当前位置:文档之家› 组合数学

组合数学

组合数学论文现代数学可以分为两大类:一类是研究连续对象的,如分析、方程等,另一类就是研究离散对象的组合数学。

组合数学不仅在基础数学研究中具有极其重要的地位,在其它的学科中也有重要的应用,如计算机科学、编码和密码学、物理、化学、生物等学科中均有重要应用。

微积分和近代数学的发展为近代的工业革命奠定了基础。

而组合数学的发展则是奠定了本世纪的计算机革命的基础。

计算机之所以可以被称为电脑,就是因为计算机被人编写了程序,而程序就是算法,在绝大多数情况下,计算机的算法是针对离散的对象,而不是在作数值计算。

正是因为有了组合算法才使人感到,计算机好像是有思维的。

组合数学不仅在软件技术中有重要的应用价值,在企业管理,交通规划,战争指挥,金融分析等领域都有重要的应用。

在美国有一家用组合数学命名的公司,他们用组合数学的方法来提高企业管理的效益,这家公司办得非常成功。

此外,试验设计也是具有很大应用价值的学科,它的数学原理就是组合设计。

用组合设计的方法解决工业界中的试验设计问题,在美国已有专门的公司开发这方面的软件。

广义的组合数学就是离散数学,离散数学是狭义的组合数学和图论、代数结构、数理逻辑等的总称。

但这只是不同学者在叫法上的区别。

总之,组合数学是一门研究离散对象的科学。

随着计算机科学的日益发展,组合数学的重要性也日渐凸显,因为计算机科学的核心内容是使用算法处理离散数据。

狭义的组合数学主要研究满足一定条件的组态(也称组合模型)的存在、计数以及构造等方面的问题。

组合数学的主要内容有组合计数、组合设计、组合矩阵、组合优化等。

组合数学中有几个著名的问题:地图着色问题:对世界地图着色,每一个国家使用一种颜色。

如果要求相邻国家的颜色相异,是否总共只需四种颜色?这是图论的问题。

船夫过河问题:船夫要把一匹狼、一只羊和一棵白菜运过河。

只要船夫不在场,羊就会吃白菜、狼就会吃羊。

船夫的船每次只能运送一种东西。

怎样把所有东西都运过河?这是线性规划的问题。

中国邮差问题:由中国组合数学家管梅谷教授提出。

邮递员要穿过城市的每一条路至少一次,怎样行走走过的路程最短?这不是一个NP完全问题,存在多项式复杂度算法:先求出度为奇数的点,用匹配算法算出这些点间的连接方式,然后再用欧拉路径算法求解。

这也是图论的问题。

货郎问题:一个货郎要去若干城镇卖货,然后会到出发地,给定各个城镇之间的旅行时间,应怎么样计划他的路线,使他可以去每个城镇而且所用的时间最短。

这个问题至今都没有有效的算法。

这几个问题将组合数学研究的问题具体表现出来,同时也可以看出他在我们生活中有着很重要的地位。

组合数学中主要可以分成以下几个部分:排列组合与容斥原理、二项式定理、递推关系与生成函数、polya定理。

下面我将以这四个部分分别介绍组合数学的各方面问题。

1、排列组合与容斥原理:排列组合里面的4个重要的基本原理:加法原理、乘法原理、减法原理、除法原理前面两个最为基本,后面两个是根据前两个派生出来的。

乘法原理有的时候的应用很巧妙,可以作为一种打开思路的办法。

基本的排列组合之后,接下来引出了多重集。

多重集的排列组合是一个很经典的问题,总结如下:多重集的排列:全排列的话只需应用除法原理就可以了。

n个元素的多重集的r排列需要利用指数生成函数来做。

多重集的组合:n个元素的多重集的r组合,如果r小于等于任何一个元素可选的个数,那么就归结为经典的不定方程的解数问题,可以利用“隔板法”来做。

结果就是一个组合数。

如果r大于某些元素的可选个数,那么一种方法是利用容斥原理,一种方法还是要依靠生成函数(编程序的时候可以用动归做)。

如果是一个环形的排列组合,那么问题就困难许多,要利用置换群和polya定理。

单纯的依靠四项基本原理来计数,有的时候会显得力不从心,这个时候就需要容斥原理的帮助。

容斥原理特别适合解决若干限制条件的交、并问题,也是打开思路的一种方法。

利用容斥原理解决的经典问题有:错排问题,带禁止位置的排列。

禁位排列总觉得用容斥原理解决的不够优美,不知道有没有可以编程的数学方法。

跟排列组合相关的还有就是生成排列和组合。

生成排列利用那个什么字典序法好像足够了,编程好实现。

生成组合方法类似。

计算不具有某几个属性物体个数:公式:=|S|- ∑R-1 + ∑R-2 - ∑R-3 ... +(-1)^mR-m---------一种情况的化简情况:各R-i组合个数相同(k个i组合计数相同)=a0 - C(m,1)a1 + C(m,2)a2 - C(m,3)a3 + ... + (-1)^k C(m,k)ak + ... + (-1)^m am计算至少具有某几个属性之一的物体个数公式:=∑R-1 - ∑R-2 + ∑R-3 ... +(-1)^(m+1) R-m情况:n个不同元素,k种,非无限,没种限制为r1...rk。

在n种元素中取r组合。

解决方法:按无限多重组合运算共C(n+k-1)种按1组合到k组合计算每种组合的补集的无限多重组合计数(1组合|A1|,|A2|,2组合|A1 & A2|...)其中|Ai|=C(r-ri-1+k-1,r-ri+i) (备注:r-ri-1为先取ai达到ri+1个后,进行无限多重组合计数的总位数)公式:按容斥原理=[C(n+k-1) - 1组合 + 2组合 + 。

+ (-1)^k k组合计数]错位排列问题:记Ai表示数字i恰好排在第i个位置的排列集合,|Ai|=card(Ai)表示集合中元素个数;€Ai表示Ai的余集(补集)现在求的是∩€Ai,即任意i都不会出现在第i个位置的排列集合;根据容斥原理得|∩€Ai|=|€∪Ai|=n!-|∪Ai|而|∪Ai|=∑C(n,k)(-1)^(k+1)(n-k)! (这里k从1到n)从而|∩€Ai|=n!-|∪Ai|=n!+∑(-1)^k*C(n,k)(n-k)!发现k=0恰好(-1)^k*C(n,k)(n-k)!=n!所以结果可以改写为∑(-1)^k*C(n,k)(n-k)! (这里k从0到n)C(n,k)(n-k)! 的意义表示其中指定某k个数字排在它对应的位置,其他的n-k个数字可以任意排列的个数为(n-k)!个,而指定k个可以有C(n,k)种指定方式。

2、组合数学中的二项式定理有很多公式,用的时候可以现查。

终于知道了三角形数原来跟排列组合有关,而且是一个很简洁的公式。

很多公式的推导用的思想很妙。

有一个很好的思想就是把(1 + x) ^ n利用二项式定理展开,然后求导、求积分,居然可以导出很多的公式。

还有一个很重要的定理就是pascal定理,pascal递推式很有用(展开后有两种形式,一种是上下限均不定,一种是下限不定),可以解决很多组合数的求和问题。

另外一个重要的定理就是牛顿二项式定理,在生成函数中应用广泛,可就是推导起来有点繁。

抽屉原理:桌上有十个苹果,要把这十个苹果放到九个抽屉里,无论怎样放,我们会发现至少会有一个抽屉里面放两个苹果。

这一现象就是我们所说的“抽屉原理”。

抽屉原理的一般含义为:“如果每个抽屉代表一个集合,每一个苹果就可以代表一个元素,假如有n+1或多于n+1个元素放到n个集合中去,其中必定至少有一个集合里有两个元素。

”抽屉原理有时也被称为鸽巢原理(“如果有五个鸽子笼,养鸽人养了6只鸽子,那么当鸽子飞回笼中后,至少有一个笼子中装有2只鸽子”)。

它是组合数学中一个重要的原理。

原理1:把多于n个的物体放到n个抽屉里,则至少有一个抽屉里的东西不少于两件;[证明](反证法):如果每个抽屉至多只能放进一个物体,那么物体的总数至多是n,而不是题设的n+k(k≥1),这不可能. 原理2 把多于mn(m乘以n)个的物体放到n个抽屉里,则至少有一个抽屉里有不少于m+1的物体。

[证明](反证法):若每个抽屉至多放进m 个物体,那么n个抽屉至多放进mn个物体,与题设不符,故不可能原理3 把无穷多件物体放入n个抽屉,则至少有一个抽屉里有无穷个物体。

. 原理1 2 3都是第一抽屉原理的表述原理2:把(mn-1)个物体放入n个抽屉中,其中必有一个抽屉中至多有(mn—1)个物体。

[证明](反证法):若每个抽屉都有不少于m个物体,则总共至少有mn个物体,与题设矛盾,故不可能3、递推关系与生成函数:许多组合数学计数问题依赖于一个整数参数n,这个整数参数n常常表示问题中某个基本集(笛卡尔集)或多重集的大小、组合的大小、排列中的位置数等等。

因此一个计数问题常常不是一个孤立的问题,而是一系列单个问题的综合。

本章中,我们将讨论涉及一个整数参数的某些计数问题的代数求解方法。

这些方法类似于上一章所介绍的棋盘多项式方法一样,通过引入一个函数(称为生成函数,它实质上是一个幂级数,其各项系数对应于相应计数问题的解)结合递推关系来求解相应的计数问题。

求解线性递推关系的特征方程的方法还是有一定价值的,但是编程不适用。

n解线性齐次递推方程有矩阵解法。

稍微复杂点的递推关系(非线性),特征方程就不够用了,必须祭出生成函数这个有力的武器。

感觉生成函数实在是太优美、太强大了。

生成函数的关键就是要把多项式拆分成(1-rx)^n这种形式,这样就可以利用牛顿二项式定理展开了。

在特殊计数序列里面提到了盒装球问题。

将p个不同的球放入k个相同的盒子(每个盒子非空)的方法数是第二类Stirling数S(p, k);将p个相同的球放入k个相同的盒子(每个盒子非空)的方法数是分拆数,可以归结为整数划分问题,用动态规划求解;将p个不同的盒子放入不同的k个盒子并且每个非空的方法数为k! * S(p, k)。

有几个很经典的递推关系:斐波那契数列、Catalan数(几种经典的形式:三角剖分数、二叉生成树个数、+1-1序列、加括号序列等等)、Stirling数(两种,第二种比较常用)、汉诺塔、n个圆切割平面数、n条直线k个交点切割平面数等等。

此外,格路径中提到的平移、反射和一一对应这三种分析问题的方法也很值得借鉴。

例1.确定平面一般位置上的n 个互相交叠的圆所形成的区域数。

(互相交叠是指每两个圆相交在不同的两个点上;一般位置是指没有同心圆)例2.年初把性别相反的一对新生兔子放进围栏,从第二个月开始每月生出一对性别相反的兔子,每对新兔也从第二个月开始每月生出一对性别相反的兔子,问一年后围栏内共有多少对兔子。

定义1:设f 0=0, f 1=1, 那么满足递推关系f n = f n-1+ f n-2, 的序列叫斐波那契(Fibonacci )序列。

结论:Fibonacci 序列的部分和为s n = f 0+ f 1+…+ f n = f n+2-1.沿Pascal 三角形左边向上对角线上的二项式系数和是Fibonacci 数,即f n =⎪⎪⎭⎫ ⎝⎛-01n +⎪⎪⎭⎫⎝⎛-12n +…+⎪⎪⎭⎫⎝⎛--1k k n , 其中:k=⎣21+n ⎦. 定义1:令h 0, h 1, h 2,…, h n ,…是一个数列,若存在量a 1, a 2, …,a k 和b n (a k ≠0,每个量是常数或依赖于n 的数)使得:h n = a 1h n-1+ a 2h n-2+…+ a k h n-k +b n (n ≥k)则称序列满足k 阶线性递推关系. 若b n =0,称齐次的;若a 1, a 2, …,a k 取常数,称常系数的. 令q 为一个非零数,则h n =q n 是常系数线性齐次递推关系h n = a 1h n-1+ a 2h n-2+…+ a k h n-k (a k ≠0,n ≥k) (1) 的解,当且仅当q 是多项式方程 x k -a 1x k-1- a 2x k-2-…- a k =0(2)的一个根.若多项式方程有k 个不同的根q 1, q 2,…, q k ,则 h n =c 1q 1n + c 2q 2n +…+ c k q k n (3)是下述意义下(1)的一般解: 无论给定h 0, h 1, …,h k-1什么初始值,都存在c 1, c 2,…, c k 使得(3)式是满足(1)式和初始条件的唯一的序列. 令q 1, q 2,…, q t 为常系数线性齐次递推关系:h n = a 1h n-1+ a 2h n-2+…+ a k h n-k (n ≥k)的特征方程的互异的根,此时,如果q i 是s i 的重根,则该递推关系对q i 的部分一般解为:H n (i) = c 1q i n + c 2nq i n +…+ c s i n s i -1q i n递推关系的一般解为:h n = H n (1) + H n (2) +…+ H n (t)递归和生成函数令h 0, h 1, h 2,…, h n ,…为满足k 阶常系数线性齐次递推关系: h n = c 1h n-1+ c 2h n-2+…+ c k h n-k (c k ≠0,n ≥k) (1)的数列,则它的生成函数g(x)形如:g(x)=)()(x q x p (2)其中:q(x)是具有非零常数次的k 次多项式,p(x)是小于k 次的多项式.反之, 给定这样的多项式p(x)和q(x), 则存在序列h 0, h 1, h 2,…, h n ,…满足(1)式的k 阶常系数线性齐次递推关系, 其生成函数由(2)式给出.4、Polya 定理P ólya原理是组合数学中,用来计算全部互异的组合状态的个数的一个十分高效、简便的工具。

相关主题