有100个囚犯分别关在100间牢房里。牢房外有一个空荡荡的房间,房间里有一个灯泡,以及控制这个灯泡的开关。初始时,灯是关着的。看守每次随机选择一名囚犯进入房间,但保证每个囚犯都会被选中无穷多次。如果在某一时刻,有囚犯成功断定出所有人都进过这个房间了,所有囚犯都能释放。游戏开始前,所有囚犯可以聚在一起商量对策,但在此之后,它们唯一可用来交流的工具就只有那个灯泡。他们应该设计一个怎样的协议呢?
这个经典的问题在网上转载无数,题目描述被好事者们改得天花乱坠,甚至加进了“这盏灯永远有充足的能源供应”、“如果灯泡坏了或是电路出了故障会马上修好”等条件,剥掉了“算法问题”的外壳,填补了本不存在的漏洞,让更多的人动起了脑筋。在论坛上,每次贴出这个问题,总会引起一大群人论战。但很不幸的是,这个题目的来源至今仍是个谜。据目前的已知情况推测,这个题目最早来源于伯克利大学的电气工程荣誉学会,时间大概是2001年。在2002年7月,IBM官方网站上的Ponder This趣题栏目介绍了这个题目,“囚犯与灯泡”一炮走红,随即遍布网络的各个角落。2003年,《数学情报》(Mathematical Intelligencer)杂志上发表了一篇题为《一百个囚犯和一个灯泡》(One hundred prisoners and a lightbulb)的论文,也让囚犯们正式引起了数学家的关注。
想必很多人知道这个问题的标准答案了。 阅读全文 »