骑士与无赖
在一个岛上,骑士永远说真话,无赖永远说假话。你遇到两个岛民 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)。求解这个方程(在真/假取值下)就得到唯一解。
它看起来像脑筋急转弯,实则是数理逻辑与模型论的玩具版本:用极简的规则,训练人把自然语言精确翻译成可计算的真值条件。想挑战更强的?试试“此话为假”的说谎者悖论——那连骑士无赖的规则都救不了。