鸽巢原理(Pigeonhole Principle),也叫抽屉原理或狄利克雷原理,由德国数学家狄利克雷(Dirichlet)于1834年提出 ,是组合数学中的一个重要原理。以下从定义、证明、形式、应用方面为你详细介绍:
定义
如果有n + 1个鸽子飞进了n个鸽巢中,那么必定有鸽巢中至少飞进了2只鸽子。更一般地表述为:如果每个鸽巢代表一个集合,每一个鸽子就可以代表一个元素,假如有n个或多于n个元素放到n - 1个集合中去,其中必定至少有一个集合里有两个或以上元素 。比如,3个苹果放到2个抽屉里,必然有一个抽屉至少放2个苹果。
证明
以n + 1个元素放入n个集合为例。假设每个集合最多只有1个元素,那么n个集合最多只能容纳n个元素。但实际有n + 1个元素,这与假设矛盾,所以必然存在至少一个集合,里面有2个或更多元素。
常见形式
- 简单形式:把多于n个的物体放到n个鸽巢里,则至少有一个鸽巢里的东西不少于两件 。比如,10双袜子放在9个抽屉里,至少有一个抽屉里有两双或以上袜子。
- 加强形式:令Q_1,Q_2,……,Q_n为正整数,如果将Q_1 + Q_2 + … + Q_n - n + 1个物体放入n个盒子内,那么,或者第一个盒子至少含有Q_1个物体,或者第二个盒子至少含有Q_2个物体,……,或者第n个盒子至少含有Q_n个物体 。例如,有3个盒子,要放入5 + 4 + 3 - 3 + 1 = 10个球,那么必然有一个盒子至少有5个球,或另一个盒子至少有4个球,或还有一个盒子至少有3个球。
应用举例
- 生活场景:
- 生日问题:任意367个人中,至少有两人生日相同。因为一年最多366天(闰年),相当于367个“鸽子”(人)放进366个“鸽巢”(生日日期)。
- 握手问题:在任意的握手场景中,如果有n个人参与,至少有两人握手的次数相同。一个人握手次数最少是0次(没和任何人握手),最多是n - 1次(和其余n - 1个人都握手),但0次和n - 1次不能同时存在(若有人0次握手,就没人能和所有人握手),所以握手次数最多n - 1种情况,n个人去对应这n - 1种情况,必然至少有两人握手次数相同。
- 数学领域:
- 数论:任意11个整数中,至少有2个整数之差是10的倍数 。设这11个数为a_0,a_1,a_2,\cdots,a_{10} ,它们除以10的余数r_0,r_1,r_2,\cdots,r_{10}共11个,而余数只能是0 - 9这10个数,相当于11个“鸽子”放进10个“鸽巢”,所以至少有两个数除以10余数相同,这两个数的差就是10的倍数。
- 几何:在边长为1的等边三角形内任意选择5个点,存在2个点,其间距离至多为\frac{1}{2} 。可将这个等边三角形分成4个边长为\frac{1}{2}的小等边三角形(相当于4个“鸽巢”),5个点(“鸽子”)放进去,必然有一个小等边三角形内至少有2个点,而小等边三角形内两点距离至多为\frac{1}{2} 。
- 计算机科学:哈希表冲突。哈希表用有限的索引位置存储大量键值对,当键值数量超过索引位置数量,根据鸽巢原理,必然会有至少一个索引位置对应多个键值,即产生哈希冲突 。