设想你是一名游客,去一座小岛上旅游。

那座小岛很奇怪,岛民之间不能谈论任何关于眼睛颜色的事情,也不能用任何方法(比如照镜子)直接看到自己的眼睛颜色。

如果某个岛民知道了自己的眼睛颜色,他就一定会在第二天中午跳海,这是每个岛民都要遵守的规定

百慕大三角官方辟谣世界未解之谜(一句话引发的惨案)(1)

总共有1000个岛民,其中100个岛民有蓝色眼睛,900个岛民有棕色眼睛

所有岛民都来欢迎你,由于你刚到岛上,并不知道岛上那个关于跳海的规定,于是你当着所有岛民的面说了一句:

你们这座岛上有蓝色眼睛的人。

请问,会不会有岛民因为这句话而跳海?

(注:每个岛民都有无可挑剔的推理能力)

百慕大三角官方辟谣世界未解之谜(一句话引发的惨案)(2)

反直觉的答案

如果把你来到岛上的那一天记为第0天,那么在第100天的中午,所有蓝色眼睛的岛民都会跳海

一句话,就这样引发了一场惨案。

以上就是“标准答案”,是不是很反直觉?

通常的想法是:

岛民本来就知道岛上有蓝眼睛的人,“你”只是把他们都知道的信息重复了一遍,不会有任何影响。

但是,一步步推理,就会发现事情并不简单。

百慕大三角官方辟谣世界未解之谜(一句话引发的惨案)(3)

推理过程

岛(1):

假设岛上只有1个人是蓝色眼睛,把这个人记为A1,那么A1原本不知道岛上有蓝色眼睛的人。

一旦你说出“岛上有蓝色眼睛的人”,就给A1提供了一条新信息,A1可以直接推断出自己的眼睛是蓝色的。

按照规定,A1就会在第1天中午跳海(你来到岛上的那一天是第0天)。

其他人看到A1跳海,就能知道:A1看不到岛上有蓝色眼睛的人,所以其他人的眼睛都不是蓝色(由于其他人并不知道岛民的眼睛一共有几种颜色,所以其他人不会跳海)。

百慕大三角官方辟谣世界未解之谜(一句话引发的惨案)(4)

岛(2):

假设岛上只有2个人是蓝色眼睛,把这2个人记为A1、A2,那么A1、A2原本就知道岛上有蓝色眼睛的人。

你说出“岛上有蓝色眼睛的人”,没有直接给A1、A2提供新信息。

但是,从A2的视角看:

从A1的视角看,结果也是一样的,A1、A2都会观察对方是否会在第1天中午跳海。

最终的结果当然是A1、A2都没在第1天中午跳海,A1、A2就能确定自己是蓝眼睛,会一起在第2天中午跳海

其他人看到A1、A2跳海,就能做出上述分析,得出结论:整个岛上只有2个人有蓝色眼睛。

百慕大三角官方辟谣世界未解之谜(一句话引发的惨案)(5)

岛(3):

假设岛上有3个人是蓝色眼睛,把这3个人记为A1、A2、A3,那么A1、A2、A3原本就知道岛上有蓝色眼睛的人。

你说出“岛上有蓝色眼睛的人”,没有直接给A1、A2、A3提供新信息。

但是,从A3的视角看:

从A1、A2的视角看,结果也是一样的。

最终的结果当然是A1、A2、A3都没在第2天中午跳海,A1、A2、A3就能确定自己是蓝眼睛,会一起在第3天中午跳海

其他人看到A1、A2、A3跳海,就能做出上述分析,得出结论:整个岛上只有3个人有蓝色眼睛。

百慕大三角官方辟谣世界未解之谜(一句话引发的惨案)(6)

岛(n):

推理进行到这一步,我相信大家已经能发现规律。

假设岛上有n个人是蓝色眼睛,你说出“岛上有蓝色眼睛的人”,就会让这n个人在第n天中午跳海。

当然,上面说的是从“上帝视角”看到的结果,如果是从每一个岛民的视角来看,结果就是:

某个岛民能看到k个蓝色眼睛的人,如果这k个人没有在第k天集体跳海,那么自己也是蓝色眼睛的人,应该在第(k 1)天跳海。

岛(100):

文章开头提到的问题,只是让n=100而已,结果就是:所有蓝色眼睛的岛民都在第100天跳海

百慕大三角官方辟谣世界未解之谜(一句话引发的惨案)(7)

递归

上面的推导过程使用的基本思想是:递归。

递归包括:

当然,上面只是展示了递推的过程(岛民们分析的过程),没有展示回归的过程(岛民们验证的过程)。其实回归的过程也很简单。

百慕大三角官方辟谣世界未解之谜(一句话引发的惨案)(8)

岛民们为了确定自己的岛是岛(n),需要在第(n-1)天排除自己的岛是岛(n-1)的可能性。

但是在排除自己的岛是岛(n-1)的可能性之前,需要在第(n-2)天排除自己的岛是岛(n-2)的可能性。

……

继续下去,结果就是在第1天排除自己的岛是岛(1)的可能性。

验证的过程,其实从第1天就开始了,只是到第n天才有了结果。

百慕大三角官方辟谣世界未解之谜(一句话引发的惨案)(9)

共识

我知道,肯定有读者会觉得上面的推理有问题,主要还是因为:

说出“岛上有蓝色眼睛的人”,应该没有提供任何信息,怎么就会让蓝色眼睛的人都知道自己是蓝色眼睛?

说实话,我心里也纳闷,不过“标准答案”是:“岛上有蓝色眼睛的人”,原本是岛民们的“弱共识”,说出“岛上有蓝色眼睛的人”,让“弱共识”变成了“强共识”。

百慕大三角官方辟谣世界未解之谜(一句话引发的惨案)(10)

当然,“蓝眼睛岛难题”中的“强共识”更复杂。

虽然原本“岛上有蓝色眼睛的人”也是“大家都知道大家都知道”的事情,但是“大家都知道大家都知道”的事情也是有“等级”的。

面向全体岛民说出“岛上有蓝色眼睛的人”,其实是把“大家都知道大家都知道”的事情提升了一个“等级”。

关于共识的问题太复杂,我就不多说了。

百慕大三角官方辟谣世界未解之谜(一句话引发的惨案)(11)

最后说一下我的理解。

我认为说出“岛上有蓝色眼睛的人”之前,岛民没有跳海,是因为没有一个明确的“起始时间”。

如果某个岛民能看到k个蓝色眼睛的人,那么他只需要观察k天,就能得出是否应该跳海的结论,但是他不知道要从哪一天开始观察k天。

我感觉这有点像“写程序”,定义变量之后,还要给变量赋初值,不然程序就没法运行。

说出“岛上有蓝色眼睛的人”,相当于赋初值,让“观察k天”的程序开始运行了(仅个人看法)。

大家对于“蓝眼睛岛难题”有什么看法?

百慕大三角官方辟谣世界未解之谜(一句话引发的惨案)(12)

,