鸽巢原理

鸽巢原理#

当有k+1个鸽子飞进k个巢时,其中至少有一个巢中至少有两只鸽子。

原因很简单,从直觉上来看,k个巢永远无法容纳k+1个鸽子,就算前k只鸽子每只分到了一个巢,那最后一个还是没地方,只能挤进一个已经有鸽子的巢。

考试成绩#

考试的分数在[0,100]中,班上有多少个学生才能保证至少有两个学生成绩相同。

解:因为[0,100]中共有101个数字,所以班上需要有101+1=102个学生才能保证至少有两个学生成绩相同。

01表示#

证明:对于每个整数n,存在一个数是n的倍数且在它的十进制表示中只出现0和1

解:令n是正整数,有这样一个序列:[1,11,111,1111,...,11..11](最后一个有n+1位)。一个数被n整除时会出现n个余数,而这里有n+1个数,则必有两个数被n除余数相等。我们知道a|ba|c那么a|bc,所以用这两个余数相同的数相减必能被n整除,并且这两个数相减结果肯定是由01组成的数。

广义鸽巢原理#

当有N个物体,放到k个盒子里时,至少有一个盒子中至少存在N/k个物体。

现在考虑另一个问题,当我们知道有k个盒子,N个物体随机分布在这些盒子里,我们想知道N至少是多少才能保证其中一个盒子中至少存在r个物体?

太过抽象,举个例子。假如我现在有3个盒子A,B,C,有个人在帮我们分苹果,他分的很随意,他可能把这些苹果都放在一个盒子里面,也可能均匀的分,我们不知道他咋分,但我想保证其中的一个盒子中至少有在4个苹果,则我最少需要准备多少苹果?用上面的字母表示,就是k=3,r=4Nmin

由广义鸽巢原理我们知道

N/krN/k<r1N<k(r1)Nmin=k(r1)+1

成绩问题#

一门课有五个成绩等级,A、B、C、D、E。那么一个班级里最少有多少个学生才能保证至少有六个学生有相同的分数。

由刚刚导出的公式Nmin=k(r1)+1可知,k是5,因为一共可能存在五种成绩,r是6,那么Nmin=5×5+1=26

扑克牌#

现有一副标准的扑克牌,52张,没有大小王。

  1. 必须选出多少张牌才能保证选出的牌中至少有3张是同样花色的。

    k=4(四种花色),r=3,Nmin=4×2+1=9

  2. 必须选出多少张牌才能保证选出的牌中至少有3张红心。

    k=4(十六种类型的牌),r=3,Nmin=4×2+1=9

第二题是错的思路,这题目不能用鸽巢原理解答。因为最坏情况是我们选择的前313=39张牌没有一张是红心,所以我们最坏应该选择39+3=42张牌才能确定至少有三张红心。

差在哪?

第一题我们只说是同样花色的而并没指定这个花色是啥。鸽巢原理只能确定至少有一个巢中满足至少有r个,而不能确定是哪个巢。

posted @   yudoge  阅读(519)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示
主题色彩