鸽巢原理(初识)(纯算法)

来源:互联网 发布:python range函数菜鸟 编辑:程序博客网 时间:2024/05/22 17:31

http://www.docin.com/p-1352185354.html

一.什么是

鸽巢原理(抽屉原理)若把n个物体放在n - 1个抽屉中,至少有一个抽屉中放了两个物体。

二.  特点

只能用于解决存在性问题

三.例题

例一: 在边长为1的三角形放5个点,至少有两个点之间的距离<=1/2

解析:将一个三角形分为4个三角形,在四个三角形中放5个点,则至少有两个点在同一个三角形中,这两个点之间的距离最长为1/2,得证

例二:某次会议n位代表参加,至少有两个人认识的人数相等。注意认识是相互的

解析:首先讨论每个人都至少认识一个人的情况,这种情况下,认识的人数为1到n-1.参加会议的人数n得证

假设有人一个人都不认识,这时剩下的人中认识的人的个数只能是1-n-2,人数为n-1.依次类推,知道将所有一个人都不认识的alone people消掉,就优惠产生鸽巢原理的情况

例三:从1到2n中,选n + 1个数,至少有一对数,其中一个数是另一个数的倍数

解析:将选中的n+1个数中所有的2都除掉,即除以2^k,由于1-2n中只有n个奇数,一定有一对数的奇数形式相等的。这两个数分别是2^m*equal,2^n*equal,因此一定一个数是另一个数的倍数

例四:从1-2n中,选n+1个数,至少有一对数是互素的

解析:首先明确一点,相邻的两个整数一定是互素的,证明如下:

假设这两个整数为n,n+1.假设他们不是互素的,有公共因子q

n = p1 * 1,n + 1 = p2 * q

n+1 - n = q(p2 - p1)

q(p2-p1) = 1

其中p2,p1均为整数,q >=2,可证不等

可将这2n个数分为n分每分为(1,2)(3,4)……(2n-1,2n),从n分中选n+1个数,则至少有两个数来自同一份,至少有两个数是互素的





0 0
原创粉丝点击