有趣的博弈论: 红眼睛和蓝眼睛(附:旅客的挽回)
来源:小浩算法
作者:程序员浩哥
在面试的过程中,除了常规的算法题目,我们经常也会被问到一些趣味题型来考察思维,尤其以 FLAG(Facebook, LinkedIn, Amazon, Google)等公司为典型。而这类问题的背后,很多都有博弈论的影子。所以在本系列,我将为大家分享一整套需要掌握的博弈论相关知识,希望大家可以喜欢。
PS:本系列将不一定都是算法问题,不是IT行业的小伙伴也可以进行学习,来提高自身分析问题的能力。
红眼睛和蓝眼睛:一个岛上有100个人,其中有5个红眼睛,95个蓝眼睛。这个岛有三个奇怪的宗教规则。
1.他们不能照镜子,不能看自己眼睛的颜色。
2.他们不能告诉别人对方的眼睛是什么颜色。
3.一旦有人知道了自己是红眼睛,他就必须在当天夜里自杀。
某天,有个旅行者到了这个岛上。由于不知道这里的规矩,所以他在和全岛人一起狂欢的时候,不留神就说了一句话:【你们这里有红眼睛的人。】
问题:假设这个岛上的人每天都可以看到其他所有人,每个人都可以做出缜密的逻辑推理,请问岛上会发生什么?
题目乍看之下,没有任何逻辑可言!以目测条件,基本无法完成任何正常的推理。但是在仔细推敲之后,我们可以将问题简化,从假设只有1个红眼睛开始分析。
我们假设岛上只有1个红眼睛的人,还有99个都是蓝眼睛。因为这个旅行者说了“这里有红眼睛的人”,那么在第一天的时候,这个红眼睛会发现其他的人都是蓝眼睛(与此同时,其他人因为看到了这个红眼睛的人,所以都确认了自己的安全)那么这天晚上,这个红眼睛的人一定会自杀!
继续分析,假设这个岛上有2个红眼睛,那么当旅行者说“这里有红眼睛的人”之后的第一天,这两个红眼睛分别发现还有别的红眼睛存在,所以他们当天晚上认为自己是安全的。但是到了第二天,红眼睛惊讶的发现,另一个红眼睛的人竟然没有自杀(说明岛上有不止一个红眼睛),并且当天他们也没有发现有别的红眼睛存在(说明另一个红眼睛就是自己)WTF,那肯定另一个红眼睛就是自己了,所以在第二天夜里,两个红眼睛的人会同时自杀!
继续分析,假如岛上红眼睛有3个。那么在第一天,红眼睛发现了岛上还有另外两个红眼睛,红眼睛呵呵一笑,“反正不是我”。到了第二天,红眼睛仍然看到了另外两个红眼睛,红眼睛心想,"这下你两该完蛋了吧",毕竟你两都知道了自己是红眼睛,晚上回去统统自杀吧!(根据上面的推论得出)但是惊奇的是,到了第三天,红眼睛发现另外两个红眼睛竟然都没有自杀。(说明岛上红眼睛的人不止两个)并且当天红眼睛也没发现新的红眼睛(说明还有一个红眼睛就是自己)所以在第三天的夜里,三个红眼睛会同时自杀。
根据上面的推论,假设有N个红眼睛,那么到了第N天,这N个红眼睛就会自杀。所以最终这个岛上红眼睛的人会统统自杀!这就是答案,生活就是这么朴实无华,且枯燥。
上面的分析大家应该都看懂了。但若是在旅客说完这句话后,其并没有离开这个岛。同时他也看到了周围人眼里的惊慌和失措,这个时候,旅客为自己的行为感到了懊恼和悔恨!旅客决定对自己的话进行挽回,旅客又该怎么做呢?
这里我提供一种思路,旅客可以在第N次集会上杀掉N个红眼睛,让这N个红眼睛 “GO TO SLEEP”,就可以中断事件的推理。事实上,基于人道主义,旅客并不需要手动杀人,她只需要在第N天的时候告诉这N个人,你们是红眼睛,那么这天晚上,这N个人就会自杀。"All RETURN",一切将回归秩序~
(配图不是乱配的,卡萝尔作为行尸走肉的主角之一,如果她是这名旅客,按照她的性格,她将终止这场事件)
那么,还有其他的方法可以中断这场推理吗?
有哪位小伙伴可以给出在第一次集会后不死人的方案呢?评论区留下你的想法吧!
推荐阅读