组合数学(一):绪论、抽屉原理
绪论
1. 组合数学的研究内容
组合数学研究的中心问题是"按照一定的规则来安排有限多个对象",它主要涉及四类问题:
- 安排的存在性问题
- 安排的总数问题
- 构造确定的方案
- 组合优化
我们通过一个例子来了解这四个问题的顺序:
给出一个的棋盘,甲从左下角出发前往右上角,每次有且仅有一种前进路线(向上,向下,向左,向右)。现在要求:
- 存在性——甲能否不跨越棋盘对角线到达右上角?
- 总数——甲在不跨越对角线的情况下有多少种前进方案?
- 构造——请写出一种方案,使得甲只跨越一次对角线后到达右上角;
- 最优化——甲该如何选择路径.使得在不跨越对角线的情况下到达右上角的路程最短?
虽然这个问题可能有临时编造的意思,但是4个小问都很明白的展现出组合数学的研究内容。
2. 组合数学的特征
组合数学最大的特征是离散型。大多数组合数学的问题来源于智力游戏和生产生活,而人的生产生活一定是离散的。
虽不说世界到底是连续的还是离散的,我们日常处理问题,比如安排时间表,我们需要一个一个的把一定时间段内该完成的任务列举出来。也许在一个时间段内人“连续”的完成一件事,然而整个时间表的任务安排确实是离散的。建立在离散的基础上,我们可以讨论时间表安排的具体方案,如何优化方案使得用时最少等等。
离散的特性就是我们可以“一个一个”的把所有可能发生的事情都列举出来,用数学的语言就是一个集合A,它对等于自然数集,它的基数是。
3. 组合数学的应用
如果你是计算机专业的学生,那么一定要学习算法和数据结构的知识,而很多编程练习题的原型就是组合数学题。一道组合数学题,确定其输入和输出后,就可以改编成为一道程序设计题,让广大程序员体会组合数学的爱。
其他领域,比如数字通信,运筹管理,规划等等处理离散对象的问题都可以用组合数学的理论来研究。
例1: 长度为n的线段,从中切开后可以重叠放置在一起,然后再切。问至少要切几刀才可以切成的线段?
这里如果知道二分法的时间复杂度的话,其实是比较好处理的。
我们切一刀,整个长度变成,重叠在一起可以减少切刀的次数(也就是不重叠要切成等分的4块,需要4刀,但是重叠在一起只需要两刀)。设需要k刀可以让整个线段变成长度为1的线段组合,那么一定有
也就是。k肯定是整数,所以最少可以切刀,而前者恰好是二分法的时间复杂度。
4. 我能不能学好组合数学
组合数学来源于生活,而且(表面上)并不涉及过多高深数学知识,任何人都可以学习组合数学。普通人学习数学理论的价值就是应用它的价值。有些组合数学的题目确实很难,不用因为做不出题目而贬低自己。
抽屉原理
抽屉原理又叫“鸽笼原理”、“鸽舍原理”等等,这个定理主要说明放置物品数目的存在性。
1. 抽屉原理及其加强形式
定理1. 如果把个物品放入间抽屉,那么至少有一个抽屉中有两件物品或者更多物品。
推论1. 设都是正整数,如果把个物品放入到n个盒子中,那么或者第一个盒子至少有个物品,或者第二个盒子至少有个物品…,或者第n个盒子至少有个物品。
推论2. 如果将个物品放入到个盒子中,那么至少一个盒子中有r个物品。
推论3. 设是n个整数,而且它们的均值大于等于r
则一定有一个数不小于r。
推论4. 若将m个物品放入到n个盒子中,则至少有一个盒子中有不少于个物品,表示不小于的最小整数。
2. 运用抽屉原理的例子
抽屉原理内容很容易被我们理解,但是想要灵活运用它,需要运用分析的思维,分析出问题中的“抽屉”和“物品”。
例2: 在边长为1的正方形内任取5点,则至少有两点,它们之间的距离不超过。
证明:
把正方形按照两对边中点连线分成四个小正方形,每个小正方形的对角线长度为。这四个小正方形就是我们要找的抽屉。
将五个点放入四个抽屉,那么至少有一个小正方形中有两个点,它们的距离肯定是小于等于的。
2.1 在处理整数问题时,同余是构造抽屉的有利工具,使用同余,可以将无限的整数分划成有限个等价类,使得每个等价类就是我们需要的抽屉。
例3:设n为正整数。证明:在中任取n+1个数,一定存在两数之差为n的倍数。
证明:
两数a,b之差为n的倍数,等价于
取模n完全剩余系
它将分成n个盒子,我们现在就在这n个盒子中取n+1个数,那么一定有两个数a,b落入同一个盒子。再根据同余的定义,这两个数的差就整除了n。
就是具体的抽屉。
2.2 一种问题涉及到“双下标序列”,处理这种问题的办法是减少“下标”。比如使用累加和。
例4:给定m个整数证明:必存在整数k,l使得
证明:
构造部分和序列
- 如果存在整数h使得,那么取即可。
- 等价于也就是
想到这一点,将每个用m除它的余数代替,这样每个都小于等于,一共有m个余数,由抽屉原理就知道一定存在两个余数相等。不妨记为,从而有
例5: 一个学生有37天的时间准备数据结构考试,根据以往的经验,他知道至多需要60个小时的复习时间,所以他决定每天至少复习1小时。证明:无论他的复习计划如何,在此期间都存在一些连续的一些天,他正好复习13小时。
证明:
设为这个学生在第k天的复习时间,那么。根据已知条件,不难得出
记部分和
那么可以得到
构造新序列
那么每一项都是小于等于73的,一共有74项,由抽屉原理,一定存在两个数相等。而且这两个数一个属于前37项,一个属于后37项。记为。
那么有
这表明,存在连续的天,他正好复习了13小时。
2.3 再来看几个不是那么明显的运用抽屉原理的问题。
例6: 设一个n阶方阵A的所有元素中,有个0。求证:这个方阵A的行列式。
证明:
把方阵A的每一列当作一个抽屉,那么就有n个抽屉。将个0放入n个抽屉,那么因为
也就是至少一列有n个0,根据行列式的性质,有。
例7:设有集合,其中每个元素都是一个两位数。那么存在集合B和C,使得B中所有元素的数值和与C中的所有元素的数值和相等。
证明:
取A的所有子集,那么一共有个。而每个子集的元素和一定小于等于。所以在个子集中一定存在两个子集,他们的元素和相等。