组合数学

本文详细介绍了组合数学的基本概念和重要定理,包括鸽巢原理、排列组合、容斥原理、错位排列、活动数、生成函数、递推关系式、特殊计数序列等。文章深入探讨了这些概念在解决实际问题中的应用,如二部图的匹配问题、稳定婚姻理论和区组设计,以及Polya计数在着色方案计算中的应用。
摘要由CSDN通过智能技术生成

下列所有的符号中,如果没有特殊说明,则n表示集合中所有元素的个数、r表示所取的元素个数,k表示种类数。

第一章:

绪论,介绍了为什么要研究组合数学,以及组合数学的三个研究内容。


第二章:

鸽巢原理:把N+1个鸽子放到N个巢里面,则至少有一个巢里面有两只鸽子。

推论:如果把N个物体放到K个盒子当中,则至少有一个盒子里面有N/k取上界个物体。

例子:Ramsey数


第三章:

1、集合的排列:P(n,r)、集合的循环排列:P(n,r)/r、集合的组合:C(n,r)

2、多重集合的排列:1、每个元素有无限多个,取r个:K^r——有K种元素,也就是说每个位置有K种选择,取r个。

                             2、每个元素是有限个,全排列数:N!/N1!N2!...Nk!。

                             3、每个元素是有限个,取r个的排列数:用后面章节的生成函数(指数生成函数)求解

3、多重集合的组合:1、每个元素有无限多个:C(r+k-1,r)

                                  2、每个元素是有限个:用后面章节的容斥原理来求,用容斥原理将有限个转换成无限多个(最多取多少个转换成至少取多少个)。


第四章:

1、活动数:给数标一个方向,如果这个数比他所指方向的那个数大,那么这个数就叫做活动数。

2、生成排列(全排列):活动数法,1、找到一个最大的活动数,2、将这个数与他所指方向的那个数互换位置,3、将所有比他大的数的方向转换。重复这三步,直到所有的数都不是活动数。

3、逆序数:给定一个数的序列,如果Xi>Xj且i<j。则称这两个数为一个逆序对,用ai表示数字i的逆序对的个数,也叫逆序数。

              算法1:通过相对位置和从大的数到小的数的逆序数来确定具体序列:i前面有ai个逆序对。

              算法2:通过从小的数到大的数逆序数来直接确定具体序列:i直接放在第ai+1个空位上。

4、生成组合:通过2进制的+1来生成所有的组合。

5、生成r-组合:按字典序来排序,a_1a_2...a_r的直接后继是a_1...a_{k-1}(a_k+1)(a_k+2)...(a_k+r-k+1).直接前驱是a_1...a_{k-1}(a_k-1)(n-r+k+1)...(n)。其中后继的a_k+1不与原序列任何一个数重复,前驱的a_k-1也是如此。

6、生成r-排列:先生成r-组合,然后对每个组合进行全排列。


第六章:

1、容斥原理:S中不具有P1,P2...Pn任何一个属性的元素有如下多个:

具备任何一种属性中的其中一种的元素有如下多个:

2、错位排列:给定n个数,从1到n,将这n个数排列起来,若任何一个数都不在他的自然位置上,则称这个排列是一个错位排列。例如312,因为1不在第一个位置,2不在第二个位置,3不在第三个位置,所以这是一个错位排列。

我们定义D_n为n个数的错位排列数,则根据容斥原理可得D_n为:

3、带禁止位置的排列:给定N个位置和N个集合,每个位置对应一个集合,带禁止位置的排列就是指,该位置对应的集合中的元素不能在该位置上。当对应的集合中的元素就只有该位置时,带禁止位置的排列就等价于错位排列。

求带禁止位置的排列的时候,当禁止位置的数量不多时,可采用容斥原理来解,但是当禁止位置数量很多时,用容斥原理求解起来很麻烦,因为禁止位置多的时候,求解反问题和原问题复杂度是相同的,因此需要换一种思路来求解这个问题。

4、棋盘多项式:带禁止位置的排列可看成在一个NXN的棋盘上放置N个带禁止位置的非攻击性車(这些車相互之间是有区别的),则在该棋盘上放置N个車的排列数为:

n!-r_1(n-1)!+r_2(n-2)!-...+(-1)^kr_k(n-k)!+...+(-1)^nr_n

其中r_k是k个非攻击性車放在相对应的禁止位置上的方法数,现在问题就转换成了如何求解r_k

下面我们用棋盘多项式来求解r_k,r_k(C)定义在为棋盘C上放K个非攻击性車的方法数。如:

进一步,我们定义:

R(C)=\sum_{k=0}^{\infty }r_k(C)x^k,

其中x^k是做位置保持的,对于R(C)来说,有以下两条性质:

(1) R(C)=xR(C_i)+R(C_e).也就是说,我们可以选定一个方格,然后原棋盘多项式就等于x乘以去掉该方格所在的行和列的棋盘多项式,再加上只去掉这个方格的棋盘多项式,来对一个很大的棋盘进行分解。例如:

(2)R(C)=R(C_1)R(C_2),其中C_1C_2是相互独立的两部分。也就是说,如果一个棋盘可以分解成两个相互独立的部分,则原棋盘多项式就等于这两个独立棋盘多项式的乘积。

由以上两条性质,我们可知求解棋盘多项式时,我们应该尽可能挑选那些让棋盘分成两个独立部分的方格,来一步步使原问题变成一个个可直接求解的子问题。例如:


第七章:递推关系式和生成函数

1、线性齐次递推关系式

存在a_1,a_2...a_ka_k\neq 0以及b_n,使得:h_n=a_1h_{n-1}+a_2h_{n-2}+...+a_kh_{n-k}+b_n,(n\geqslant k).则称这个数列满足K阶线性递推关系式。

进一步,如果a_k\neq 0a_1,a_2...a_k都为常数,且b_n=0,我们称该递推关系式为线性齐次递推关系式。针对线性齐次递推关系式,我们可用以下方法求解:

h_n为:h_n=a_1h_{n-1}+a_2h_{n-2}+...+a_kh_{n-k}+b_n,(n\geqslant k).

x^k替换h_n,x^{k-1}替换h_{n-1},依次类推,即得到如下关系式:

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值