设万维读者为首页 广告服务 联系我们 关于万维
简体 繁体 手机版
首页 新闻 视频 博客 论坛 分类广告 购物
版主:阿飞的剑
万维读者网 > 茗香茶语 > 帖子
定理:囚徒放风问题的正解(修正版)
送交者: 定理 2009年12月11日12:01:56 于 [茗香茶语] 发送悄悄话
先重复彩虹前天转贴的囚徒放风题:

有100个无期徒刑囚徒,被关在100个独立的小房间,互相无法通信。每天会有一个囚徒被随机地抽出来放风,随机就是说可能被抽到多次。放风的地方有一盏灯,囚徒可以打开或者关上,除囚徒外,没有别人会去动这个灯。每个人除非出来防风,是看不到这个灯的。 
一天,全体囚徒大会,国王大赦,给大家一个机会:如果某一天,某个囚徒能够明确表示,所有的囚徒都已经被放过风了,而且的确如此,那么所有囚徒释放;如果仍有囚徒未被放过风,那么所有的囚徒一起处死! 
囚徒大会后给大家20分钟时间讨论, 如果你是其中的一员,应怎样利用这20分钟的时间来制定一个切实可行的办法呢?
如果说是某一个囚犯一直无法抽到出去放风,那他们就确实无法出去了。不需要考虑这样的可能哦。
这题确实比较难。补充一下:不要去考虑什么犯人突然死亡的意外因素。是纯粹的理论题。

昨天我贴的,错了。现改为如下解法:

一、第一个放风者,无论灯的初始态,都把灯调到‘开’。并设定X=1
二、对后来的任何一个放风者:
1。如果在这此放风之前也放过风而且碰过灯,则不碰灯;
2。否则如果进来时看见灯是‘关’则不碰灯;
3。如果从未碰过灯(尽管以前也许放过风)而且进来时灯是‘开’,则关灯。
三、第一个放风者,不放风一段时间后再回来放风时,
1。如果灯是‘关’,证明上次紧接他而来放风的人当中,有一个从未碰过灯的人,于是他把X加一,并把灯打开;
2。如果灯是‘开’,证明他上次走后,一直没人碰过灯,于是他不碰灯,也不变X的值。
3。等到X=99时,他就宣告‘所有100个囚徒都已放过了风’,解放大吉。

按这个程序,囚徒不可能会出错。因为除了第一个放风者,其他人每人都不会碰灯多于一次,而每次灯从开变成关,都是因为这些‘其他人’碰了灯。而且,囚徒出狱的概率,随着日久天长和各囚徒的万寿无疆,无穷逼近百分之百。这是因为一个囚徒若非第一个放风者(叫他Z),他没机会碰灯的事件,小于他没被抽中放风或者他被抽中而刚好排在另一个不是Z的人后面。

在此得鸣谢一下直言。他(据彩虹说是google抄来)的解法不冒出错的风险,但囚徒出狱的概率,不能逼近百分之百,因为每个囚徒(第一个除外)只能在第一次放风时才允许碰灯。于是有可能有些囚徒第一次放风时因为没有机会碰,以后再放风时想碰都不允许碰。例如:

只有3个囚徒:全一、一全、一套。

只要在开头四天内出现如下的情形,直言的办法就永无出头之日了:

第一天:全一放风,于是灯打开。
第二天:一全放风,屁事都不干。
第三天:一套放风,也是屁事都不干。
第四天:全一放风,见灯仍是开着,知到起码另一人放过风,但不知是否其他两人都来过。把灯关上。
然后:不论一全和一套各自再来放风多少次,他们都是不敢碰灯,按你的那个笨办法。所以全一的世界观永远只是停留在第四天的水平。

我的办法,把他的‘从未放过风’改成了‘从位碰过灯’。
0%(0)
标 题 (必选项):
内 容 (选填项):
实用资讯
回国机票$360起 | 商务舱省$200 | 全球最佳航空公司出炉:海航获五星
海外华人福利!在线看陈建斌《三叉戟》热血归回 豪情筑梦 高清免费看 无地区限制