题目
天堂之门
有两个门,一个门通往天堂,一个门通往地狱。每个门边都有一个护卫,其中一个护卫总是说实话,另外一个总是说假话。你不知道哪个护卫是说实话的,哪个护卫是说假话的。现在你只能问其中一个护卫一个问题,那么你怎样才能知道哪个是通往天堂的门?
三神
三位神 A、B 和 C 分别被称为 True、False 和 Random,顺序不分先后。 True 总说真话,False 总说假话,但 Random 说话的真假性随机。你的任务是通过问三个是非题来确定 A、B 和 C 的身份;每个问题必须只向一位神提出。神能听懂人类的语言,但只会用他们自己的语言回答问题,其中表示“是”和“否”的词是“da”和“ja”,但你不知道哪个词意味着哪个。
解答
天堂之门
这是非常经典的一题,答案有很多。
1)问随便一个护卫:“如果我问另一个护卫‘哪个门通往天堂?’他会回答哪个门?”。这个问题巧妙在相当于让两个人都回答了一遍问题,得到的一定是关于“哪个门通往天堂?”的错误的答案。
2)问随便一个护卫:“如果我问你‘左边门通往天堂吗?’你会回答‘是’吗?”。这个问题巧妙在相当于让同一人连续两次回答同一问题,最后得到的一定是关于“左边门通往天堂吗?”的正确的回答。
3)问随便一个护卫:“左边门通往天堂当且仅当你说真话吗?”
利用数理逻辑解释(“A当且仅当B”即“A同或B=真”)。
三神
这道题出自 Raymond Smullyan,George Boolos 将这道题评为史上最难逻辑谜题。
想破解这道题,可以利用上一题的一些思路。
大家可以先想想……
这道题最可恨的就是 Random,我们不妨先简化谜题,看看如果没有 Random,只有 True 和 False 时该如何区分他们。
如果我们能听懂神的语言,就可以直接利用我们在天堂之门问题的思路。但是,就算我们不懂神的语言,我们依旧能构造出类似的问题。设P为一个命题,我们可以提问:“如果我问你‘P为真?’你会回答‘da’吗?”。
大家可以尝试一下,无论da表示真还是假,也无论提问对象是 True 还是 False,若P为真命题,则得到的回答一定为 da,若P为假命题,则得到的回答一定为 ja。
大家可以再想想……
根据前面的推论,面对 True 或 False,我们可以在不懂神的语言的前提下得到想要的答案。于是我们只要先尝试找出 Random 或找出一个不是 Random 的神,接下来就简单了。
我们向A提问:“如果我问你‘B是Random?’你会回答‘da’吗?”
- 如果A回答da
- 若A非Random,那么B为Random,A和C非Random。
- 若A为Random,那么B和C非Random。
- 无论何种情况,C都不是Random。
- 如果A回答ja
- 若A非Random,那么B非Random。
- 若A为Random,那么B和C非Random。
- 无论何种情况,B都不是Random。
至此,我们找到了一个非 Random 的神,接下来的步骤就简单了,大家可以自己补完答案。