骑士与无赖

在一个岛上,骑士永远说真话,无赖永远说假话。你遇到两个岛民 A 和 B,A 说:“我们俩至少有一个是无赖。”仅凭这一句,你能判断 A、B 各是哪种人吗?

分类
逻辑悖论
难度
进阶
标签
逻辑、真值、雷蒙德·斯穆里安
骑士与无赖 · 漫画配图
漫画 · 骑士与无赖

题目

荒岛上只有两种人:骑士永远说真话,无赖永远说假话。你遇见两个岛民 A 和 B。A 指着 B 说:

“我们俩之中,至少有一个是无赖。”

请问:A 是骑士还是无赖?B 呢?

(提示:假设 A 是无赖,看看会不会自相矛盾。)

答案与解析

A 是骑士,B 是无赖。

用反证法:

  • 假设 A 是无赖。那么 A 说的话一定是假的。A 说“至少有一个是无赖”——如果这句话为假,就意味着“两人都不是无赖”,即 A、B 都是骑士。但这与“A 是无赖”矛盾。所以 A 不可能是无赖。
  • 因此 A 是骑士,他说的是真话:“至少有一个是无赖”成立。既然 A 自己已是骑士,那个无赖只能是 B

所以结论唯一:A 骑士,B 无赖。

背后的数学

这类谜题由逻辑学家雷蒙德·斯穆里安发扬光大,本质是在做命题真值演算

  • 把“某人是骑士”设为命题变量;
  • “骑士说 P” 意味着 “此人是骑士 ⟺ P 为真”。

于是 A 的话翻译为逻辑式:A 是骑士 ⟺ (¬A ∨ ¬B)。求解这个方程(在真/假取值下)就得到唯一解。

它看起来像脑筋急转弯,实则是数理逻辑模型论的玩具版本:用极简的规则,训练人把自然语言精确翻译成可计算的真值条件。想挑战更强的?试试“此话为假”的说谎者悖论——那连骑士无赖的规则都救不了。