蓝眼睛岛问题总结

出处:http://www.fengchang.cc/post/146

大概半年多以前看《科技猿人》提到的一个问题,当时记下了,一直没去看。

这两天抽空看了下,觉得很有意思,特此总结。

 

这是一个经典逻辑问题。

 

问题表述如下:

 

在一个岛上,住着一个部落。这个部落由1000个人组成,这些人有多种眼睛颜色。他们有一种宗教信仰,禁止他们了解自己眼睛的颜色,甚至禁止他们讨论眼睛颜色这个话题。因此,每个居民都能看到所有其他居民的眼睛颜色,但却不能发现自己的眼睛颜色(这里没有镜子或者诸如此类的东西)。如果一个岛民知道了自己的眼睛颜色,那么他们的宗教就会强制他们第二天中午在村庄广场上自杀,让所有人都看到。所有的岛民都非常逻辑和非常虔诚,他们也都知道其他人也非常逻辑和非常虔诚。在这里,‘非常逻辑’的意思是,如果从岛民已知的信息和观察中可以推理出任何结论,那么岛民必定会知道这个结论。

 

实际上,在这1000个岛民中,100个人的眼睛是蓝色,900个人的眼睛是棕色。不过,岛民最初并不知道这些数据。因为,每个人只能看到除自己之外的999个人的眼睛颜色,看不到自己的眼睛颜色。

 

有一天,一个蓝眼睛的游客来到了岛上,并且获得了部落的完全信任。一天晚上,他向整个部落的人致辞,感谢他们的款待。

 

然而,由于不了解当地的风俗习惯,这位游客犯了一个错误,在他的讲话中提到了眼睛的颜色。他说了一句:‘真是有趣呀,在这里能看到像我这样的蓝眼睛的人!’

 

请问,游客的失言对部落会不会产生影响?如果有,是什么影响?

 

通常同一套逻辑的背后可以用不同的故事来表述,但这个故事给我最直观的感觉是太过脱离实际,乍一看有点不明所以。当然,后来也得知对这个逻辑问题也的确有很多不同的描述版本,这都是后话了。

 

我就以这个版本的问题描述进行切入。乍一看这个问题非常奇怪,因为直观的感觉是,岛上如果真有100个人事蓝眼睛,900个人是棕色眼睛,那么显然每个岛民都知道“岛上存在蓝眼睛的人”这个事实。而游客只不过公开说了一句“岛上存在蓝眼睛的人”,这貌似是废话,大家都知道啊,那么看起来应该是什么都不会发生,一切照旧,听起来很有道理!!!

 

然而从另一个角度来看,存在这么一个递推过程:

记游客宣布岛上有蓝眼人的日期为第0日,次日为第1日,以此类推。假如岛上只有1个蓝眼睛的人,他本看不到任何蓝眼睛的人,现在游客宣布存在蓝眼睛的人,那么这个人立刻就会知道这个蓝眼睛的人就是自己,于是他第1日中午就必然会自杀!再假如岛上有2个蓝眼睛的人,他们本来就知道岛上存在至少1个蓝眼睛的人,在游客宣布存在蓝眼睛人之后,他们第0日并不能确定自己是否是蓝眼人,但是到了第1日中午后,情况就不同了,如果第1日中午有人自杀,说明那个自杀的人从来没见过蓝眼人,所以自己不是蓝眼人,反之则说明对方还见过另一个蓝眼人,而那个蓝眼人必然是自己,所以自己将会在第2日中午自杀,该推理同样适用对方,即“中午有人自杀我就不自杀,否则我就于次日中午自杀”。继续假设岛上有3个蓝眼人,同样在第0日,第1日,他虽然知道岛上至少有2个蓝眼人,但他无法确定自己是否也是蓝眼人,但到了第2日则不同,因为如果岛上只有两个蓝眼人(即自己不是),则会出现第2日2个蓝眼人自杀的情况,只要这种情况发生,则说明自己不是蓝眼人(此时并不能明确知道自己眼睛的颜色,因为并未规定岛上只有蓝、棕两种颜色),否则可确定自己是蓝眼人,则自己将于第三日中午自杀。依次类推下去,在第n日,如果有n人自杀,则可确定蓝眼人数为n,否则,蓝眼人数必大于n,就是这个逻辑。

 

