zoukankan      html  css  js  c++  java
  • 鸽巢原理

    鸽巢原理 - 维基百科,自由的百科全书

    鸽巢原理

    维基百科,自由的百科全书
    跳转至: 导航搜索
    10只鸽子放进9个鸽笼,那么一定有一个鸽笼放进了至少两只鸽子。

    鸽巢原理,又名狄利克雷抽屉原理鸽笼原理

    其中一种简单的表述法为:

    • 若有n个笼子和n+1只鸽子,所有的鸽子都被关在鸽笼里,那么至少有一个笼子有至少2只鸽子

    另一种为:

    • 若有n个笼子和kn+1只鸽子,所有的鸽子都被关在鸽笼里,那么至少有一个笼子有至少k+1只鸽子

    拉姆齐定理是此原理的推广。

    目录

     [隐藏

    [编辑] 例子

    虽然鸽巢原理看起来很容易理解,但有时使用鸽巢原理会得到一些有趣的结论:

    • 比如:北京至少有两个人头发数一样多。
      • 证明:常人的头发数在15万左右,可以假定没有人有超过100万根头发,但北京人口大于100万。如果我们让每一个鸽巢对应一个头发数字,鸽子对应于人,那就变成了有大于100万只鸽子要进到至多100万个巢中。所以,可以得到“北京至少有两个人头发数一样多”的结论。

    另一个例子:

    • 盒子里有10只黑袜子、12只蓝袜子,你需要拿一对同色的出来。假设你总共只能拿一次,只要3只就可以拿到相同颜色的袜子,因为颜色只有两种(鸽巢只有两个),而三只袜子(三只鸽子),从而得到“拿3只袜子出来,就能保证有一双同色”的结论。

    更不直观一点的例子:

    • 有n个人(至少2人)互相握手(随意找人握),必有两人握手次数相同。
      • 这里,鸽巢对应于握手次数,鸽子对应于人,每个人都可以握[0,n-1]次(但0和n-1不能同时存在,因为如果一个人不和任何人握手,那就不会存在一个和所有其他人都握过手的人),所以鸽巢是n-1个。但有n个人(n只鸽子),因此证明了命题正确。

    鸽巢原理经常在计算机领域得到真正的应用。比如:哈希表的重复问题(冲突)是不可避免的,因为Keys的数目总是比Indices的数目多,不管是多么高明的算法都不可能解决这个问题。这个原理,还证明任何无损压缩算法,在把一个文件变小的同时,一定有其他文件增大来辅助,否则某些信息必然会丢失。

  • 相关阅读:
    js获取多选框选择的值并拼接成字符串
    把不可枚举数组转换成可枚举数组
    js对接图片上传接口
    填数字游戏解题机
    带你深入了解nginx基本登录认证(包含配置步骤)
    高三whk回忆录
    SpringBoot异步任务
    Shell 脚本
    【Ubuntu】知识点及经验
    【Ubuntu】 安装相关
  • 原文地址:https://www.cnblogs.com/lexus/p/2947583.html
Copyright © 2011-2022 走看看