鸽巢原理详解

  • 前言:
  • 鸽巢原理
  • 简单的例子
    • 一. 任何367个人里面至少有两人生日相同。
    • 二.任意11个整数中,至少有2个整数之差是10的倍数。
  • 需要动点脑子的例子
    • 一. 分配职工训练时间问题
    • 二. 自行车问题
    • 三.在世界上任意6个人的集体中,要么有3个人互相认识,要么有3个人互不认识。

前言:

鸽巢原理是离散数学学习种一大难点,主要在于如何去构造鸽子和巢的抽象化,本文是整理了一些笔者学习中遇到的典型例题,加了一些笔者自己的思路,希望能帮助学习离散数学的同学。 PS:这里的大部分例题都是来源于我的课本或者老师课堂讲的例题。

鸽巢原理

鸽巢原理:如果有n+1个鸽子飞进了n个鸽巢中,那么必定有鸽巢中至少飞进了2只鸽子。
鸽巢原理加强版:当n只鸽子飞进m个巢时,必定至少有一个巢中飞进了
***************************************************************************
鸽巢原理很好理解,可以先做几个简单的例题来体会一下。

简单的例子

一. 任何367个人里面至少有两人生日相同。

这里相当于是把367个鸽子飞进366(或者365)个鸽巢中,因为一年最多有366天,那么显然至少两人生日相同。

二.任意11个整数中,至少有2个整数之差是10的倍数。

假设这十一个数是 a0 a1 a2 a3 … a10
那么他们关于10的模为 r0 r1 r2 r3 … r10 共11个
(取模运算: a mod b 或写作a%b, 就是 a 除以b 的余数)
那么显然我们可知道 余数应该是 0 ,1, 2, …, 9 这十个数
我们可以看作11只鸽子飞进了10个鸽巢中,所以至少有两个数关于10的模余数相同, 也就是说他们之差 是 10 的倍数。


以上是几个体会的例子,很容易理解,下面讲几个需要一点点技巧的例题

需要动点脑子的例子

一. 分配职工训练时间问题

某人正拟定在37天内对职工培训60个单位时间,每天至少培训 1 小时。试证明,无论怎么安排都存在相继的若干天,在这期间安排了12个单位培训时间。
【解析】 这道题是一个典型的鸽巢原理例题,关键就在于如何去构造那个相继的若干天,与如何去构造这个鸽巢的模型。这里相继的若干天我们采用数列的 部分和来表示, 如Sn-Sk,可以表示 从第 K天到 第 n天连续的几天分配的时间总和。
记这果然每天分别分配的时间为 X1,X2,X3…X37
前i天共分配的时间为 Yi
再令 Zi=Yi+12
那么对于序列 Y1 ,Y2…Y37,Z1,Z2…Z37
因为每天至少分配了一个小时,所以这个序列的两个子列应该都是分别严格单调递增的,也就是说
任意的 i≠j, Yi ≠Yj, Zi ≠ Zj,这一点很重要我们后面需要用到
所以对于序列Y1 ,Y2…Y37,Z1,Z2…Z37 他一共有37+37=74个元素,
最小值是Y1,最大值是 60+12 =72,
考虑极端情况,我们令Y1取最小的值 也就是 1,
这时候相当于有 74个鸽子要飞进72个鸽巢中, 所以必定存在Yi=Zj=Yj+12
也就是说从j天到i天这连续的 j-i天 共分配了12个单位时间


二. 自行车问题

一个人骑车10小时内走完了281公里路程,已知他第一小时走了30公里,最后一小时走了17公里。证明:他一定在某相继的两小时中至少走完了58公里路程。
【解析】 十个小时中有九个相继的两小时,这九个小时共走了 2*218-(30+17) = 515 公里,所以相当于有515个鸽子飞进了9个鸽巢中,由鸽巢原理增强版可以得到 至少有一个鸽巢中飞进了

三.在世界上任意6个人的集体中,要么有3个人互相认识,要么有3个人互不认识。

【解析】
这六个中我们以其中一个人为参考对象,比如假设这个人是 超越妹妹, 那么这六个人可以分为 两大阵营,第一个阵营是 和超越妹妹互相认识的人 记为 S1,第二个阵营是 和超越妹妹互相不认识的人,记为S2。
S1和S2中至少有一个集合不少于
(因为认识是相互的,我们这里不考虑比如你认识超越妹妹,超越妹妹不认识你的情况。)

1)假设S1中至少有三个人:
要是其中任何两个人都互不认识,那么就找到了3个互不认识的人,即他们三个。
否则,至少有2个人是相互认识的,他们与超越妹妹一起构成了3个互相认识的人的集合。

