中文翻译的文章链接:
这里我们不谈美国总统竞选的事,只关注蓝眼睛谜团这个问题。为了方便,我从上面中文翻译的文章中摘抄了蓝眼睛谜团那部分的段落。
从逻辑上讲,共识 (mutual knowledge) 与常识 (common knowledge) 两个词之间有着一个微妙而重要的区别:前者是 (几乎) 所有人都知道的信息,而常识不仅 (几乎) 所有人都知道,而且 (几乎) 所有人都知道其他人也都知道 (并且明白其他人也知道别人都知道,以此类推)。
安徒生曾为我们带来了一个典型的例子——寓言《皇帝的新衣》。故事中皇帝实际上没穿衣服,这是共识,但不是常识,因为每个人 (除了那个小孩) 都拒绝承认皇帝的赤裸。因此这种伪装才会传播开来,即大家都相信皇帝实际上穿着极其昂贵而特别的衣服,只有少数人可以看见。当然,我自己最喜欢的案例是蓝眼睛岛谜团。
从前在一座岛上住着一个部落。部落共有1000人,他们的眼睛分为两种颜色:棕色和蓝色。每个人都不知道自己眼睛的颜色,人们也禁止讨论相关的信息。部落有着一个古怪的信仰,如果哪个人发现了自己眼睛的正确颜色,那么他必须在次日中午当众自杀。岛上的每个人都具有极强的推理能力,并且也信赖其他人的推理。
实际上,部落里有100人是蓝眼睛,900人是棕眼睛。不过大家并不知道这个确切数字,因为每个人只能看到其他999人的眼睛颜色。
有一天,一个蓝眼睛的外国人 (知道自己眼睛颜色) 来到岛上,并获得了部落的绝对信任。临走时,他向全岛人表达了感激,并无意中说了这样一句话:“居然能在这里看到和我眼睛颜色一样的人,真是神奇。”
就是这么一句话,对全岛产生了巨大的影响。
目前有两种合理的看法,两者互相对立:
争论1. 外国人没有带来任何影响,因为他的话没有透露出任何岛上人不知道的信息 (大家都知道岛上有一部分蓝眼睛的人)。
争论2. 外国人走后的第100天,所有蓝眼睛的人全部自杀。
关于第一种论点,应该很好理解。而第二种争论也有其道理,我们首先建议大家自己思考,无法解决的话再来考虑下述观点:
如果岛上有n个蓝眼睛的人,那么外国人走后的第n天,全部蓝眼睛的人会自杀。
首先,可以从n=1来考虑。显然,那唯一的蓝眼睛人看到所有其他人都是棕眼睛,会明白外国人指的就是自己,于是在他走后第一天自杀;
如果n=2,那么两个蓝眼睛人都不确定自己是否是蓝眼睛,于是在外国人走后第一天中午,没有人自杀。这一结果使这两个人都明白了,自己其实也是蓝眼睛 (因为另一个蓝眼睛人没有自杀,意味着对方看到的并非999个棕眼睛,而是包括自己也能够看到的998个棕眼睛,外加自己这么1个蓝眼睛)。
以此类推......直到n=100。
有人认为,外国人并没有透露出任何额外信息。那么大家不妨进一步思考:外国人所起到的作用究竟是什么?
下面是我的一些分析:
在分析之前,有人会提出:这些人疯了才会去自杀。或者这些人疯了才会相信别人真的会去自杀。也有人会提出:如果有人是瞎子呢?或者有人耳聋?或者在外国人说那句话时有人没听见或听清。甚至如果有人是色盲呢?等等...为了避免这些无谓的干扰,我们都将认为没有这些问题,都是非常虔诚的,眼睛耳朵都是棒棒的,都听的清清楚楚...
上面争论2简单的推理,使用了类似数学归纳法的方法,但不是严格的。因为要用数学归纳法我们必须确保下面两个条件必须真正被满足:
已知$A_1$ 为真。
对任意正整数 r,当$A_r$为真能推出$A_{r+1}$为真。
而上面争论2简单的推理并不满足条件2,而是采用经验归纳法,首先n= 1,2 为真,然后不严格的使用“以此类推”。当然别误会我的意思,我并不是要否定经验归纳法,相反我觉得经验归纳法对于我们来说极其重要的。严格的数学归纳法只是证明的手段而已。
上面n=2 的情况,和 Muddy Children Puzzle (泥巴孩子问题)问题类似:
在外面玩耍之后,三个小孩中的其中两个的额头上沾上了泥巴。他们都能彼此看到其他人,但看不到自己,所以他们不知道自己的状态。现在他们的父亲回来并且向他们说道:“你们中至少一人的额头是脏的”。然后他问:“有没有人知道自己的额头是否是脏的?”孩子们接着真实地回答。父亲再问:“现在有没有人知道自己的额头是否是脏的”,请问接下来将会发生什么?
如果只有一个孩子额头沾了泥巴,那么这个孩子看到另外两个孩子没有沾泥巴,可以推出自己沾了泥巴。可是第一遍,没人回答知道,说明,至少有两个孩子沾了泥巴。两个沾了泥巴的孩子可以看见有一个孩子没有沾泥巴,在第二遍回答时就可以确定自己沾了泥巴,这两个孩子将接着回答"我知道了”。在听完第二遍的回答之后,最后那个没沾泥巴的孩子也可以推出自己没有沾泥巴了,因为如果自己沾了泥巴,在第二遍回答时,将没有人知道自己是否沾了泥巴。
好了,回到蓝眼睛谜团上,到底是争论1正确呢还是争论2正确呢?对于争论2,有人可能会这样的疑问,如果我是他们其中一人,我可以看见99个蓝眼睛,并且可以断定其他人至少都可以看见98个蓝眼睛,可以肯定1到97天都没人自杀,为啥还要等?
假设我们把100个蓝眼睛从1到100编号。1号看到了99个蓝眼睛,但是不能确定2号是否看见了99个蓝眼睛,有可能是98个蓝眼睛(1号不是蓝眼睛的情况),即1号知道2号知道的是至少有98个蓝眼睛。在1号不是蓝眼睛的情况,1号可以推出2号不能确定3号是否看见了98个蓝眼睛,有可能是97个蓝眼睛(2号不是蓝眼睛的情况),即1号知道2号知道3号知道的是至少有97个蓝眼睛,依次类推... 1号知道2号知道3号知道...100号知道的是0个蓝眼睛。外国人说那句话的第0天,大家已经达成常识至少有一人是蓝眼睛。而第一天的等待是有意义的,第一天没人自杀,说明大家已达成常识至少有2个蓝眼睛(注意这里使用的词不是共识,而是常识)。接下的等待都是达成常识的一个过程... 第99天没人自杀,大家达成的常识是至少有100个蓝眼睛,所以看到900个棕色眼睛的人都可以确定自己就是蓝眼睛,第100天将自杀。
如果上面我们的推理是正确的,那么争论1哪里出问题了呢?争论1的表述看上去没有啥问题,确实大家都知道外国人的眼睛是蓝的和岛上一部分人的眼睛是相同颜色,但是他的话却透露了额外的一些微妙的信息。全岛的人在同一时间知道了同一个常识(至少有一个蓝眼睛),导致大家可以同一时间开始推理。
但是还有另外一个问题,100天后,棕色眼睛的人会如何呢?
争论3:和上面推理一样,第900 天棕色眼睛的人将全部自杀。
争论4:棕色眼睛的人不会自杀,因为他们并不知道岛上眼睛只有两种眼睛,也有可能自己的眼睛是第三种颜色。
你也不妨先思考下。
假设棕色眼睛的人只有1人。他能肯定自己不是蓝眼睛,但是不能肯定自己是棕色眼睛,比如也可能是黑色的,因为没有信息透露至少有一个是棕色的。所以棕色眼睛的人是安全的。
故事到此似乎可以结束了。但是我想到另外一个问题,是否可以编程进行推理?比如设计一个智能的类叫机器人 Roboter,他不知道自己眼睛的颜色,但是知道其他Roboter 眼睛的颜色,然后经过一系列推理,Roboter 可以输出推理后自己眼睛的颜色。 难点在于,我如何让程序能进行推理呢?如果能跨过这个障碍,那么后面的应该都不是问题了。
如果Roboter 能推理出自己眼睛的颜色,那么是否能表明Roboter具有自我意识呢?
欢迎关注我的微信公众号[数学345]:长按"识别图中二维码";或打开微信扫一扫。