朋友在可汗学院看到一个英文的脑筋急转弯视频,描述了如下问题(我随便翻译的):
你去古城堡里探险,历尽千辛万苦,走到最后一关。最后一关有两个房门,一个通向藏宝室,进去之后你可以携带惊人的财富离开;另外一个通向无尽深渊,一旦打开,比死亡还会悲惨💀。你只有一次机会选择打开其中一个门。
但是也不完全是碰运气,两个房门前分别站着两个小人,其中一个只说实话,另外一个只说谎话,你有且仅有一次机会问他们其中一个人一个问题,来判断打开哪个房门。
(图源 :Pexels.com By David Bartus)
好了,无尽的财富就在眼前,比神马在STEEMIT发帖子靠谱多了,但是如果你判断失误,选错了房门,那可就不止STEEM跌95%这么悲惨了😂
分析
为了财富我拼了,只能问一个人且只能问一个问题,来判断出哪个房门后边有宝藏,这肯定是有技巧的,不能随便问,否则设置这关障碍就没有意义了。
我们来略作分析,首先这两个人没啥特别的标识,所以问哪个其实是无所谓的。但是为了之后分析方便我们将两个小人分别命名为A和B,两个小人对应的房门命名为A门与B门。 我画了如下简单示意图:
我觉得我蛮有绘画天赋的。
因为只能问一个人一个问题,但是其中有一个说谎,我们还不知道哪个人说谎,所以我们必须设计一个问题把两个人都套进去,才能得出有用的线索。所以我设计的问题是问A如下问题:
如果我问B哪扇门后是宝藏,B会如何回答?
笨方法
我不禁为我的机智默默点赞,哈哈哈哈哈。然后问题就简单了,我们可以分别假设处理以下不同情况:
- A说真话,那么B就是说假话的家伙喽
- A回答:B会告诉你A门后边是宝藏——宝藏在B门
- A回答:B会告诉你B门后边是宝藏——宝藏在A门
- A说谎话,那么B说的就是真话
- A回答:B会告诉你A门后边是宝藏——宝藏在B门
- A回答:B会告诉你B门后边是宝藏——宝藏在A门
我们并不知道到底A是说真话的还是说假话的人,所以如果单纯地拿出一种情况,我们并不能判断出宝藏到底在哪扇后,但是如果总计上述几种情况,我们不能判断出:A给出的B的答案总是与真实情况相反
所以,我们只需问A上述问题,得到答案后选择相反的门就对了。
逻辑判断方法
事情到这里告一段落,但是如果到这就告一段落就白玩了,这么多假设这么多分支绕得人头大,如果探险得最后一关有时间限制,来个恶狼啥的,估计财宝就得不到了。
那么有没有办法迅速地分析出上述结论呢?答案是有的——无论是学普通逻辑、还是学离散数学、还是学数字电路、又或者学编程语言,我们都会遇到逻辑值以及逻辑运算,比如:逻辑与、逻辑或、逻辑非
等等并且常常接触两个逻辑值:逻辑真(True)、逻辑假(False)
那么再回头看我的处理:
问A这个问题:
如果我问B哪扇门后是宝藏,B会如何回答?
其实就是:A过滤一下B的答案,并返回给我
,我们把哪扇门后是宝藏换个问法:B门后是宝藏吗?,那么对于真实的结果:是或者否
,亦即:逻辑真(True)或者逻辑假(False)
继续下一步,如果B是说谎者,那么他会在真实的结果之上变成错误的结果,亦即:逻辑非(取反)
,否则不做处理。
继续下一步,如果A是说谎者,那么他会在真实的结果之上变成错误的结果,亦即:逻辑非(取反)
,否则不做处理。
流程大致是这样的:答案 —— B过滤 —— A过滤 —— 我(寻宝者)
因为B和A只能有一个是说谎者,所以我最终得到的答案为:┐答案
,就说经过上述流程后我们得到的是逻辑非(取反)
后答案!这样还怕得不到正确答案了吗?
好吧,我来画出逻辑非的真值表
P|┐P
—-|—-
False| True
True| False
更进一步
如果两个人都说假话呢?按照上述规律我们可以问同样的问题。然后根据双重否定律:
┐┐P <==> P
我们就得到的答案就是正确答案了。
但是我们真那样做就是傻子了,因为直接问其中任何一人哪个是宝藏,然后直接按相反的答案来就可以了😂
那么如果是三个人两扇门,其中有两个说谎呢?或者是三个人其中有一个人说谎呢?这该如何处理呢?这个问题留给读者自己思考吧。
This page is synchronized from the post: 用逻辑判断的方法来寻宝