司志本+张琪
“帽子问题”是大家比较熟悉的一道思维训练题.如果你阅读一些有关博弈论的书籍,那么你就会发现,博弈论中一些比较经典的问题与“帽子问题”是非常相似的,我们可以把这些问题视为“帽子问题”的衍生问题.经常思考一些这样的问题,对于训练我们的思维是十分有益的.
例1 帽子问题.
这是一个游戏,A、B、C三个人围坐在一起,主持人备有3顶红帽子和2顶白帽子.将其中的3顶帽子分别戴在这三个人的头上.每个人都能看见其他两个人头上的帽子,但看不见自己头上戴的帽子,并且也不知道剩余的2顶帽子的颜色.
主持人首先问A: “你戴的是什么颜色的帽子?” A回答说:“不知道.” 接着,主持人又问B同样的问题,B想了想之后,也回答说:“不知道.”主持人最后问C,C回答说:“在听了A、B的回答之后,我知道我戴的帽子是什么颜色了.” 请问C戴的是什么颜色的帽子?
分析 首先,不可能有两个人同时戴白帽子.例如,假设A 、B戴的都是白帽子,那么C不需要听取A、B的答案,就能够判断出自己戴的是红帽子;其次,不可能只有一个人戴白帽子.事实上,假如A戴的是白帽子,那么对于C来说,他看到的情况是:A戴白帽子,B戴红帽子,因为不可能有2人都戴白帽子,所以,C由此可以判断,自己戴的一定是红帽子.
上述的“帽子问题”也经常以下面的形式出现:
C、B、A三个人从前到后站成一列,主持人备有3顶红帽子,2顶白帽子,将其中的3顶帽子分别戴在这三个人的头上,他们都只能看见站在自己前面那些人的帽子.主持人首先问排在最后面的A: “你戴的是什么颜色的帽子?”A回答说:“不知道.” 接着,主持人又问B同样的问题,B也回答说:“不知道.”主持人最后问C. C回答说:“在听了A、B的回答之后,我知道我戴的帽子是什么颜色了.” 请问C戴的是什么颜色的帽子?
分析 站在最后边的A不知道自己所戴帽子的颜色,说明他前面的B和C所戴的帽子不都是白色的,否则,A就能够判断出自己戴的是红帽子了;此时,如果排在第一位的C戴的是白帽子,那么排在第二位的B根据A的回答,就可以判断自己戴的不是白帽子,而是红帽子;现在B也不知道自己帽子的颜色,这就说明C戴的不是白帽子.所以,C戴的帽子一定是紅色的.
“帽子问题”中的人数还可以增加.例如4个人的情况就是下面的问题:
有A、B、C、D四个人围坐在一起,主持人准备了4顶红帽子,3顶白帽子.将其中的4顶帽子分别给这四个人戴在头上.他们每个人都能看到别人的帽子,但看不到自己头上帽子的颜色.主持人对他们四个人说:“你们中间至少一个人戴的是红色帽子,你们知道自己头上帽子的颜色吗?”四个人都说不知道.主持人连续问了三次同样的问题,他们都说不知道.当主持人问到第四遍时,四个人同时回答说:知道了.请问,这四个人所戴帽子是什么颜色的?
分析 如果A、B、C、D这四个人中只有一个人的帽子是红色的,不妨假设A的帽子是红色的,那么A看见另外三个人的帽子都是白色的,此时,主持人第一次提问时,A就能判断出自己的帽子是红色的.主持人第一次提问时,四个人都回答说不知道自己帽子的颜色,这说明不止A一个人的帽子是红色的;如果只有两个人的帽子是红色的,不妨假设A和B的帽子是红色的,那么A和B两个人会看见一个人戴红帽子,两个人戴白帽子,进而判断出自己戴的是红帽子,在主持人第二次提问时,A和B就会给出答案.因此不可能只有两人戴红帽子;如果只有三个人的帽子是红色的,不妨假设A、B、C的帽子是红色的,那么A、B、C中任意两个人会看见两个人戴红帽子,一个人戴白帽子,由前面分析可知,不可能只有一个或两个人戴红帽子,所以,A、B、C可以判断出自己戴的是红帽子.主持人前三次提问时,四个人都说不知道.到这时,这四个人已经判断出他们的帽子都是红色的了,所以,当主持人第四次提问时,四个人同时回答说:知道了.他们四个人所戴的帽子都是红色的.
例2 脏脸问题.
“脏脸问题”是许多博弈论书上都提到的一个问题,最简单的情况是这样的:
一个房间里有三个人,三个人的脸都是脏的,他们都知道别人的脸是脏的,却不知道自己的脸是脏的.这时主持人走进来对他们说:“你们中间至少有一个人的脸是脏的.”这三个人听完之后,互相看看,没有任何反应;主持人见他们这样,又继续提醒道:“你们知道吗?”这时三个人又相互打量起来;当主持人第三次提醒时,他们突然都意识到自己的脸是脏的.三个人的脸一下子都红了.
分析 如果三个人中只有一个人是脏脸,那么脏脸人看见另外两个人的脸都是干净的,此时,主持人第一次提醒时,脏脸人就会意识到自己的脸是脏的,他就会感到脸红.主持人第一次提醒后,三个人谁都没有脸红,这说明,不止一个人脸脏;如果只有两个人脸脏,那么脏脸的两个人会看见一张干净脸和一张脏脸,进而意识到自己的脸是脏的,当主持人第二次提醒时,这两个人就会脸红.因为主持人第二次提醒时,没有人脸红,这说明不只两个人的脸脏,所以,当主持人第三次提醒时,三个人的脸都红了.三个人的脸都是脏的.
例3 病狗问题.
大家都知道微软公司的面试是与众不同的,他们面试题大体上可以分为四类:第一类,快速估算题,测试你的快速反应能力;第二类,开放性思维题,考验你的逻辑推理能力;第三类,基础数学题,考核你的数学基础是否扎实;第四类,智力测试题,看你能否创造性地思考.下面的“病狗问题”就是微软公司的一道招聘试题:
一个大院子里住了50户人家,每家都养了一条狗,有一天他们接到通知说院子里有狗生病了,并要求所有主人在发现自己家狗生病的当天就要把狗枪杀掉.然而所有主人和他们的狗都不能够离开自己的房子,主人与主人之间也不能通过任何方式进行沟通,他们能做的只是通过窗户观察别人家的狗是否生病,从而判断自己的狗是否有病.第一天没有枪声,第二天还是没有枪声,第三天传出一阵枪声.问有多少条病狗被枪杀.
分析 如果只有1条狗是病狗,那么第一天这条病狗的主人发现另外的49条狗都是正常的,从而判断自己的狗是病狗.因此,第一天主人就应该把自己的狗给杀死.第一天没有枪声,说明至少有2条病狗.
如果只有2条病狗,那么第二天这2条病狗的主人只能看到1条病狗和48条没病的狗.因为病狗多于1条,所以,2条病狗的主人可以判断自己的狗是病狗,第二天应该把自己的狗给杀死.第二天没有枪声,说明至少有3条病狗.
如果有4条或4条以上的病狗,那么每个主人至少能够看到3条病狗.由于病狗的数量是不是3条无法确定,每个人也无法判定自己的狗是不是病狗,所以第三天就不会有枪声.
第三天传出枪声,说明只有3条病狗.