百囚犯问题(100 prisoners problem)

这篇具有很好参考价值的文章主要介绍了百囚犯问题(100 prisoners problem)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

百囚犯问题(100 prisoners problem)

问题描述

Philippe Flajolet和Robert Sedgewick在2009年提出了“百囚犯问题(100 prisoners problem)”

一个房间里有100个抽屉,监狱长随意地把1到100这100个号码放入1号到100号抽屉中,每个抽屉一张。囚犯们逐个进入房间,每人可以任意打开50个抽屉,之后关上。如果每名囚犯都在这50个抽屉中发现了他的号码,那么所有的犯人都会被赦免;如果有人没有找到他的号码,那么所有的囚犯都会被处死。在第一个囚犯进入房间之前,囚犯们允许一起讨论开抽屉的“策略”,但一旦第一个囚犯进入房间,他们之间就被禁止交流。

如果随机打开,那么成功的概率为
( 1 2 ) 100 = 8 ∗ 1 0 − 31 (\frac{1}{2})^{100} = 8 * 10^{-31} (21)100=81031

策略选择

每名囚犯进入房间后都——

  1. 先打开自己的号码的抽屉。
  2. 如果这个抽屉里有他的号码,他就成功了。
  3. 否则,抽屉里会有另一个号码,然后他打开这个号码的抽屉。
  4. 不断重复第2步和第3步,直到他找到自己的号码或已经打开了50个抽屉(那就全体失败了)。

这个策略之所以可行:是因为 ( x , y ) (x,y) (x,y)形成了一个环(用 x x x表示箱子的号码, y y y表示箱子里面装的号码)就是从囚犯自己号码对应的箱子找,总能找到一个箱子有自己的号码;

下证 : ( x , y ) 形成了一个环 反证: 存在某一个路径不成环,设该路径为 ( x 1 , y 1 ) → ( x 2 , y 2 ) → ⋯ → ( x n , y n ) 根据策略的特点有: y k − 1 = x k 该路径不成环: y n ≠ x 1 那么 ( 证明在下面给出 ) : y n = x n − w , ( n − w ) ∈ ( 1 , n ) 又 ∵ y n − w − 1 = x n − w 则表明有两个箱子装着同一个号码,显然不合实际,故 ( x , y ) 形成了一个环 ( 从编号 x 的箱子找,总能在一个箱子中找到编号为 x 的号码 ) 下证 : y n = x n − w , ( n − w ) ∈ ( 1 , n ) 若 y n 不等于路径中的某一个 x ,那么一定能将这条路径延长, y n 就不是终点 y n ≠ x 1 且 y n ≠ x n ∴ y n = x n − w , ( n − w ) ∈ ( 1 , n ) \begin{aligned} 下证:& (x,y)形成了一个环 \\ 反证:& 存在某一个路径不成环,设该路径为 (x_1,y_1) \to (x_2,y_2) \to \dots \to (x_n,y_n) \\ &根据策略的特点有: y_{k-1} = x_k \\ &该路径不成环: y_n \neq x_1 \\ &那么(证明在下面给出): y_n = x_{n-w} ,(n-w) \in (1,n) \\ &又\because y_{n-w-1} = x_{n-w}\\ &则表明有两个箱子装着同一个号码,显然不合实际,故(x,y)形成了一个环(从编号x的箱子找,总能在一个箱子中找到编号为x的号码)\\ 下证:& y_n = x_{n-w} ,(n-w) \in (1,n)\\ &若y_n不等于路径中的某一个x,那么一定能将这条路径延长,y_n就不是终点 \\ &y_n \neq x_1 且y_n \neq x_n \\ &\therefore y_n = x_{n-w} ,(n-w) \in (1,n) \\ \end{aligned} 下证:反证:下证:(x,y)形成了一个环存在某一个路径不成环,设该路径为(x1,y1)(x2,y2)(xn,yn)根据策略的特点有:yk1=xk该路径不成环:yn=x1那么(证明在下面给出)yn=xnw,(nw)(1,n)ynw1=xnw则表明有两个箱子装着同一个号码,显然不合实际,故(x,y)形成了一个环(从编号x的箱子找,总能在一个箱子中找到编号为x的号码)yn=xnw,(nw)(1,n)yn不等于路径中的某一个x,那么一定能将这条路径延长,yn就不是终点yn=x1yn=xnyn=xnw,(nw)(1,n)

做一个简单的示意图

百囚犯问题(100 prisoners problem)

