红眼睛与蓝眼睛

问题引入

知乎上看到这样一个问题

一个岛上有100个人,其中有5个红眼睛,95个蓝眼睛。这个岛有三个奇怪的宗教规则。 1. 他们不能照镜子,不能看自己眼睛的颜色。 2. 他们不能告诉别人对方的眼睛是什么颜色。 3. 一旦有人知道了自己是红眼睛,他就必须在当天夜里自杀。

某天,有个旅行者到了这个岛上。由于不知道这里的规矩,所以他在和全岛人一起狂欢的时候,不留神就说了一句话:【你们这里有红眼睛的人。】

最后的问题是:假设这个岛上的人足够聪明,每个人都可以做出缜密的逻辑推理。请问这个岛上将会发生什么?

我本来是很怕做这种逻辑题的,但是的票最高的回答中有这样的一句话:

「大声说出来」跟「彼此心照不宣」有着决定性的区别。

其中充满着的正能量让我尝试去理解这个题目。于是经过一番思考,总结出了一点自己的见解。

思路

下面设k为红眼睛的人数,Ri(i=1,2,…,k)为红眼睛者,以K=1、k=2、k=3三种情况为例,展开进行阐述:

k = 1

宣告前

第一天,R1看到了99个蓝眼睛的人,但他不知道自己是红眼睛(他不确定这个岛上有红眼睛),也无法知道自己是红眼睛,所以R1不会自杀。 蓝眼睛们各自看到了一个红眼睛和98个蓝眼睛,但是不知道自己是不是红眼睛,由于没有人自愿自杀,所以这些蓝眼睛们都作出了自己不是红眼睛的推断,于是他们会等待一天。如果明天R1自杀了,那么确定自己就是蓝眼睛。如果没有人自杀,由于无法排除是由于R1不知道存在红眼睛造成的,所以蓝眼睛们不知道自己是否是红眼睛,于是他们不会自杀。

第二天,各人重复第一天的推理,所以相安无事,一直没有人自杀。也就是说,“没有人自杀”这个事件不能令他们确定红眼睛的存在,于是系统达到了平衡。

宣告后

第一天,R1看到了99个蓝眼睛的人,知道了自己是红眼睛,于是当天晚上自杀了。 第二天,剩下来的99个蓝眼睛看到有红眼睛自杀了,因此知道这个自杀的红眼睛是因为看到除自己以外的都是蓝眼睛才会自杀,也就是知道自己不是红眼睛,于是他们快乐地生活下去。

k = 2

宣告前

第一天,R1看到了1个红眼睛的人(R2)和98个蓝眼睛的人,但他不知道自己是不是红眼睛,所以R1就想:“如果自己是蓝眼睛,那么就只有一个红眼睛,那么R2看到的都是蓝眼睛。如果他知道至少存在一个红眼睛,那么明天他就会自杀(因为今天他看到的全部是蓝眼睛),那么我就是蓝眼睛。如果他不知道至少存在一个红眼睛,那么他就会作出全部人都是蓝眼睛的推断,那么今天晚上他不会自杀。由于今天不确定我是不是红眼睛,所以今天我不会自杀。”。

同样地,R2也这么想。

其余的蓝眼睛各自看到了两个红眼睛(R1和R2)和97个蓝眼睛,假设其中一个为B1。B1不知道自己是不是红眼睛。假设B1认为自己是蓝眼睛,那么,不失一般性,B1认为其中一个红眼睛R1只看到了另一个红眼睛R2。由于R1不会自愿自杀,所以R1会作自己是蓝眼睛的假设。也就是R1今晚不会自杀(R1会像K=1时的蓝眼睛那样推理)。B1无法根据现有条件判断自己是不是红眼睛,所以B1不会自杀。

第二天,R1发现R2没有自杀,但是他不知道R2知不知道至少存在一个红眼睛,所以R1无法确定R2第二天没有自杀是不是因为这个原因,也就是R1无法确定自己是不是红眼睛,所以第二天R1也不会自杀。同理R2也这样想。

