一副扑克牌(54张)中蕴含着有趣的“鸽巢原理”,该原理指出,若将多于n个物体放入n个鸽巢,则至少有一个鸽巢含两个物体,在扑克牌中,这一原理表现为:任意抽取5张牌(不考虑大小王),至少有两张花色相同(4种花色对应4个鸽巢);若将大小王视为特殊牌,则抽到14张牌时必有两张点数相同(13种点数加大小王共15个“鸽巢”),更神奇的魔术应用是:只需观察5张牌中的4张,便可准确猜出第5张,这本质是将点数与花色转化为一个确定的数学映射,让看似随机的扑克牌体现出必然的数学规律。
你有没有过这样的经历?跟朋友打扑克的时候,摸了一手牌,发现居然有 三张同样花色的牌 挨在一起,你可能会觉得“今天手气真好”,或者“这牌也太邪门了吧”,这背后藏着个特别简单的数学原理——鸽巢原理,也叫抽屉原理,别被名字吓到,它就跟“把5个苹果放进4个抽屉,总有一个抽屉至少有两个苹果”一样好懂,我们就用扑克牌来聊聊这个原理,你会发现,这玩意儿不仅不枯燥,还特有意思。
一副标准扑克牌(去掉大小王),有52张牌,分4种花色(黑桃、红心、梅花、方块),每种花色13张,假设你从这副牌里随便抽 5张 牌(别管怎么抽的,闭眼抽都行),你能保证什么呢?至少有2张牌是同一花色的,为什么?因为只有4种花色,但你抽了5张牌,这就好比你有4个鸽巢(代表4种花色),但飞进来5只鸽子(代表5张牌),不管你怎么安排,总有一个鸽巢里至少住着2只鸽子,这几乎是 确定一定以及肯定 的事,都不需要靠手气。
| 鸽巢(花色) | 鸽子(牌)数量下限 |
|---|---|
| 黑桃 | 至少1张 |
| 红心 | 至少1张 |
| 梅花 | 至少1张 |
| 方块 | 至少1张 |
| 总数 | 5张 |
| 必有某花色 ≥ 2张 |
你看,这表格看起来像个分配方案,其实它反映的就是鸽巢原理的 核心思想:物品数(鸽子)多于容器数(鸽巢),那必然有某个容器里不止一个物品,就这么简单。
你可能觉得,数学原理太抽象,离生活很远,但真要细想,它其实无处不在,甚至有点烦人,你衣柜里有 3双袜子(一共6只),但你早上摸黑抓袜子,抓了 7只,那你肯定会有一只袜子是多余的,而且是 成双的?不不不,鸽巢原理会告诉你,你必定能找到 至少一双成对的,因为一共只有3种颜色,抓了4只袜子就必然有2只同色,这个结论在概率论里叫“生日问题”的简化版。
再比如,还是打牌,如果你玩的是 斗地主,底牌有3张,加上农民手里17张牌,你可能会想,自己手里有没有可能 凑齐四张一样的(炸弹)?鸽巢原理在这里就管用了,如果你手里有 14张牌(虽然这不符合规则,但假设一下),因为每张牌的点数(从A到K共13种)就只有13个“巢”,14张牌里必然会出现 至少一对点数相同 的牌,但这只是同点数的牌,不一定是炸弹,炸弹需要4张,鸽巢原理能告诉你 底线,但具体能凑成什么样,还得看手气。
鸽巢原理有个 强化的版本:当鸽子数(d)和鸽巢数(b)不正好差1时,你能得到一个更具体的数,把 9张牌 随机分到 4种花色 里,那至少有一种花色里有 ⌈9/4⌉ = 3张 牌(⌈x⌉是向上取整),用数学公式说:如果飞进b个巢的鸽子总数为d,那必有一个巢里至少有 ⌊(d-1)/b⌋ + 1 只鸽子,这个式子能帮你更准地预测。
真实打牌时,拿到3张同花色 确实常见,但 4张同花色 呢?因为前面说了,4种花色各13张,如果你抽 40张 牌(几乎一整副),那必然有一种花色至少有 10张,但平时谁会抽那么多?所以说,鸽巢原理更多是在帮你 判断“有没有可能”,而不是“一定会发生”。
很多玩牌的人会犯一个逻辑错误,叫 赌徒谬误,你连输了5把,觉得“下一把肯定赢”,鸽巢原理不是用来预测未来的,它只关心“如果某件事发生了,必然导致某个结果”,你摸了 13张 牌,你只能保证这些牌里 点数一样的牌至少有2张(因为13点,13张牌),但你不能说“我摸了红心10,下张一定是红心J”。
这种“必然”和“可能”的差别,正是鸽巢原理在生活里 被误用 的地方,它告诉你的是 确定性,不是可能性,别被它忽悠着去下注。
既然你看到这里,不如我教你个简单魔术,你让朋友从一副牌里任意抽 5张 牌(别给你看),然后你只凭看他的表情,就能猜出至少有2张同花色,其实根本不用表情,你只需要 告诉他是同花色的比例很高,然后让他把 其他花色的牌 按你的指示分类,虽然听起来虚,但因为他抽的5张牌确实必有两个同花色,所以你可以 假装 用推理来“识破”他,你也可以直接说出结论,因为他手上的牌肯定满足鸽巢原理,绝不失手。
数学家们会把鸽巢原理写得非常简洁:如果有 n+1个 物品放进n个盒子,那至少有一个盒子里有两个或以上的物品,但用扑克牌举例子,更接近真实生活,你从一副牌里随手抽 5张,不管如何洗牌,必然 有两种花色重复,这个 必然性 不是靠运气,而是靠 数学约束。
很多 组合数学 的难题,底子就是这玩意儿,著名的 拉姆齐数 问题,就问“至少要有多少人,才能保证其中有三人互相认识或三人都互不认识”,这个数和鸽巢原理一脉相承,只是更复杂一点,但要理解它,从一副扑克牌开始,可能是最亲民的路径。
如果你拿 7张 牌,能不能保证有3张同花色?让我算算,一共4个鸽巢,7÷4=1余3,那也就是说,至少有一种花色有 ⌈7/4⌉ = 2张?不对,用强化公式:⌊(7-1)/4⌋ + 1 = ⌊6/4⌋ + 1 = 1 + 1 = 2张。只能保证有2张同花色,不能保证3张,你可能会觉得这有点反直觉:7张比5张多,但结论却一样,这就是数学的有趣之处,数字不代表直观,它只代表约束条件。
图1: 一张桌子上散落着7张扑克牌,其中红心和黑桃各两张,其余花色各一张,图中用圆圈标出同花色的对,突出“即使数量增加,鸽巢原理也只能保证至少2张同花色”这个令人意外的结果。
你会发现,鸽巢原理像是一个 底层操作系统,它运行在所有需要“分配”的场景里,无论是 电脑内存 的缓存处理,还是 交通拥堵 的车道分配,本质上都是在解决“资源(鸽子)比容器(鸽巢)多时怎么办”,而在扑克牌里,它更像一个安静的朋友,默默告诉你:别慌,数学早就帮你算好了下限。
也许你在和朋友打牌时,摸到一把烂牌,想到鸽巢原理,也不会那么沮丧了,因为你起码知道,至少有两张牌是同一花色的,这也许就是数学给你的安慰?哈哈,写到这儿,我有点想再摸一把牌了。