鸽巢原理(狄利克雷抽屉原理)资料整合

鸽巢原理

(部分内容参考离散数学及其应用 原书第7版 [(美)KENNETH H.ROSEN著;徐六通,杨娟,吴斌])

  1. 狭义鸽巢原理: 如果K+1个或者更多的物体放在k个盒子里,那么至少有一个盒子包含了两个或者更多的物体。
    原理证明:(此处采用反证法)假定k个盒子每个盒子最多包含的物品数量为1个那么总共的个数是k个,与k+1个物体矛盾。
    推论: 一个从有k+1甚至更多的元素的集合到k个元素集合的函数 f 不是一对一函数。(一对一函数概念补充:当且仅当对于 f 定义域中的所有a和b有 f(a)= f(b),蕴含a = b。)
    推论证明: 假设f的陪域中的每个元素y都有一个盒子与之对应的x。但是根据题意中的是有k+1个或者更多的元素,因此,这些盒子里有的至少包含2个或者更多的x元素。这说明 f 不是一对一函数。

  2. 广义鸽巢原理:  把(mn-1)个物体放入n个抽屉中,其中必有一个抽屉中至多有(m—1)个物体。
    该原理的另外一种表述:如果N个物体放入k个盒子里,那么至少有一个盒子包含[N/k](取上限,因为此处不好表示,只好用”[ ]"表示,请谅解)
    (第一种表述)原理证明:(此处采用反证法)若每个抽屉都有不少于m个物体,则总共至少有mn个物体,与题设矛盾,故不可能。
    (第二种表述)原理证明:(此处采用反证法)假设没有一个盒子包含[N/k]多的物体,那么物体的总数是(如图)离散数学及其应用  原书第7版(美)KENNETH H.ROSEN著;徐六通,杨娟,吴斌
    事例:
    证明:对每个整数n,存在一个数是n的倍数且在它的十进制表示中只出现0和1。
    **解答:**令n是正整数, 构造n+1个全是1的数,例如1,11,111,1111…让其中的每个数除以n,因为余数只有n种可能,所以必定有两个数有同样的余数,让这两个数相减得到的结果就可以得出整除n并全是十进制表示只有1和0组成的数。
    事例:

    1). 同年出生的367人中至少有2个人的生日相同。
    :将一年中的365天视为365个抽屉,367个人看作367个物体,由抽屉原理1可以得知:至少有2人的生日相同. 367/365=1…2,1+1=2.

    2). 假设计算机科学实验室有15台工作站和10台服务器。可以用一条电缆直接把工作站连接到服务器。同一时刻只有一条到服务器的直接连接是有效的。我们想保证在任何时刻任何一组不超过10台工作站可以通过直接连接同时访问不同的服务器。尽管我们可以通过将每台工作站直接连接到服务器(使用150条连线),但是达到这个目标所需的最少的直接连接数量是多少呢?
    解: 将工作站分为编号k=1,2,3,4,5…14,15。服务器编号为1,2,3…9,10。那么我们可以假设将前10台工作站先连接到10台服务器,然后将剩下的11,12,13,14,15再连接到10台服务器,总共60条直接连线。证明一下:如果没有60条连线,假设最多有59条连线,那么有一台服务器至多连接在5台工作站。这就意味着剩下的9台服务器要连接10台工作站,这明显不够用了。因此,至少需要60条直接连线,即证。

  3. 鸽巢原理的经典运用 (来源于离散数学及其应用 原书第7版 [(美)KENNETH H.ROSEN著;徐六通,杨娟,吴斌])
    例一: 在边长为1的三角形放5个点,至少有两个点之间的距离<=1/2。
    解析:将一个三角形分为4个三角形,在四个三角形中放5个点,则至少有两个点在同一个三角形中,这两个点之间的距离最长为1/2,得证。
    例二: 某次会议n位代表参加,至少有两个人认识的人数相等。注意认识是相互的。
    解析:首先讨论每个人都至少认识一个人的情况,这种情况下,认识的人数为1到n-1.参加会议的人数n得证。
    假设有人一个人都不认识,这时剩下的人中认识的人的个数只能是1到n-2,人数为n-1.依次类推,知道将所有一个人都不认识的alone people消掉,就产生鸽巢原理的情况。
    例三: 在30天的一个月里,某棒球队一天至少打一场比赛,但至多打45场比赛。证明一定有连续的若干天内这个队恰好打了14场。
    解析: 令Ai是在这个月的第 j 天或第 j 天之前所打的场数。则A1,A2,A3…A30是不同正整数的一个递增序列,其中1<=Ai<=45。而且A1+14,A2+14…A30+14也是不同正整数的递增序列,其中15<=Ai+14<=59.
    60个正整数A1,A2,A3…A30,A1+14…A30+14一共60个数全都小于等于59。因此,由鸽巢原理可得,有两个正整数相等。因为正整数A1,A2…A30都不一样,并且A1+14,A2+14…A30+14也不相同,所以存在下标使得Ai ==Aj+14。这意味着从第 j+1 天到第 i 天恰好打了14场比赛。
    例四: 证明在不超过2n的任意n+1个正整数中一定存在一个正整数被令一个正整数整除。(图片摘抄自离散数学及其应用 原书第7版 [(美)KENNETH H.ROSEN著;徐六通,杨娟,吴斌])
    参考离散数学及其应用  原书第7版 [(美)KENNETH H.ROSEN著;徐六通,杨娟,吴斌]
    例五: (图片摘抄自离散数学及其应用 原书第7版 [(美)KENNETH H.ROSEN著;徐六通,杨娟,吴斌])
    参考离散数学及其应用  原书第7版 [(美)KENNETH H.ROSEN著;徐六通,杨娟,吴斌]

  4. 拉姆齐数
    在组合数学上, 拉姆齐(Ramsey)定理是要解决以下的问题:要找这样一个最小的数n ,使得n个人中必定有k个人相识或l个人互不相识。
    拉姆齐定理的通俗表述 : 6 个人中至少存在3人相互认识或者相互不认识。该定理等价于证明这6个顶点的完全图的边,用红、蓝二色任意着色,必然至少存在一个红色边三角形,或蓝色边三角形。
    **验证推导:**首先,把这6个人设为A、B、C、D、E、F六个点。由A点可以引出AB、AC、AD、AE、AF五条线段。设:如果两个人认识,则设这两个人组成的线段为红色;如果两个人不认识,则设这两个人组成的线段为蓝色。
    由抽屉原理可知:这五条线段中至少有三条是同色的。不妨设AB、AC、AD为红色。若BC或CD为红色,则结论显然成立。若BC和CD均为蓝色,则若BD为红色,则一定有三个人相互认识;若BD为蓝色,则一定有三个人相互不认识
    https://baike.baidu.com/item/拉姆齐定理/7478185?fr=aladdin
    (摘自百度百科)
    此博文仅供学习笔记整理使用,若有侵权,请联系删除,谢谢)