蓝眼睛们无法根据第二天R1、R2都没有死亡推断出“他们没死是因为他们都看到了2个红眼睛,因此我是红眼睛”这个结论,因此不知道自己是不是红眼睛,所以蓝眼睛们没有行动。

于是他们都无法得知自己是不是红眼睛,于是快乐地生活下去。

宣告后

第一天,R1看到了1个红眼睛的人(R2)和98个蓝眼睛的人,但他不知道自己是不是红眼睛,所以R1就想:“如果自己是蓝眼睛,那么就只有一个红眼睛,那么R2看到的都是蓝眼睛,那么明天他就会自杀。也就是明天如果R2自杀的话,我就是蓝眼睛,如果R2没自杀,那么我就是红眼睛”。所以R1这天晚上没有自杀。

同样地,R2也像R1这样想,所以R2这天晚上没有自杀。

其余蓝眼睛各自看到了两个红眼睛(R1和R2)和97个蓝眼睛,假设其中一个为B1。B1不知道自己是不是红眼睛,但他可以这样推理:“假设我是蓝眼睛,那么其中一个红眼睛R1只看到了另一个红眼睛R2。由于R1不会自愿自杀,所以R1会作自己是蓝眼睛的假设。也就是R1今晚不会自杀,他会等到明天看R2会不会自杀。同理当天R2也会这样想,大家都按兵不动,所以第一天晚上没有人自杀。那么如果第二天晚上R1和R2自杀了,那么说明只有两个红眼睛,那么我就是蓝眼睛了,如果没有自杀,那么说明R2和R1也看到了2个红眼睛,R1和R2也在等待事态发展(也像自己那样推理)而没有行动那么我就是红眼睛了”。B1当天没有自杀。

第二天,R1,R2发现对方没有自杀,于是知道自己是红眼睛,于是就在晚上自杀了。蓝眼睛们在等待R1和R2今天会不会自杀。

第三天,其余的98个蓝眼睛知道了两个红眼睛自杀了,所以知道自己是蓝眼睛,于是他们快乐地生活下去。

k = 3

宣告前

红眼睛们各自看到2个红眼睛和97个蓝眼睛,他们像宣告前K = 2时的蓝眼睛那样推理,所以不会自杀。蓝眼睛们各自看到3个红眼睛和96个蓝眼睛,于是他们根据这3个红眼睛的行动来确定自己的状态。但由于无法“知道R1知道R2知道R3知道存在红眼睛”,所以蓝眼睛们一直无法确定“今天三个红眼睛都没自杀是因为各自都看到了三个红眼睛,都在等待,所以我是红眼睛”这个结论,所以不会自杀。

宣告后

第一天,红眼睛们各自看到两个红眼睛和97个蓝眼睛,他们像宣告后K = 2时的蓝眼睛那样推理。直至第三天,红眼睛们发现依然没人自杀。不失一般性,以R1为例,R1可推断出R2,R3都看到了2个红眼睛,都在等待事态发展,就是说存在三个红眼睛,从而推断出自己是红眼睛,于是R1在当晚就自杀了。同理R2,R3也自杀了。蓝眼睛们在第四天发现看到的三个红眼睛都自杀了,由此推断自己是蓝眼睛,于是快乐地生活下去。

总结