百囚犯问题(100 prisoners problem)

那么很显然,这个环的最大长度决定了囚犯能否获救,如果所有抽屉中的号码恰好构成了长度为100的环,那么显然囚犯会失败;如果有一条长度为49的环、一条长为20、一条为31的环,那么囚犯显然能获救;所以问题的临界情况就在环的长度等于50;

  • 所有的摆放情况(100个不同箱子,塞100个不同的东西,相当于全排列)
    A 100 100 = 100 ! A_{100}^{100} = 100! A100100=100!
  • 最长的环为 K ( K ≥ 50 ) K(K\geq50) K(K50)
    选出 K 个,在 K 个箱子里面形成一个环,剩下的 100 − K 在 100 − K 个箱子里全排 C 100 K ( K − 1 ) ! ( 100 − K ) ! = 100 ! K P = C 100 K ( K − 1 ) ! ( 100 − K ) ! 100 ! = 1 K 选出K个,在K个箱子里面形成一个环,剩下的100-K在100-K个箱子里全排\\ C_{100}^K (K-1)! (100-K)! = \frac{100!}{K}\\ P = \frac{C_{100}^K (K-1)! (100-K)!}{100!} = \frac{1}{K} 选出K个,在K个箱子里面形成一个环,剩下的100K100K个箱子里全排C100K(K1)!(100K)!=K100!P=100!C100K(K1)!(100K)!=K1

那么所有 K ≥ 50 K\geq 50 K50的情况都是囚犯没救的情况,有救的情况为
P = 1 − 1 100 − 1 99 − ⋯ − 1 51 = 31.2 % P = 1-\frac{1}{100}-\frac{1}{99}-\dots-\frac{1}{51} = 31.2\% P=11001991511=31.2%

拓展到2n个囚犯

即使拓展到2n个囚犯,也是采取相同的策略,则成功概率为
P = 1 − 1 2 n − 1 2 n − 1 − ⋯ − 1 n + 1 P = 1-\frac{1}{2n}-\frac{1}{2n-1}-\dots-\frac{1}{n+1} P=12n12n11n+11
根据调和级数的欧拉和
∑ n = 1 k 1 n = ln ⁡ k + γ + ϵ k \sum_{n=1}^k\frac{1}{n} = \ln k + \gamma +\epsilon_k n=1kn1=lnk+γ+ϵk
其中是 γ \gamma γ欧拉-马歇罗尼常数,而 ϵ k \epsilon_k ϵk约等于 1 2 k \frac{1}{2k} 2k1,并且随着 k k k 趋于正无穷而趋于 0。这个结果由欧拉给出。
P = 1 − 1 2 n − 1 2 n − 1 − ⋯ − 1 n + 1 = 1 − ( 1 2 n + 1 2 n − 1 + ⋯ + 1 n + 1 ) = 1 − ( 1 2 n + 1 2 n − 1 + ⋯ + 1 1 − ( 1 n + 1 n − 1 + ⋯ + 1 1 ) ) = 1 − ( ln ⁡ 2 n − ln ⁡ n ) = 1 − ln ⁡ 2 = 30.68 % \begin{aligned} P &= 1-\frac{1}{2n}-\frac{1}{2n-1}-\dots-\frac{1}{n+1} \\ &=1 - (\frac{1}{2n}+\frac{1}{2n-1}+\dots+\frac{1}{n+1}) \\ &=1 - (\frac{1}{2n}+\frac{1}{2n-1}+\dots+\frac{1}{1} - (\frac{1}{n}+\frac{1}{n-1}+\dots+\frac{1}{1})) \\ &=1 - (\ln 2n - \ln n) \\ &=1 - \ln2 = 30.68\% \end{aligned} P=12n12n11n+11=1(2n1+2n11++n+11)=1(2n1+2n11++11(n1+n11++11))=1(ln2nlnn)=1ln2=30.68%文章来源地址https://www.toymoban.com/news/detail-438864.html

