问题描述

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

在某个法制不健全的国家,监狱中有编号从1到100的100名囚犯,监狱长给了他们最后一次机会:

  -----一个房间里有100个抽屉,监狱长随意把1到100这100个号码放到100个抽屉里,每个抽屉一张

  -----囚犯们逐个进入房间,每人可以任意打开50个抽屉,之后关上

  -----如果每位囚犯都在这50个抽屉中找到了他的号码,那么所有的囚犯都会被赦免;如果有人没有找到他的号码,那么所有的囚犯都会被处死

  -----在第一个囚犯进入房间之前,囚犯们允许在一起讨论开抽屉的“策略”;但一旦第一个囚犯进入房间,他们之间就被禁止交流

设计出一种策略,使得尽可能被赦免

问题分析

如果纯粹随机开抽屉,那么所有人被赦免的概率是(50 / 100)^100 ≈ 8*10^-31,可见这个概率非常的小。

囚犯有什么好一些的策略?

下面给出已经被证明的最优策略

循环跟踪策略

每名囚犯进入房间后都——
1、先打开自己号码的抽屉
2、如果这个抽屉有他自己的号码,他就成功了
3、否则,抽屉里会有另外一个号码,然后他打开这个号码的抽屉
4、不断地重复第2步和第3步,直到他已经找到自己的号码,或者已经打开50个抽屉都没找到(那全体就失败了)

 示例1:

考虑一个迷你版的,把100改成8,50改成4,抽屉放纸条的方式按如下所示:

策略的具体实现如下:

1号囚犯打开1号抽屉发现8号纸条、打开8号抽屉发现4号纸条、打开4号抽屉发现6号纸条、打开6号抽屉发现1号纸条-----命悬一线有惊无险
2号囚犯开2号-->开5号-->开3号-----找到
3号囚犯开3号-->开2号-->开5号-----找到
4号囚犯开4号-->开6号-->开1号-->开8号-----找到
5号囚犯开5号-->开3号-->开2号-----找到
6号囚犯开6号-->开1号-->开8号-->开4号-----找到
7号囚犯开7号-----找到
8号囚犯开8号-->开4号-->开6号-->开1号-----找到大家都被赦免了!

示例2:

抽屉放纸条的方式如下:

策略的具体实现如下:

第一个进去的囚犯开1号-->开5号-->开8号-->开2号----不是,,,( ¯ □ ¯ )……(x___x)

进一步分析:

抽屉的编号和抽屉里的数字形成置换,根据定理任意置换可唯一的表示成若干不相交轮换的复合(积).

于是示例1中的置换可写成:(1,8,4,6)(2,5,3)(7),示例2中的置换可写成:(1,5,8,2,7)(3,4,6)

于是容易得出结论:如果 i 所在的轮换长度不超过50,那么第 i 号囚犯一定可以找到自己的号码纸条;如果 i 所在的轮换长度超过50,那么第 i 号囚犯一定找不到自己的号码纸条。

几点标注

1、其实按照这个策略,当前50个囚犯成功时,后50已经不必再试就知道他们必然获释

2、在前50个人中如果有人是第50个抽屉才发现自己的号码,那么后面的囚犯都不必再试

最优策略下的成功概率

实质就是在 100! 种(n种元素的置换有n!种)中,有多少置换存在长度大于50的轮换?

易知任意一个置换分解后至多存在一个长度大于50的置换.

我们假定置换下面假定置换 存在长度大于50的轮换 ,其长度为 l.

  ------轮换中的元素有C(100,l)种可能

  -------选定l个元素后,可以形成(l - 1)!种不同的轮换(即圆排列数)

  -------剩下的(100 - l)个元素可形成(100 - l)!种置换

  -------于是这样的置换一共有C(100,l) * (l - 1) * (100 - l) = 100! / l种

囚犯们遇到这样的置换的概率是

所以成功的概率是1 - 0.6882 = 0.3118.

渐近分析

当把100改做2n,50改做n,该策略失败的概率为Σ2nn+1(1/l),记H(n) = 1 + 1/2 + 1/3 +...+1/n

成功的概率 = 1 - (H2n - Hn) = 1 - (H2n - ln(2n)) + (Hn - ln(n)) - ln2

已知,于是

总结

最优策略虽然很容易理解,但却不好证明,以后会证了再补充吧/இ௰இ!

参考链接:

https://en.wikipedia.org/wiki/100_prisoners_problem

https://zhuanlan.zhihu.com/p/31211827?edition=yidianzixun&utm_source=yidianzixun&yidian_docid=0HzDk3uW

中国大学mooc  刘铎  离散数学

转载于:https://www.cnblogs.com/lfri/p/9872617.html

