帽子问题又称帽子颜色问题,是比较经典又非常有趣的逻辑问题之一。
一个经典的问题原文如下:
有3顶红帽子和2顶白帽子。现在将其中3顶给排成一列纵队的3个人,每人戴上1顶,每个人都只能看到自己前面的人的帽子,而看不到自己和自己后面的人的帽子。同时, 3个人也不知道剩下的2顶帽子的颜色(但他们都知道他们3个人的帽子是从3顶红帽子、2顶白帽子中取出的)。
先问站在最后边的人:“你知道你戴的帽子是什么颜色吗?”最后边的人回答:“不知道。”接着又让中间的人说出自己戴的帽子的颜色。中间的人虽然听到了后边的人的回答,但仍然说不出自己戴的是什么颜色的帽子。
听了他们两人的回答后,最前面的人没等问,便答出了自己帽子的颜色。
你知道为什么吗?他的帽子又是什么颜色的呢?
答案是这样的,首先我们假设从前到后的3个人分别为甲、乙、丙,丙看了甲、乙戴的帽子说不知道,说明甲、乙戴的并不都是白帽子。因为只有2顶白帽子,如果甲、乙都戴的白帽子,丙一定知道自己戴的是红帽子。同理,乙又说不知道,说明甲戴的不是白帽子。因为乙也能从丙的回答中判断出自己和甲戴的不都是白帽子。如果甲戴的是白帽子的话,那么他肯定知道自己戴的是红帽子了。如此一来,甲肯定戴的是红帽子了。因此,甲就知道了,自己戴的是红帽子。
类似的猜帽子颜色的问题还有很多,都是由此变形扩展而来的。此类问题可以很好地锻炼我们的逻辑思维能力,尤其是对信息的汇集与整理,这在我们的思维过程中非常重要。此类问题的解题关键在于要弄明白,别人是如何想这个问题的,他回答“不知道”能推导出哪些结论……当然,这类题目的前提是参加游戏的每个人都是足够聪明的。
这个问题我们可以推广成如下形式。
“有若干种颜色的帽子,每种若干顶。假设有若干个人从前到后站成一排,给他们每个人头上戴一顶帽子。每个人都看不见自己戴的帽子的颜色,而且每个人都看得见在他前面所有人头上帽子的颜色,却看不见在他自己和他后面任何人头上帽子的颜色。现在从最后那个人开始,问他是不是知道自己戴的帽子的颜色,如果他回答说不知道,就继续问他前面那个人。一直往前问,那么一定有一个人知道自己所戴帽子的颜色。”
当然,要想题目有解,还要满足一些特定的条件。
(1)帽子的总数一定要大于人数,否则帽子不够戴。当然,数字也要设置得合理,帽子比人数多得太多,或者队伍里只有一个人,那他是不可能说出帽子的颜色的。
(2)有多少种颜色的帽子?每种多少顶?有多少人?这些信息是队列中所有人都事先知道的,而且所有人都知道此事……也就是说,这些信息在这些人当中是公共知识。
(3)剩下的没有戴在大家头上的帽子都被藏起来了,队伍里的人谁都不知道剩下些什么颜色的帽子。
(4)他们的视力都很好,能看到前方任意远的地方,也不存在被谁挡住的问题。而且所有人都不是色盲,可以清楚地分辨颜色。
(5)不能作弊,后面的人不能和前面的人说悄悄话或者打暗号。
(6)他们每个人都足够聪明,逻辑推理能力都是极好的。只要理论上根据逻辑可以推导出来结论,他们就一定能够推导出来。相反,如果他们推不出自己头上帽子的颜色,只会诚实地回答“不知道”绝不会乱说,或者试图去猜。
举一个通用点的例子:假设现在有n顶黑帽子,n-1顶白帽子,n个人(n>0)。
排好队伍戴好帽子之后,问排在队伍最后面的人,他头上的帽子是什么颜色?在什么情况下他会回答“知道”?很显然,当他前面的所有人(n-1人)都戴着白帽子的时候。因为n-1顶白帽子用完了,自己只能戴黑帽子了。只要前面有至少一个人戴着黑帽子,他就无法知道自己头上帽子的颜色。
现在假设最后一个人回答“不知道”,那么我们开始问倒数第二个人。根据最后一个人的回答,倒数第二个人同样可以推理出上面的结论,即包括自己在内的前面所有人至少有一个人戴着黑帽子。如果他看到前面的人戴的都是白帽子,那么很显然,自己戴的必定是黑帽子。如果他看到前面仍然至少有一个人戴着黑帽子,那么他的回答必定还是“不知道”。
这个推理过程可以一直持续下去。当某一个人(除了最前面的一个)看到前面所有人都戴着白帽子时,他的回答就应该是“知道”了。如果到了第二个人依然回答“不知道”,那么说明第二个人看到的还是一顶黑帽子,此时最前面的人就可以知道自己戴的帽子的颜色了。
除了最后一个人外,其余每个人的推理都是建立在他后面那些人的推理上的。当我们断定某种颜色的帽子一定在队列中出现,而所有我身后的人都回答“不知道”,即我身后的所有人都看见了这种颜色的帽子,但我却见不到这种颜色的帽子时,那么一定是我戴着这种颜色的帽子。这就是帽子颜色问题的关键!