于是,我们可能归纳出一个可能的结论:旅行者宣告红眼睛存在前,大家相安无事;旅行者宣告红眼睛存在后,第k天时,k个红眼睛将在晚上自杀。 该结论可以用归纳法证明,详细可以看这里,我就不详述了。在这里我说一下自己的见解:

  1. 没人愿意自杀,所以各人的推理都是以自己是蓝眼睛为起点。
  2. 旅行者宣告红眼睛的存在后,某个看到k个红眼睛的人O会这样想:“眼前的其中一个红眼睛R1会看到比我少一个红眼睛(O认为自己是蓝眼睛)”,而且O认为R1认为R2也是像自己那样想的,同样地O认为R1认为R2认为R3也是这样想的…如此层层深入,到最后O认为R1认为R2…Rk-1认为Rk看到的全部是蓝眼睛。

    O要等到第k天才能从R1的行为来判断自己的状态:第二天一早,O知道Rk不会死,O认为R1认为R2认为…Rk-2认为Rk-1认为Rk看到了不止一个红眼睛,O认为R1认为R2认为…Rk-2会根据Rk-1和Rk在第三天存活情况判断自己眼睛的颜色;第三天一早O知道Rk-1和Rk都不会死,O认为R1认为R2认为…Rk-3认为Rk-2认为Rk-1和Rk看到了不止两个红眼睛,O认为R1认为R2认为…Rk-3会根据Rk-2、Rk-1和Rk在第三天存活情况判断自己眼睛的颜色…如此类推。 到了第k天,如果眼前这些红眼睛都没有死,那么O知道了R1和R2和…Rk-1和Rk看到了不止k-1个红眼睛,也就是说自己也是红眼睛,O将会在今晚自杀。如果眼前这些红眼睛全部死了,那么O知道了R1和R2和…Rk-1和Rk看到了k-1个红眼睛,自己是蓝眼睛,所以不会自杀。

  3. 如果旅行者不宣告,那么第二天一早,O知道Rk不会死,但O认为R1认为R2认为…Rk-2认为Rk-1不知道Rk没有死是因为不知道存在红眼睛还是看到了不止一个红眼睛;第三天一早,O知道Rk-1和Rk都不会死,但O认为R1认为R2认为…Rk-2不知道Rk-1和Rk没有死是因为前一天的不确定还是看到了不止两个红眼睛…如此类推,第k天时,O不知道昨天晚上没人自杀是因为前一天的不确定还是有k个红眼睛,所以O不会自杀。

  4. 可以看出,每个人判断自己是红眼睛的逻辑的最深层的条件就是由于存在红眼睛,而且现在我看到其余的人都是蓝眼睛,所以我是红眼睛。这也是整个归纳法的初始条件

有一种不同的观点是:题目中说明岛上有5个红眼睛和95个蓝眼睛,那就是说,每个人都能看到红眼睛,那么旅行者说的“你们这里有红眼睛的人”没有增加任何信息,是一句废话。但我认为:

  1. “每个人都能看到红眼睛”和“你们这里有红眼睛的人”是不等价的,后者还带有“任意一人知道了另一个人知道了…另一个人知道了存在红眼睛”这个信息。
  2. 假设有两个红眼睛,那么岛上每个人都可以看到红眼睛(红眼睛看到一个,蓝眼睛看到两个)。第一天早上,某人看到红眼睛,但是不知道自己是不是红眼睛,所以没有自杀。第二天早上,某个人看到红眼睛没有死,他认为有两种可能导致的:一是自己是蓝眼睛,红眼睛看到全部的都是蓝眼睛(我认为他不知道存在红眼睛),所以红眼睛昨晚没有自杀;二是自己是红眼睛,昨天眼前的这个红眼睛他知道我知道存在红眼睛,没有死是因为他看到我是红眼睛(我认为他知道存在红眼睛),他跟我有同样的疑惑,所以没有自杀。由于这个人不知道哪种推断是正确的,所以他今天不会自杀。造成这种情况的根本原因在于某个人不知道红眼睛知不知道存在红眼睛,而旅行者的话推翻了其中一种可能,所以某个人才能从前一天晚上的自杀情况推断自己是不是红眼睛。
  3. 3、4、5…k个红眼睛的情况也类似,每个人都可以看到红眼睛,但是每个人都作了层层的推断,最终都无法确定造成目前的状态的原因,所以无人自杀。当旅行者宣布存在一个红眼睛时,推理链条的分支被剪掉,可能性消失了,于是发生了自杀事件。
  4. 可以说,旅行者的话使得归纳法中n = 1时的条件成立了,于是整个死亡链条就开启了。