置换与轮换——百囚犯问题相关推荐

  1. 百囚犯问题(100 prisoners problem)

    百囚犯问题(100 prisoners problem) 文章目录 百囚犯问题(100 prisoners problem) 问题描述 策略选择 拓展到2n个囚犯 问题描述 Philippe Flaj ...

  2. 《趣题学算法》—第1章1.5节置换与轮换

    本节书摘来自异步社区<趣题学算法>一书中的第1章1.5节置换与轮换,作者徐子珊,更多章节内容可以访问云栖社区"异步社区"公众号查看. 1.5 置换与轮换 设有n个两两不 ...

  3. 置换怎么表示成轮换_§2.3 置换群

    让我们暂时先放下上节笔记中循环群美丽的性质,来专心看看置换群吧. 不得不说,置换群只是群的表现形式之一,本身不具有特殊的性质.但是,由于置换群所含内容的广泛性,它可以和其余所有的群(只能是有限群)形成 ...

  4. HDU3923-Invoker-polya n次二面体

    polya定理.等价类的个数等于∑颜色数^置换的轮换个数 不可翻转的串当中.直接计算∑m^(gcd(n,i)) ,这里gcd(n,i)就是第i个置换的轮换数. 翻转的情况再分n奇偶讨论. n次二面体都 ...

  5. POJ 2409 Let it Bead (Polya定理)

    题意 用k种颜色对n个珠子构成的环上色,旋转翻转后相同的只算一种,求不等价的着色方案数. 思路 Polya定理 X是对象集合{1, 2, --, n}, 设G是X上的置换群,用M种颜色染N种对象,则不 ...

  6. 《离散数学》双语专业词汇表 名词术语中英文索引

    <离散数学>双语专业词汇表 set:集合 subset:子集 element, member:成员,元素 well-defined: 良定,完全确定 brace:花括号 represent ...

  7. hdu 1802 Black and white painting(置换群)

    题目链接:hdu 1802 Black and white painting 题意: 有一个n*n的格子,然后用c种颜色去涂,问你有多少种方案. 能旋转,反射的算一种方案. 题解: polya定理的经 ...

  8. 操作系统面试题(史上最全、持续更新)

    尼恩面试宝典专题40:操作系统面试题(史上最全.持续更新) 本文版本说明:V28 <尼恩面试宝典>升级规划为: 后续基本上,每一个月,都会发布一次,最新版本,可以联系构师尼恩获取, 发送 ...

  9. 近世代数 笔记与题型连载 第八章(置换群)

    文章目录 基本概念 1.置换 2.置换的复合 3.置换群 4.置换的轮换表示 5.轮换的逆 6.轮换的不相交 7.轮换的阶 8.对换 9.置换的奇偶性 10.置换的类型 11.正多边形旋转翻转构成的群 ...

最新文章

  1. springboot数据源配置属性
  2. 为博客园博文添加目录的两种方法
  3. 【Javascript】 == 、=== 区别
  4. [codevs 1912] 汽车加油行驶问题
  5. KMP算法理解(转)
  6. iOS tabview 适配问题
  7. 看完这篇文章保你面试稳操胜券——基础篇(html/css)
  8. netbeans代码提示_Java代码现代化的七个NetBeans提示
  9. neo4j︱neo4j批量导入neo4j-import (五)
  10. Android 大漠插件功能,猩猩助手安卓模拟器怎么用大漠插件
  11. 【数据采集】-目前比较流行的几种数据采集方式
  12. 图书所属类别用mysql_Java图书信息查询
  13. 数据库优化---空间换时间优化
  14. Activity切换闪屏问题
  15. Vuetify学习笔记(一)gird栅格系统
  16. oracle软件工程,.Net软件工程师学用Oracle系列(9):系统函数(上)
  17. Ubuntu安装以太坊开发环境
  18. 专访金榕:四年蜕变,阿里iDST是如何登上浪潮之巅的?
  19. plupload 中文API
  20. 12月17日云栖精选夜读 | 用PrettyPrinter,让Python输出更漂亮,你值得拥有

热门文章

  1. 蜘蛛纸牌 java代码_源代码-Java实现蜘蛛纸牌.doc
  2. 一条SQL语句实现查询每个部门中年龄最大的员工信息
  3. 达梦之路——两种方式部署DM7备份作业
  4. SparkML之回归(二)岭回归和Lasso阐述及OLS,梯度下降比较
  5. 大IPD之——学习华为战略人力资源管理:从职能管理到业务伙伴(十五)
  6. NVIDIA宣布RAPIDS、医学影像应用和面向自动驾驶汽车的驾驶模拟器
  7. 康托展开和逆康托展开
  8. Springboot毕设项目大学生勤工俭学系统09i5rjava+VUE+Mybatis+Maven+Mysql+sprnig)
  9. 一位非科班,台湾前端妹子的硅谷之路
  10. java实现小程序开发(一)