所谓月经话题,是指论坛里每个月都会出现的没有定论、话题性与争议性很强的问题。
不论是在知乎、豆瓣、贴吧,还是在其他论坛,都有一些数学问题引发争议。这些问题有的答案不唯一,有的答案看起来非常违反直觉。比如“星期二男孩问题”、“三门问题”、“红眼岛问题”等等。
我希望能够在这个专栏中把常见的数学月经问题汇总,用最浅显的语言,深入浅出地向读者透彻地讲述这些题的正确思路,以及为什么错误的思路看起来如此具有迷惑性。
本系列前两篇文章:
[终结数学月经题系列1]星期二男孩问题[终结数学月经题系列2]三门问题
问题如下:
一个岛上有100个人,其中有5个红眼睛,95个蓝眼睛。这个岛有三个奇怪的宗教规则。
1. 他们不能照镜子、照湖面海面,不能看自己眼睛的颜色。
2. 他们不能告诉别人对方的眼睛是什么颜色。他们不能讨论所有和红眼有关的事物。
3. 一旦有人知道了自己的眼睛颜色,他就必须在当天夜里自杀。 注:虽然题设了有5个红眼睛,但岛民是不知道具体数字的。
某天,有个旅行者到了这个岛上。由于不知道这里的规矩,所以他在和全岛人一起狂欢的时候,不留神就说了一句话:你们这里有红眼睛的人。
全岛人都听见了,也都相信旅行者说的是真的。假设这个岛上的人足够聪明,每个人都可以做出缜密的逻辑推理。大家都知道眼睛只有红、蓝两种,别人也会推理、会守规矩。每天早上,大家都知道昨晚发生了什么。请问这个岛上将会发生什么?
此问题的第一个答案是用数学归纳法得出的:如果这个岛上有N个红眼睛,那么在旅行者说这句话的第N天,他们全部都会自杀。具体到本题则是,在第5天,这个岛上的5个红眼睛会全部自杀。
证明过程如下:
如果这个岛上只有1个红眼睛,其他人都是蓝眼睛。那么,当旅行者说了这句话之后,此人立刻就会知道自己是红眼睛,他就会在当天自杀。
假设当这个岛上有N个红眼睛的时候,在旅行者说了这句话之后的第N天,这些红眼睛会全部自杀。
那么,当这个岛上有N+1个红眼睛的时候,每个红眼都看得见另外N个红眼。他会想:要是我不是红眼,岛上就只有这N个,那他们第N晚就该按规矩行动了。而在第N天,大家都没有自杀。所以一到第N+1天,每个红眼睛都明白了这个岛上还有第N+1个红眼睛——他自己。于是大家都在第N+1天自杀了。
所以命题得证:如果这个岛上有N个红眼睛,那么在旅行者说这句话的第N天,他们全部都会自杀。
真是一件奇怪的事情:旅行者说了一句话“你们这里有红眼睛的人”之后,就有人自杀了。但是不对劲的事是——这句话根本不用旅行者说!事实上每个人都知道“我们这里有红眼睛”。更准确来说,每个人都知道“我们这里至少有四个红眼睛”。旅行者说了一句“废话”,怎么就有人自杀了呢?
如果你看晕了,可以看这个简化版本:
我们假设100个人中只有两个红眼睛:小郭和小敬。在小郭眼里,他看到98个蓝眼睛和一个红眼睛(即小敬),他心想:“可能小敬是唯一的红眼,也可能我和小敬是唯一的两个红眼。但是我不能确定,而且在现有的宗教规则下,我永远不能确定。”同时,在小敬的眼里,他也看到98个蓝眼睛和一个红眼(即小郭)。他的想法和小郭一样。
剩下98个人则是看到了两个红眼。同时每个人都想“可能只有小郭和小敬是红眼,也可能我和他俩一共三人是红眼,但是我永远不能确定。”
总之,每个人都知道“这岛上至少有一个红眼”。但是每个人都不能百分百确定自己是否会自杀。
好了,现在旅行者说了一句话“你们之中有红眼”。这时候,小郭会这么想:“如果小敬是唯一的红眼,那么他今晚该自杀了。愿他走好。”同时,小敬也想:“如果小郭是唯一的红眼,那么他今晚该自杀了。希望来世还能和他成为基友。”
两个人都在等对方自杀,结果就是第一天无人自杀。
小郭在内心的想法是这样的:“卧槽,原来小敬不是唯一那个红眼,那剩下98个人明确是蓝眼,剩下的那个红眼就是我了!哎,我今晚得自杀了!”
小敬的想法也是类似。
于是第二天晚上小郭和小敬自杀了。
剩下98个人于是都知道自己是蓝眼,于是在接下来一天都“你是风儿我是沙”地一起自杀了。
可是,旅行者看起来说了一句废话啊!不用等到旅行者说那句话,每个人其实都已经知道“岛上至少有个红眼”。可是旅行者说了那句话后,大家怎么就知道自己的颜色了呢?
我们再将问题提升复杂一点:我们假设100个人中有三个红眼:小郭、小敬、小明。
在小郭眼里,他看到小敬和小明是红眼。他会想:“要是我不是红眼,那就只有小敬和小明是红眼,他俩第二天晚上就该自杀了。”(这是我们刚刚讨论过的情况。)结果他俩并没有在第二天自杀。于是小郭痛彻心扉地理解了一个事实:“原来我也是红眼!”
小敬和小明的脑回路也是这样想的!
第三天,三人一起自杀了。
于是回到原题,四个人的情况在第四天自杀,五个人的情况在第五天自杀。第六天一早,剩下95个人知道那5个红眼前一晚都按规矩行动了,也就知道自己是蓝眼了。
为什么会有这样的悖论?
事实上,旅行者说的那句话是有信息的!
五个红眼的时候,大家确实早就知道别人也知道岛上有红眼。可要是接着往下猜:「如果我不是红眼,你会怎么想?如果你也在想自己不是红眼呢?」一层一层往下猜,最后还真能猜到有人一个红眼都看不见。旅行者当着所有人的面说了这句话,大家都知道别人也听见了。这下不管你往下猜多少层,「岛上一个红眼也没有」都可以排除了。
我们注意这样一个事实:“每个人都知道这件事情”与“每个人都知道每个人都知道这件事情”是不同的!
比如有个公司老板,两个秘书分别是小郭和小敬,老板和这两个秘书都有一腿。于是,每个人都知道“这两个秘书里至少有一个人和老板有一腿”。有一天,老板喝醉了,当着两人的面说:“你们两个里,至少有一个人跟我有一腿。”接下来的情节就有趣了。小郭想,如果小敬跟老板没关系,那小敬岂不是知道我和老板有一腿了?同样的道理,小敬也是这样想的。
每个人都知道“这两个秘书里至少有一个人和老板有一腿”,但是不一定每个人都知道“每个人都知道这两个秘书里至少有一个人和老板有一腿”。是不是很绕……
没关系,我再举第二个例子。假设郭教授叫上你和小明玩游戏。
游戏是这样的:郭教授分别在两张卡片写下两个数字,即5和7。然后随机贴在你们的额头上。你们不能看见自己的数字,但是能够看到对方的数字。郭教授告诉你们:你们的数字相差2。
假设你们不能语言交流、心灵感应等等。只能看到对方的数字。
你和小明都明白这样一个事实:“我们两个人的数字都小于10”。为什么?不妨设你的数字是5,小明的数字是7。你看到小明的数字是7,于是你猜测你的数字只能是5或者9。同样,小明看到你的数字是5,猜测他自己的数字只能是3或者7。
那么有意思的事情来了,我不能确定小明是否得出“我们俩的数字都小于10”这个结论。
就像我刚刚举的那个只有两个红眼睛的人(小郭和小敬)的例子:
我们记事情A是:“我们其中至少有一个人是红眼”。
事情B是:“我们每个人都知道事实A了。”
小郭和小敬,他们都知道事情A,这是能确定的。但是不能确定的是,他们是否知道事情B。我能确定我们岛上有红眼睛的人,但是小敬能不能确定?我不知道。直到旅行者说了之后,我才能确定。
旅行者说之前,A是共有信息。旅行者说之后,A成为了公共信息。
我能确定至少有一人和老板有一腿,但是小敬能不能确定?我不知道。直到老板当着两个人的面说了之后我才能确定。
这个问题中,事情A是“我们的数字都小于10”。
事情B是“我们都知道我们的数字小于10”。
两位同学可以确定A,但是并不能确定B。
我看到小明的数字是7,我可以猜测我的数字是9(当然有样的可能性)。在我的数字是9的情况下,我可以合理猜测:小明看到我的数字是9会觉得他自己的数字是11!这样一来,我们俩中有人的数字可能大于10。
这还不是最骚的,更骚的是,在小明的眼里,他觉得自己是数字是11的情况下,他可能会认为:我看到的数字是11并且我可能认为自己的数字是13!这样一来,俩人的数字都可能大于10了!
这仍不是最骚的,更骚的是,数字可以无穷无尽下去……你认为13,我认为你认为15,你认为我认为你认为17……
如果还觉得很晕的话,请深呼吸后看第三个例子:
古代交通不便,平时的书信可能因为路途遥远、天灾人祸、中途被劫匪劫走、中途被老鼠吃了而导致未送达对方,会造成很多不必要的担忧、麻烦、误会之类。
假设在北京的李白去成都找杜甫玩。
李白在成都和杜甫欢度了一段非常快乐的时光。最后李白要走时,杜甫说道:“李白乘舟将欲行,忽闻……不对,李白啊,现在外面这么乱,天灾人祸这么多,路上得多小心!你到达北京之后一定要写信告诉我你已经安全回到了北京,免得我日夜担心!”
李白说“我肯定会第一时间给你写信报平安的!你要知道,如果你在担心我的平安,我也会很难受的!我不能让你担心我。你本来就有抑郁症,如果你总在担心我,我会担心你的身体会因忧郁过度而垮掉!”
几个月后,李白回到了京城。李白写信“杜甫小弟,我已经安全到北京了!”,正当要投信的时候,李白转念一想,万一这信件没送到杜甫手上怎么办?那这样的话,杜甫就得继续日夜担心我了!那这样我也会很难受的!于是李白又加了一句话“收到请回复。”好了,信发出去了。
杜甫收到了信。这时杜甫留下了感动的泪水:“李白总算安全回到了北京”。于是杜甫兴高采烈地带着全家去吃肯德基。出门之前转念一想,“不够,李白现在肯定还在担心我呢!他说过,如果我在担心他的安危,他会很难受,他也会担心我这样日夜担心会导致我身体吃不消。我必须告诉李白,信我收到了”。
于是杜甫写了一封信:“亲爱的李白,我已经收到了信,很高兴你安全地回到了北京。我现在不担心你的安危了,我倒是在担心你是否知道我已经不再担心你的安危了。所以你收到这封信的时候,务必要回复我哦,否则我整天还是会担心你的。么么哒!”
这封信收到李白的手里,李白终于留下了感动的泪水:你这老头子!我终于不用担心你的身体了!哎,不过你这老头子总是忧国忧民,担心这担心那的。我这就写信告诉你,我收到了这封信。
于是李白写信:“你的信我已经收到了!杜老先生就不用担心我啦!”
正当李白想要发出去的时候,转念一想:“我必须得确定杜老头子收到了我现在这封信,否则如果他没收到我的信,他得没日没夜地担心我了,我也得没日没夜地担心他了!哎,为何这世上总是多情的人被伤?早知道伤心总是难免的,为何当初一往情深?”
于是李白在信的后面加了几个字:“收到务必回复!我的思密达!”
杜甫在几个月后收到了这封信,留下了感动的泪水。同时杜甫不能让李白这样担心他,于是杜甫对李白写信:“信我已经收到了,你不必再担心我了。但是为了确保真的不再担心我,请看到这封信后务必回复我!否则我会一直担心你下去。”
李白在几个月后收到了信,回道:“我已经收到信了。让我留下眼泪的,不止昨夜的酒;让我依依不舍的,不止你的温柔。所以请你不要再担心我。为了确保你真的不再担心我,请你在看到这封信后务必回复我。”
几个月后,杜甫收到信,然后回信道:“和我在成都的街头走一走,直到所有的灯都熄灭了也不停留……你的信我收到了。为了确保你不再担心我,请你在看到这封信后务必回复我”
这个故事将永远不会有结尾,除非第三个人当着两人的面说:“好了你们俩够了,你们都很安全。”或者他们能够同时通话、视频。
好了,如果你还是觉得很晕的话,看最后一个例子。
(注:在实际情况中可能极少出现上述李白杜甫的例子,也极少出现下面的例子,毕竟人的敏感、认知、猜疑是有限度的。但是在纯数学、理想化的条件下看这两个例子会很有趣。)
假设你喜欢小红,小红也喜欢你。你们确实互相喜欢,可谁也不知道对方的心意。有一天,小郭偷偷告诉你“小红喜欢你”,说完这句话就走人了。又有一天,小郭偷偷告诉小红“你喜欢小红”,当然你是不知道小郭去通风报信这件事的。现在的客观(请注意这个词,这是客观信息,但是你或者小红未必知道)情况是,你喜欢小红,且你知道小红喜欢你;同时小红喜欢你,且小红知道你喜欢小红。
这下算把话说开了吗?
仍然不等于。因为你不能确定小红是否知道你已经知道了小红喜欢你。小红也不能确定你是否已经知道了小红已经知道了你喜欢小红。
事实上,这样的猜测可以无尽下去:我能不能确定小红已经知道了我已经知道小红知道我喜欢她这件事实?我能不能确定小红已经知道了我已经知道了小红知道了我已经知道了小红知道了……(知道×n)……我已经知道了我喜欢她这件事实?
我们记
A=你喜欢小红
B=小红喜欢你
A1=你知道B
B1=小红知道A
A2=你知道B1
B2=小红知道A1
……
An=你知道Bn-1
Bn=小红知道An-1
……
两个人本来就互相喜欢。前面绕来绕去,只是在猜对方知道到了哪一步。但一开始你只知道A,小红只知道B,你不知道A1,小红不知道B1。小郭通风报信后,你只知道A和A1,而不知道A2,小红只知道B和B1,而不知道B2…
如何才能斩断这无尽的猜测?正如旅行者在所有人面前说出那句每个人都知道的话。答案是:爱要大声说出来。当着她的面说:“我喜欢你!”她要是也喜欢你,就让她亲口告诉你。