Three Martians at the Crossroads


题目

一位逻辑学家来到火星。和逻辑谜题中的常见情形一样,她走到一个岔路口,想知道两条路中哪一条通往村庄。这里有三个愿意回答问题的火星人:一个来自永远说真话的部落,一个来自永远说假话的部落,一个来自随机回答的部落。逻辑学家不知道他们各自属于哪个部落。

现在她只被允许提出两个是非问题,而且每个问题都只能问给其中一位火星人。她能否据此确定哪条路通向村庄?如果她只能提出一个是非问题,又是否还能做到?

分析

设三位火星人分别为\(A/B/C\)

先看为什么一个问题不够

无论你把这唯一的问题问给谁,都有可能恰好问到随机回答者。而一旦问到随机回答者,他就可能对同一个问题随意回答“是”或“否”,这两个回答都不能稳定对应某一条路。

也就是说,在“左路通向村庄”和“右路通向村庄”这两种真实情形下,随机回答者都可能给出同样的回答。于是你无法根据这唯一的回答确定该走哪边。

所以,只问一个是非问题,不可能保证成功

既然一问不可能,那么两问若想成功,第一问就不能直接拿来问路,而必须先完成一件事:

  • 找出一个确定不是随机回答者的人。

做到这一点以后,第二问再拿来问路,就足够了。

关键技巧是使用下面这种“套壳问题”:

如果我问你“命题\(P\)是否为真”,你会回答“是”吗?

对于诚实者说谎者,这个问题都会返回命题\(P\)的真实真假;只有随机回答者会乱答。

身份 \(P\)的真假 如果直接问“\(P\)是否为真?” 对套壳问题的回答
诚实者 会答“是” 会答“是”
诚实者 会答“否” 会答“否”
说谎者 会答“否” 会答“是”
说谎者 会答“是” 会答“否”

可见,只要对方不是随机回答者,那么对这个套壳问题的最终回答总与\(P\)的真假一致:\(P\)为真时答“是”,\(P\)为假时答“否”。

因此先向\(A\)提第一个问题:

如果我问你“\(B\)是不是随机回答者”,你会回答“是”吗?

分情况看:

  1. 如果\(A\)回答“是”,那么\(C\)一定不是随机回答者。

如果\(A\)不是随机者,那么这句话就是真的,说明\(B\)是随机者,于是\(C\)不是随机者。

如果\(A\)本身就是随机者,那么\(B\)\(C\)都不是随机者,所以\(C\)仍然不是随机者。

  1. 如果\(A\)回答“否”,那么\(B\)一定不是随机回答者。

如果\(A\)不是随机者,那么这句话就是真的,说明\(B\)不是随机者。

如果\(A\)本身就是随机者,那么\(B\)\(C\)都不是随机者,所以\(B\)仍然不是随机者。

因此,第一问之后我们总能确定一个必定不是随机者的人:

  • \(A\)答“是”,就去问\(C\)
  • \(A\)答“否”,就去问\(B\)

这正是上一段所需要的目标。接下来,第二问向这个确定的非随机者提出:

如果我问你“左边这条路是否通向村庄”,你会回答“是”吗?

因为对方不是随机者,所以:

  • 若答“是”,走左边;
  • 若答“否”,走右边。

所以,两问足够,而且可以保证找到通向村庄的路

所以结论是:

  • 一问不可能保证解决。
  • 两问可以保证解决。

Next