100 名(或偶数 2N :-))囚犯在一个房间 A。他们的编号从 1 到 100。
一个接一个(从 1 号囚犯到 100 号囚犯,按顺序),他们将被带入一个房间 B,里面有 100 个箱子(编号从 1 到 100)等待他们。(封闭的)框内是从 1 到 100 的数字(框内的数字是随机排列的!)。
一旦进入房间 B,每个囚犯可以打开 50 个盒子(他选择打开哪个)。如果他在这 50 个盒子中的一个中找到分配给他的号码,则囚犯可以走进 C 房间,并且在下一个从 A 房间走进 B 房间之前,所有的盒子都会再次关闭。否则,所有囚犯(在房间 A、B 和 C) 被杀死。
在进入房间 B 之前,囚犯可以就策略(算法)达成一致。房间之间没有办法交流(B房间也不能留下任何信息!)。
有没有一种算法可以最大化所有囚犯幸存的概率?该算法实现的概率是多少?
笔记:
随机做事(你称之为“无策略”)确实为每个囚犯提供了 1/2 的概率,但是他们所有人幸存的概率是 1/2^100(这是相当低的)。一个人可以做得更好!
不允许囚犯重新排列箱子!
当囚犯第一次找不到他的号码时,所有囚犯都会被杀死。并且无法进行交流。
提示:一个人平均可以救30多个囚犯,比(50/100) * (50/99) * [...] * 1要多得多