好,那么基于以上递推逻辑,对任何一个个人而言,他需要做什么呢?首先,他已知的信息是岛上有k个蓝眼人,k可能是99或者100,但是他并不能确定自己是否是蓝眼人,所以存在两种可能:1,是;2,不是。那么岛上的蓝眼人总数可能对应的就是两种情况,k+1或者k。

所以他的策略就是等到第k日,如果有k人自杀,那么就能确定岛民中只有k人是蓝眼人,而不是k+1,所以自己必不是,否则自己必是蓝眼人,需要于次日自杀!!!所以最终100天后,蓝眼人会全部自杀而死!!!

 

怎么样?这个推理也很有道理啊!!!但怎么可能两种都有道理的推理得出了两个截然相反的结论?

 

面对这种逻辑悖论时,清醒的人和善于思考的人一定应该意识到,两种结论不可能都成立,必然有一个是错的!那么到底哪个是错的呢?

 

这就是这个问题有趣点的开始。

 

我们知道,在已知的假设前提中,岛民个个都是逻辑学家,他们可以根据已有的一切信息来推理出所有可达的结论,那么关键就在于这个游客的说法到底有没有带来新信息?如果游客的说法没有带来任何新信息,那么当然逻辑的前提就没有变化,自然应该一切照旧。但是反之如果游客带来了新信息,则逻辑的推演自然会导出更多的结论。

 

乍一看,游客说了一句貌似大家都知道的废话,但是是否带来了新信息却不是那么简单的一件事。先从最简单的情况看起。假如岛上只有1个蓝眼人,那么游客说的这句话毫无疑问带来了新信息,因为这个蓝眼人本不知道他自己是蓝眼人,游客说了后,他知道了,这就是新信息。再继续推理,假设岛上有2个蓝眼人,记为甲和乙,甲或乙任何一人虽然都知道岛上存在至少一个蓝眼人,但是却不知道对方知不知道自己知道,例如甲确定有一个蓝眼人乙,但是乙心里怎么想的甲却不知道,如果甲本身是蓝眼,则可以确定乙心里明确知道岛上有蓝眼人,反之乙就不确定。而“对方知不知道”这个信息对个人的决策很重要,因为如果我能确定对方知道存在蓝眼,则我必然是那个蓝眼,否则,我就不确定。这里说得已经有点绕了,但一个基本线索是,我的决策除了需要基于我所知道的事实,同时也要基于对方知道多少事实以及我确信对方知道多少事实!如果说“我知道某事实”是一阶逻辑,那么我知道某人知道某事实,就是二阶逻辑,而我知道某人知道某人知道某事实则是三阶逻辑,以此类推。到此已经足够把普通人绕晕了,因为大部分人生活中碰到的逻辑都是一阶逻辑,在碰到思想博弈的时候可能会出现二阶逻辑,但极少出现高阶,甚至到了100阶的逻辑。这里必须解释清楚一点,这个问题中为什么需要直到100阶的逻辑才足够做推理,因为这个推理链条就是这样上来的,如果不理解,可以再仔细想想从一阶逻辑到二阶逻辑,再到三阶逻辑的递推过程,就是从k到k+1日的递进过程中,每过一日我都会多知道我所见到的这批蓝眼人的想法,而他们的想法包括他们在之前步骤中的想法的累加,如果没有这种累加,递推过程就不严密,就不能成立!这就是本问题的核心!

 

下面再来分析一个疑问,既然这个递推过程只要走100天,就能出结果,那么是不是游客啥也不说,岛上的蓝眼睛人自然也会自杀?这个疑问是许多看了上述递推过程后依然会产生的问题。那么其实答案也只可能有两种情况,只要这个递推过程有了一个开始,那么从这个起点走下去,到100天,一定会有自杀的情况,但问题是,如果这个递推过程永远不开始呢?自然就不会出现自杀的情况咯。所以问题就转变为,这个递推过程能否开始,会不会开始。我看到的答案是,这个递推过程永远不会开始,因为虽然所有人都知道有蓝眼睛的人存在,但是他们无法拥有完整的“100阶知道”。因为递推的开始条件永远是一个人的情况他能知道岛上是否存在蓝眼人,如果这个条件不存在,那么后面的推理是无效的。这是一个违背普通人直觉的现象,也是该逻辑有趣之处,明明岛上有100个蓝眼人,大家都应该知道蓝眼人存在啊,为何还要从1个蓝眼人的情况算起?这就是递推的神奇之处,它对开始条件之严苛,严苛到可以违背普通人的直觉,这也是令人大开眼戒的地方,和这个问题令人着迷之处。

 