2)假设S2中至少有3个人:
要是其中任何两个人都相互认识,就找到了3个相互认识的人,也就是他们三个人。
否则,至少有2个人互相不认识,他们与超越妹妹一起组成3个互不认识的人的集合。


以上就是全部内容了,有时间的话我会再更。

鸽巢原理详解(口水化解释)相关推荐

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

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

  2. 鸽巢原理(抽屉原理)的详解

    抽屉原理 百科名片 桌上有十个苹果,要把这十个苹果放到九个抽屉里,无论怎样放,我们会发现至少会有一个抽屉里面放两个苹果.这一现象就是我们所说的"抽屉原理". 抽屉原理的一般含义为: ...

  3. JAVA消息服务JMS规范及原理详解

    一.简介 JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进 ...

  4. ASP.NET页面与IIS底层交互和工作原理详解(一)

    第一回: 引言 我查阅过不少Asp.Net的书籍,发现大多数作者都是站在一个比较高的层次上讲解Asp.Net.他们耐心.细致地告诉你如何一步步拖放控件.设置控件属性.编写CodeBehind代码,以实 ...

  5. 单片机_PWM输出原理详解

    单片机_PWM输出原理详解 理论篇   博主自己的经历告诉我,PWM波的理解和应用确实还是挺重要的,这里专门花一期详细介绍一下 什么是PWM?   PWM,英文名Pulse Width Modulat ...

  6. 抽屉原理(鸽巢原理)

    一.抽屉原理初介绍: 桌上有十个苹果,要把这十个苹果放到九个抽屉里,无论怎样放,我们会发现至少会有一个抽屉里面至少放两个苹果.这一现象就是我们所说的"抽屉原理". 抽屉原理的一般含 ...

  7. CRF(条件随机场)与Viterbi(维特比)算法原理详解

    摘自:https://mp.weixin.qq.com/s/GXbFxlExDtjtQe-OPwfokA https://www.cnblogs.com/zhibei/p/9391014.html C ...

  8. SVM分类器原理详解

    SVM分类器原理详解 标签: svm文本分类java 2015-08-21 11:51 2399人阅读 评论(0) 收藏 举报  分类: 数据挖掘 文本处理(16)  机器学习 分类算法(10)  目 ...

  9. LVS原理详解及部署之五:LVS+keepalived实现负载均衡高可用

    本文我们主要讲解的是LVS通过keepalived来实现负载均衡和高可用,而不是我们第三篇文章介绍的通过手动的方式来进行配置.通过脚本的方式来显示RS节点的健康检查和LVS的故障切换.此文会通过一个实 ...

最新文章

  1. python的功能模块_Python的功能模块[1] - struct - struct 在网络编程中的使用
  2. spark2.0.1 安装配置
  3. Win10系统java环境配置
  4. Java序列化的这三个坑千万要小心
  5. linux 2.6内核进程调度,Linux2.6内核进程调度系列--scheduler_tick()函数2.更新实时进程的时间片,...
  6. mysql 截取最后三位查询
  7. Vue 当中的计算属性computed
  8. Smarty3的性能问题
  9. 人物抠图(Photoshop技巧系列)
  10. 撬动世界的支点——《引爆点》读书笔记2900字优秀范文
  11. python-opencv图像处理之车牌识别+区域划分+车牌提取+保存图片(2)
  12. python123 测验6:组合数据类型
  13. 华为企业网络营销系统分析报告
  14. Google引擎搜索技巧
  15. linux 命令修改uid,修改Linux用户的UID、GID
  16. 店铺降权的原因|盛天海科技
  17. Bootstrap级联下拉菜单,你肯定用得到
  18. Android 数据库Sqlite的使用(1)
  19. 1-乙基-3-甲基咪唑四氟硼酸盐/[C2MIm]BF4/cas:143314-16-3/分子量:197.97/离子液体
  20. [Iterview English] Dimission and Employ

热门文章

  1. 用Excel建模进行决策树分析
  2. 喀嚓鱼”马克杯活动,我无语了
  3. 《计算机网络》谢希仁第7版习题和答案
  4. 计算机的网络用语,计算机与网络用语的认知探索
  5. J - Catch That Cow
  6. OSPF IP FRR 快速重路由
  7. APP开发注册和个人开发计划注册审批周期
  8. phpqrcode固定二维码大小
  9. mosh operators
  10. 公众平台 java_微信公众平台开发详细步骤与java代码