详解鸽巢原理【组合数学】

鸽巢原理的简单形式:
如果要把n+1个物体,放进n个盒子,那么至少有一个盒子包含两个或更多的物体。
证明:用反证法。如果这n个盒子中的每一个都至多含有一个物体,那么物体的最多数量是n。这与我们有n+1个物体的实际情况相矛盾,故不成立。

当然,对于鸽巢原理的简单形式,几乎所有人都可以很轻松的理解。然而,就是这样一个简单的定理,却可以发展出许多我们难以想象的推论。

这里我们分为,鸽巢原理的简单应用,和鸽巢原理的加强版应用进行讨论。

鸽巢原理的简单应用:
应用1.在13个人当中,存在两个人,他们的生日在同一个月份。

鸽巢原理略微复杂的应用:
应用1.一位国际象棋大师有11周的时间备战一场锦标赛,他决定每天至少下一盘棋,但为了不使自己过于疲劳他好决定每周不能下超过12盘棋。证明存在连续若干天,期间这位大师恰好下了21盘棋。

分析:通过表面来看,这个题无非是在11周的77天里找到一个连续的区间,存在这个区间的下棋数正好为21,就可以得到证明。

解:
设a1是第一天下棋的盘数,a2是第一天第二天下棋的总盘数,a3是第一天第二天第三天下棋的总盘数,以此类推。因为每天都要至少下一盘棋,所以a1、a2、a3…是一个严格单调递增的序列。 此外a1>=1,而且任意一周下棋的数量最多是12盘,所以这11个周下棋的总盘数不会超过11*12=132盘。

我们可以写出这样的不等式:

1<=a1

那么这个序列每一项加上21 也是严格递增的序列:

21<=a1+21

不难看出 上面两个序列的取值范围 在1~153之间。
时期的事情的就要发生了,上面的两个序列一共出现了154个数字。
他们的取值都在1~153之间。 那么这两个序列必定存在两个数相等。
证毕!

应用2:从整数1、2、3、…200中选出101个整数。证明;在所选的这些整数之间存在两个这样的整数,其中一个可被另一个整除。

分析:无非是找出,存在两个数一个数是另一个数的倍数。显然,暴力枚举不可取。我们要用其他的方法进行验证。

可以稍稍借用快速幂的思想,将每个数化成2^K*a的格式,显然a是奇数。
然而200之内只有100个奇数,那么101个数之中显然存在两个有相同a的数。2
的倍数肯定可以整除,所以肯定存在两个这样的数。
证毕!

当然,关于鸽巢原理的应用还有更多,这里就不一一详解了,给出几个参考方向,有兴趣可以看一下。
中国剩余定理、有理数循环小数、Ramsey定理…

你可能感兴趣的:(Mathematics,Algorithm)