魔方吧·中文魔方俱乐部

 找回密码
 注册
搜索
热搜: 魔方
查看: 28952|回复: 8
打印 上一主题 下一主题

100囚徒难题解法 [复制链接]

Rank: 3Rank: 3

积分
644
帖子
192
精华
4
UID
10618
性别
跳转到指定楼层
1#
发表于 2008-11-18 19:57:48 |只看该作者 |倒序浏览
刚刚看到本版有noski发的点击率超过15000的100囚徒难题http://bbs.mf8-china.com/viewthread.php?tid=699&extra=page%3D1这个贴子,在这个相对冷清的版块里,算是很难得了。我说一下我的解法。有两种思路,一种是保命思路,即只有在确定不死的前提下,才向国王提出特赦,hw236的大体思路是对的,但是具体做法还可以更优化。做法就是首先第一天先打开那盏灯,然后在第2天到第100天这个过程中,如果有囚徒是第2次或更多次出来放风时,则关闭那盏灯,因为只要有一个人是2次以上出来放风,就意味着所有人都不可能在100天之前出来了。然后再约定在第101天放风的囚徒,将灯点亮,所有人的计数都清零,从101到300天之间,如果有人是3次或更多次出来放风(从101天清零的数算起)则将灯熄灭,这就意味着所有人都不可能在300天之前出来。依次类推,在第301天放风的囚徒,将灯点亮,所有人的计数再清零,在后301到600天之间,如果有人是4次或更多次出来放风(从301天清零的数算起)则将灯熄灭,这就意味着所有人都不可能在600天之前出来。以上的策略是基于鸡兔同笼法则,用这种试错的方式,估计出来的日期会提前很多。而考率到100天,200天之内出来的可能性很低,大家也可以约定从500天或用更长的日期做为一个特赦周期。
       第二种思路是赌博思路,就是说不保证肯定可以活命,而是权衡利弊,只要活命的可能性大于一个概率,就提出特赦,假设前提是每天所有人放风的机率是一样的,都为0.01。在第X天,X>=100时,所有囚徒都至少出来过一次的概率为:
       (100^x - 99^x - 98^x -. .. 1^x) / 100^x。

       下面是我编写的用于计算在第x天可以成功特赦的php程序。
<?
$MaxDaysExpectedOut = 1000;
$TotalGuys = 100;

for ($DaysExpectedOut = 100; $DaysExpectedOut <= $MaxDaysExpectedOut; $DaysExpectedOut += 100)
{
  $CantOutRatio = 0;
   
  for ($Guys = 1; $Guys < $TotalGuys; $Guys ++)
  {
   $CantOutRatio += exp(log($Guys / $TotalGuys) * $DaysExpectedOut);
  }
  
  $SuccessOutRatio = 1 - $CantOutRatio;

  echo "<p>The ratio of ".$TotalGuys." guys would success out of the prison after ".
  $DaysExpectedOut." days  is ".$SuccessOutRatio."</p>";
}
?>

结果为:
The ratio of 100 guys would success out of the prison after 100 days is 0.427885933629
The ratio of 100 guys would success out of the prison after 200 days is 0.845846692964
The ratio of 100 guys would success out of the prison after 300 days is 0.948514054585
The ratio of 100 guys would success out of the prison after 400 days is 0.9817349154
The ratio of 100 guys would success out of the prison after 500 days is 0.993388248453
The ratio of 100 guys would success out of the prison after 600 days is 0.997589538541
The ratio of 100 guys would success out of the prison after 700 days is 0.99911896674
The ratio of 100 guys would success out of the prison after 800 days is 0.999677681922
The ratio of 100 guys would success out of the prison after 900 days is 0.999882043503
The ratio of 100 guys would success out of the prison after 1000 days is 0.99995682707

可以看到第1000天之后,只要是国王不有意为难大家的话,应该都可以出去了,500天的话其实也差不多,要是图个刺激,一定要在最短时间内出狱的话,其实第100天就申请特赦成功的机率也是很大的。

Rank: 2

积分
330
帖子
290
精华
0
UID
41800
性别
2#
发表于 2008-11-18 20:22:11 |只看该作者
乱码好多啊,。。。。。。。
假翠西,真麦格雷迪

使用道具 举报

Rank: 2

积分
330
帖子
290
精华
0
UID
41800
性别
3#
发表于 2008-11-18 20:22:28 |只看该作者
乱码好多啊,。。。。。。。
假翠西,真麦格雷迪

使用道具 举报

透魔

有空了学学4D二阶

Rank: 6Rank: 6

积分
5924
帖子
3936
精华
0
UID
1290
兴趣爱好
结构
理论

魔方破解达人 八年元老

4#
发表于 2008-11-18 20:27:01 |只看该作者
原帖由 javidliu 于 2008-11-18 20:22 发表
乱码好多啊,。。。。。。。


那不是乱码吧,应该是lz的程序

使用道具 举报

Rank: 1

积分
172
帖子
142
精华
0
UID
50749
性别
5#
发表于 2008-11-18 20:40:49 |只看该作者
LZ好强啊   加油啊
爱魔方

使用道具 举报

Rank: 2

积分
440
帖子
375
精华
0
UID
17884
性别
6#
发表于 2008-11-18 21:14:08 |只看该作者
沙发和板凳的回复太雷人了~~

使用道具 举报

银魔

小欣然的爸爸

Rank: 7Rank: 7Rank: 7

积分
37843
帖子
34374
精华
15
UID
16477
性别
保密

论坛建设奖 爱心大使 八年元老

7#
发表于 2008-11-18 21:18:21 |只看该作者
坐地上和LZ学习一下
天津1群11471969,2群5834223
3群62462688,4群62462702
5群70735234,6群33712046
7群12240584,8群29198783
9群62974165,欢迎加入!

使用道具 举报

铜魔

鱼儿

Rank: 8Rank: 8

积分
20516
帖子
19704
精华
0
UID
28712
性别

六年元老

8#
发表于 2008-11-18 21:23:34 |只看该作者
楼主编写的程序看不到哦,这个题好像有人发过哦,
你即使是一条搁浅在沙滩上的鱼,也必须要学会行走。QQ:351796610已满,请加MSN:sun-shine-yu@live.cn
http://shop65338937请勿打广告com/晨曦魔方空间 全场特价

使用道具 举报

Rank: 2

积分
484
帖子
458
精华
0
UID
42511
性别
保密
9#
发表于 2008-11-18 22:01:33 |只看该作者
乱码好多啊,。。。。。。。

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|魔方吧·中文魔方俱乐部

GMT+8, 2025-4-19 05:46

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部