所以再回过头来看,为何游客说的话带来了新信息?因为游客做了逻辑起点的第一推动,在假定只有一个人蓝眼人的情况下,能够确保这个蓝眼人知道岛上存在蓝眼人这个事实。而基于此,就自动构建出了许多100阶的逻辑知识链条,从而决定了蓝眼睛岛民的生死。

 

这道题有意思的点之一在于它在逻辑的客体中引入了人的意识,当我不仅仅需要知道一个事实,还需要知道该事实在别人脑中是什么样子,还要知道在别人脑中的别人脑中是什么样子。。。就让知识的位阶提高了!

 

这题引出了共识这个概念(https://en.wikipedia.org/wiki/Common_knowledge_%28logic%29),而根据共识的位阶粗略分为弱共识和强共识:弱共识就是大家都知道某事实,而强共识则是不仅大家都知道某事实,还知道大家都知道大家都知道某事实,以致无穷。这两种共识的信息量是不同的,造成的结果也是不同的。

 

这道题的问题本身就是这样的答案,但据说这题除了是考察逻辑的一道题之外,更深层次来看,可以考察人的思维层次,袁岚峰把对这道题的思考分成了十个境界:

 

第一个层次是:这个问题本身的答案是什么?回答是:游客说话之后n天,所有n个蓝眼人一起自杀。

 

第二个层次是:棕眼人会不会自杀?回答是:不会,因为他们不知道岛上眼睛颜色只有两种。

 

第三个层次是:如果没有游客,岛民们会不会自杀?回答是:不会,因为没有推理的起点。

 

第四个层次是:为什么我们要关心“游客有没有带来新信息”这个问题?回答是:只有新的信息才能造成新的结果,这是一个常识,但蓝眼睛岛问题似乎推翻了这个常识。我们希望搞清楚,错误的是这个常识,还是“游客没有带来新信息”这个印象。

 

第五个层次是:游客到底有没有带来新信息?回答是:确实有!新信息不是游客的话“岛上有蓝眼人”,而是一个n阶的知识。这是超越常规,令人吃惊的。

 

第六个层次是:为什么这个n阶的知识是一个新信息?回答是:因为在游客公布之前,通过互相观察,岛民们最多只能获得n - 1阶的知识。

 

第七个层次是:这个新信息是如何发挥作用的?回答是:新信息使岛民们有可能通过一个判决性的实验,来推出自己的眼睛颜色。这个判决性实验的做法,就是等待和观察。

 

第八个层次是:在逻辑学上,如何描述游客发言的效果?回答是:游客通过公布一个岛民早已知道的信息,把它从弱共识提升到了强共识。

 

第九个层次是:如何解答蓝眼睛岛问题的各种变体,例如游客在第二天有什么办法可以减少伤亡?回答是:如果你理解了前面这八个层次,那么你就能解答种种扩展问题。而如果你前边就在某个层次卡壳了,那么你当然就会被越绕越糊涂。

 

第十个层次是:在现实生活中,哪些现象可以用这些道理来理解?回答是:就是我在原文中举的那些例子,《皇帝的新装》、语言通讯模型和摩尔定律等等。请注意,许多人举暗恋和表白的例子,但这个例子是错误的!暗恋表白并不是把弱共识变成强共识,而是原本没有共识。不要忘记,弱共识也是共识哦。

 

 

这固然是一道经典的逻辑题。仔细复盘发现在计算机算法中,这种级别的题目其实并不罕见,很多用递归的算法也是要克服这种与直觉相违背的初始条件,然后一切便迎刃而解了。

你可能感兴趣的:(蓝眼睛岛问题总结)