到了这里,关于百囚犯问题(100 prisoners problem)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • POJ - 2282 The Counting Problem(数位DP 计数问题)

    Given two integers a and b, we write the numbers between a and b, inclusive, in a list. Your task is to calculate the number of occurrences of each digit. For example, if a = 1024 a = 1024 a = 1024 and b = 1032 b = 1032 b = 1032 , the list will be 1024 1024 1024 1025 1025 1025 1026 1026 1026 1027 1027 1027 1028 1028 1028 1029 1029 1029 1030 1030 1030 1031 10

    2023年04月17日
    浏览(27)
  • Boundary Value Problem (BVP) 两点边界最优控制问题

    一维的无人机系统,考虑起点的状态以及终点的状态,所以只考虑一个X轴,考虑这个轴上的参数的变化。现将X(t)进行多项式的参数化。最高次数可以自己选择,看提供的自由度。 通过初始条件来求得以上方程的解,但是因为给出的两个解,最后肯定会求得很多的解, 那么困

    2023年04月14日
    浏览(36)
  • python实现Dijkstra算法求解最短路径问题(Shortest Path Problem)

    最短路问题(Shortest Path Problem,SPP)是 图论 的一个经典问题,其目的在于寻找网络中任意两个节点间的最短路径,这里的最短可以衍生为距离最短、费用最小、时间最短等一系列度量。当前的涌现了很多最短路径的变种,如带资源约束的最短路径问题(Shortest Path Problem wit

    2024年02月09日
    浏览(26)
  • 0-1背包问题(Knapsack Problem)-动态规划方法(C语言递归和迭代)

    前言 背包0-1问题属于典型的求最大/最小子集问题范畴,它不像rod-cutting或matrix-chain-multiplication等问题,求解过程是按照单位等增或单位递减,0-1背包问题属于在集合范围内的某一个值,而且这些值大概率不是连续值。 问题描述 假定有N件物品,每件物品具有特定的价值value

    2024年02月06日
    浏览(31)
  • Python 二叉树算法解决二维装箱问题 (2d bin-packing problem)

    二维装箱问题 应用领域比较多,游戏开发中主要应用于贴图合并。 最近在调研图集打包工具的算法实现,看到一种实现方式是通过二叉树算法,比较朴素且有效,则立刻写用例简单测试验证下。 测试结果: (打包后的图用随机纯色色块代替) 测试代码如下:

    2024年02月16日
    浏览(26)
  • 解决:STM32CubeMX生成MDK代码提示项目有问题(...have a problem)

    通过STM32CubeMX进行STM32项目创建过程中,在生成MDK代码时提示\\\"The Code is successfully generated under C:/TEST/LED but MDK-ARM V5 Project genera have a problem\\\"的解决办法: 1、检查项目名称是否为存在特殊字符、中文等,例如:例题1; 2、检查项目创建路径是否存在特殊字符、中文或空格等,例如

    2024年02月16日
    浏览(28)
  • 【运筹优化】子集和问题(Subset Sum Problems , SSP)介绍 + 动态规划求解 + Java代码实现

    子集和问题(Subset Sum Problems , SSP),它是复杂性理论中最重要的问题之一。 SSP会给定一组整数 a 1 , a 2 , . . . . , a n a_1,a_2,....,a_n a 1 ​ , a 2 ​ , .... , a n ​ ,最多 n n n 个整数,我们需要判断是否存在一个非空子集,使得子集的总和为 M M M 整数?如果存在则需要输出该子集。

    2024年01月17日
    浏览(33)
  • curl请求https证书过期的问题:SSL certificate problem: certificate has expired

    写了两个系统,系统A使用 curl 去请求系统B,但是不知道为什么会报错 SSL certificate problem: certificate has expired 系统A使用了 https 但是系统B没有使用 https 系统A的SSL并未过期,而且在两个系统在同一台服务器时并未报错,所以不是SSL证书的问题 解决办法: 关闭curl对证书验证,可

    2024年02月16日
    浏览(37)
  • 多旅行商问题(Multiple Traveling Salesman Problem, MTSP):单仓库多旅行商问题及多仓库多旅行商问题(含动态视频)

    多旅行商问题(Multiple Traveling Salesman Problem, MTSP)是著名的旅行商问题(Traveling Salesman Problem, TSP)的延伸,多旅行商问题定义为:给定一个𝑛座城市的城市集合,指定𝑚个推销员,每一位推销员从起点城市出发访问一定数量的城市,最后回到终点城市,要求除起点和终点城

    2023年04月09日
    浏览(30)
  • 【运行问题】Some problems were encountered while building the effective model for

    问题出现情况 ,在我构建springboot的mybatispuls的测试时,出现了该问题,搜寻了各种解决方案,相关方案如下,按照不同的方式自己对照一下可能出现在那。 第一种可能问题 :添加了 重复的依赖jar包 检查自己的依赖是否有重复的jar包导入,参考如下连接 (42条消息) Some probl

    2024年02月15日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包