【经典概率题】百囚徒挑战
起因,这两天多校概率题挺多的,又不太会做。
刚好学长发了一些概率问题知识就有这个就去了解了一下
有一个很反直觉的问题,叫作百囚徒挑战。
很多时候,我们都会靠直觉去评价一件事情,但很多时候,我们的直觉是错的,哪怕感觉有多么准确,而最著名的反直觉问题,就是百囚徒挑战。
问题描述
监狱决定给关押的100名囚徒一次特赦的机会,条件是囚徒通过一项挑战。1、所有囚徒被一一编号,编号为1-100。
2、将编号1-100的100个号码牌,随机放在100个抽屉。
3、每个囚徒可以打开最多50个抽屉,如果找到对应自己编号的号码牌,则该囚徒挑战成功,反之挑战失败。
4、所有囚徒全部挑战成功,该项挑战才算成功,任意一名囚徒挑战失败,则该项挑战失败!
前三点看起来并不难,但第四条直接将难度直线升级。从直觉来看,每个囚徒完成挑战的概率就是1/2,而且每个囚徒的挑战都是独立事件,所以100个囚徒同时成功的概率就是(1/2)的100次方,这个数,几乎接近于零!
那么为什么说这个问题是反直觉的?
实际上,这个题目并不是单纯的概率题。比如考虑最简单的情况,囚徒只有两人,那么他们每人只能从两个抽屉里选择一个抽屉打开,这时他们被释放的概率是1/4吗?不是。如果两个囚徒打开不同的抽屉,那么他们被释放的概率是 1/2,反之如果两个囚徒打开同一个抽屉,那么他们被释放的概率是0.
因此,只要囚徒采取了正确的策略,那他们获胜的概率很大,在人数为100人时,仍旧有
下面开始解释为什么概率是趋近于
解答的细节来自知乎的大佬 Yuz.Scarlet
不妨假设抽屉里的号码牌是随机放置的(否则,囚徒可以自己在脑内打乱所有抽屉的位置以达到同样的效果※),之后囚徒首先为抽屉编号,例如从左上到右下依次编号。而每个囚徒的策略,就是首先打开与自己编号相同的抽屉,从中取出号码牌,并打开号码牌所对应的抽屉。之后,重复此过程,直到找到自己的号码牌,或者50个抽屉的机会用完。
例如,29号囚徒首先打开了29号抽屉,里面放着51号的号码牌,于是他打开51号抽屉,里面放着18号的号码牌,于是他打开18号的抽屉,里面放着29号的号码牌,他完成了任务。(只是随便举例)(※※)
为了计算成功概率,首先对这个游戏进行化简。将抽屉与号码牌的对应关系视为一个映射,例如
接下来就是计算了。比起计算“所有圆环的长度不超过50”的概率,“有一个圆环长度超过50”的概率更容易计算。因为“有一个圆环的长度是51”和“有一个圆环的长度是52”之类的事件是彼此互斥的(圆环的长度总和是100),所以总概率就是它们的和。而对于
具体地说,所有形成长度为
综上,所有圆环长度不超过50的概率等于
不那么严密地说,这个策略的关键点在于让所有囚徒尽可能地一起成功或者一起失败,因此所有玩家的任务不再是独立的,一旦有一个人成功,他所翻出的号码牌对应的人也一定会成功,同时只要有一半的人成功,剩下的人都一定成功。
通过计算可得,在之前所有人都成功的条件下,下一个人成功的概率依次为
这个策略被证明最优。
※否则,囚徒可以自己在脑内打乱所有抽屉的位置以达到同样的效果
因为在挑战开始之前有一个月时间商讨对策,所以囚徒可以在这段时间内约定好随机打乱抽屉的方式。另外,如果担心囚徒的策略被狱警知晓,也可以考虑迪菲赫尔曼密钥交换(前提是P≠NP),这是一种大声说悄悄话的方法,具体做法是利用非对称算法,使得两个没有任何共同知识的人知晓一个共同的关键词,并且任何窃听者无法通过两人的对话推理出这个关键词,之后这个关键词可以作为加密的秘钥使用。
※※另外直观地解释一下这个策略的含义,这里以10个人的情况举两个例子。
假如说10个抽屉与号码牌的对应关系如下:
1号抽屉→5号牌
2号抽屉→7号牌
3号抽屉→3号牌
4号抽屉→2号牌
5号抽屉→9号牌
6号抽屉→10号牌
7号抽屉→4号牌
8号抽屉→8号牌
9号抽屉→1号牌
10号抽屉→6号牌
1号囚徒首先打开自己的编号对应的抽屉即1号抽屉,取出5号号码牌,接着打开5号抽屉,取出9号号码牌,接着打开9号抽屉,取出1号号码牌,完成任务;
2号囚徒首先打开自己的编号对应的抽屉即2号抽屉,取出7号号码牌,接着打开7号抽屉,取出4号号码牌,接着打开4号抽屉,取出2号号码牌,完成任务;
……
10号囚徒首先打开自己的编号对应的抽屉即10号抽屉,取出6号号码牌,接着打开6号抽屉,取出10号号码牌,完成任务;
就这样,在这种对应关系下,所有囚徒都完成了任务;
假如说10个抽屉与号码牌的对应关系如下:
1号抽屉→2号牌
2号抽屉→8号牌
3号抽屉→5号牌
4号抽屉→6号牌
5号抽屉→1号牌
6号抽屉→4号牌
7号抽屉→10号牌
8号抽屉→9号牌
9号抽屉→3号牌
10号抽屉→7号牌
1号囚徒打开1号抽屉,取出2号号码牌;打开2号抽屉,取出8号号码牌;打开8号抽屉,取出9号号码牌;打开9号抽屉,取出3号号码牌;打开3号抽屉,取出5号号码牌;任务失败
4号囚徒打开4号抽屉,取出6号号码牌;打开6号抽屉,取出4号号码牌;任务成功
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 分享4款.NET开源、免费、实用的商城系统
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
· 5. Nginx 负载均衡配置案例(附有详细截图说明++)
2020-08-01 差分约束基本讲解
2020-08-01 POJ 1456 Supermarket【贪心 + 并查集】
2020-08-01 Codeforce Problem 711A - Bus to Udayland (正则表达式)
2020-08-01 [kuangbin] 专题7 线段树 题解 + 总结
2020-08-01 HDU 4027 Can you answer these queries?(线段树 区间不等更新)
2020-08-01 树状数组详解