<think>嗯,用户想了解Excel中的VLOOKUP函数的用法和参数含义。首先,我需要回忆一下VLOOKUP的基本结构。VLOOKUP是垂直查找函数,用于在表格的首列查找指定的值,然后返回该行中指定列的数据。它的四个参数分别是查找值、表格范围、列索引号和匹配模式。 接下来,我得确认每个参数的具体作用。第一个参数是lookup_value,也就是用户要查找的值,比如产品ID或者姓名。第二个参数是table_array,即查找的范围,这里要注意的是,查找值必须位于这个范围的第一列,否则函数无法正确工作。第三个参数是col_index_num,也就是用户想要返回的数据在表格范围中的第几列,这个列数是从表格范围的第一列开始算起的,不是整个工作表的列。第四个参数是range_lookup,决定是精确匹配还是近似匹配,通常用FALSE或0来指定精确匹配,避免错误。 然后,用户可能需要一个具体的例子来理解如何使用。比如,假设有一个产品价格表,用户想根据产品ID查找对应的价格。这时候,VLOOKUP就可以在ID列查找,然后返回价格列的数据。同时,要提醒用户注意表格范围最好使用绝对引用,比如$A$2:$C$100,这样在拖动公式时范围不会变化。 可能遇到的问题也需要考虑。比如,如果查找值不在表格的第一列,或者列索引号超过了表格的列数,函数会返回错误。此外,数据格式不一致也可能导致问题,比如查找值是数字,而表格中是文本格式的数字,这时候需要统一格式。还有,当出现#N/A错误时,可能是查找值不存在,或者匹配模式设置不正确,需要检查参数是否正确。 用户可能还会问到如何避免常见的错误,比如部分数据匹配出错的情况。这时候需要检查是否有多余的空格,或者数据格式不一致,或者表格范围没有锁定导致拖动时偏移。此外,XLOOKUP作为VLOOKUP的升级版,可能在某些情况下更方便,比如可以向左查找或者返回多列数据,这也是可以提及的内容。 最后,整理步骤,从基础语法到参数说明,再到具体案例,逐步引导用户理解如何使用VLOOKUP函数。同时,提供常见错误和解决方法,帮助用户在实际应用中避免问题。如果有必要,还可以比较VLOOKUP和其他查找函数的区别,比如HLOOKUP或XLOOKUP,但根据用户的问题,主要集中在VLOOKUP本身即可。</think>### Excel VLOOKUP函数详解 #### 一、基础语法与参数说明 VLOOKUP函数的语法为: $$=VLOOKUP(lookup\_value, table\_array, col\_index\_num, [range\_lookup])$$ 包含4个参数: 1. **lookup_value**(必填):要查找的值(如单元格引用或具体值) 2. **table_array**(必填):包含数据的表格范围(必须包含查找列和返回列) 3. **col_index_num**(必填):返回值所在列的序号(从table_array第一列开始计数) 4. **range_lookup**(可选):匹配类型 - `TRUE`/`1`:近似匹配(默认值,需数据升序排列) - `FALSE`/`0`:精确匹配(常用选项) [^1][^2] #### 二、使用步骤演示(工资表查询案例) 假设需要根据员工编号查询工资: 1. 建立查询单元格(如`B12`) 2. 输入公式: ```excel =VLOOKUP(A12, $A$2:$D$100, 4, 0) ``` - `A12`:待查询的员工编号 - `$A$2:$D$100`:锁定数据区域(绝对引用) - `4`:返回第4列(工资列) - `0`:精确匹配 [^2][^3] #### 三、常见错误与解决方法 | 错误现象 | 原因 | 解决方案 | |---------|------|---------| | #N/A | 查找值不存在 | 检查数据源或改用`IFERROR`容错 | | #REF! | 列序号超出范围 | 确认col_index_num ≤ 表格列数 | | 部分匹配失败 | 数据格式不一致 | 统一数值/文本格式 | | 结果错位 | 表格未锁定 | 使用`$`符号固定区域引用 | [^3][^4] #### 四、进阶技巧 1. **多条件查询**: 使用辅助列合并多个条件字段 ```excel =VLOOKUP(A2&B2, $D$2:$F$100, 3, 0) ``` 2. **通配符匹配**: `"*"`匹配任意字符,`"?"`匹配单个字符 ```excel =VLOOKUP("张*", $A$2:$C$100, 3, 0) ``` 3. **跨表查询**: 引用其他工作表数据 ```excel =VLOOKUP(A2, Sheet2!$A$2:$D$100, 4, 0) ``` [^1][^4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值