大家好,我是 Senko。 本文将解读推理谜题的金字塔“斑马谜题”。
五栋房子排成一排,住户的国籍、房子的颜色、饮料、香烟牌子、宠物全都各不相同。给你的只有“英国人住红房子”这类零碎线索 15 条。要从中查明的是“谁在喝水,谁养着斑马”。它以“爱因斯坦少年时代所作,还说世上 98% 的人解不出”的名头传遍全球,可其实这个传说本身,就是谜题里埋的另一个谜。
斑马谜题是什么
斑马谜题(英语 zebra puzzle),是仅凭给定条件,用消去法把多个属性的组合唯一确定下来的推理谜题代表。1962 年登在杂志上的原典规则如下。
- 五栋房子横排成一列,各自颜色不同
- 住户的国籍、饮料、香烟牌子、宠物全都不同
- 以下 15 条线索全部成立
- 英国人住在红房子里
- 西班牙人养狗
- 绿房子的住户喝咖啡
- 乌克兰人喝红茶
- 绿房子紧挨着象牙白房子的右边
- 抽老金的人养蜗牛
- 黄房子的住户抽库尔
- 正中间那栋的住户喝牛奶
- 挪威人住最左边那栋
- 抽切斯特菲尔德的人住在养狐狸的人隔壁
- 抽库尔的人的隔壁养马
- 抽好彩的人喝橙汁
- 日本人抽百乐门
- 挪威人住在蓝房子隔壁
- 那么问题来了。谁在喝水?谁养着斑马?
您注意到狡猾之处了吗。线索当中,水和斑马一次也没出现过。用 14 条条件把其余全部项目定死,最后剩下的那个空格,才是答案的座位。
1962 年《生活》杂志上的原典与作者传说
这道谜题的初出很清楚,是1962 年 12 月 17 日号的《生活》国际版杂志。读者的解答蜂拥而至,次年 1963 年 3 月号上公布了正解与答对者名单。上面列的 15 条线索,基本就是这一版的直译。
另一方面,网上流传的“爱因斯坦少年时代所构思”“世上 98% 的人解不出”这类说法,找不到任何佐证。说是刘易斯·卡罗尔所作的说法也一样。况且《生活》版里出现的香烟牌子都是 1960 年代在美国售卖的商品,与 1955 年去世的爱因斯坦的少年时代对不上。
也就是说,“98% 的人解不出”这句煽动语,是为了让谜题显得有魅力而后加的演出。话虽如此,谜题本身的做工是超一流的,就算扣掉这块假招牌,它至今仍在被全世界的人解着。
画表格,从确定的信息开始填
斑马谜题的解法基本只有一种:做一张以房子位置 1~5 为列、以属性(颜色、国籍、饮料、香烟、宠物)为行的表格,从确定的项目开始填。跟一遍开局的流程。
首先能立刻定下两项。由 8 知第 3 栋的饮料是牛奶,由 9 知第 1 栋是挪威人。于是由 14,挪威人隔壁的蓝房子确定为第 2 栋。
接着用 5。绿在象牙白紧右边,所以是(象牙白、绿)这一对。第 2 栋是蓝,所以候选是第 3、4 栋或第 4、5 栋。若绿是第 3 栋,按 3 就该喝咖啡,可第 3 栋是牛奶,矛盾。于是象牙白是第 4 栋,绿是第 5 栋。再看 1,英国人住红房子,可第 1 栋是挪威人,所以红不是第 1 栋,剩下的第 3 栋是红,第 1 栋是黄就定了。由 7,第 1 栋的住户抽库尔;由 11,其隔壁的第 2 栋养马——就这样顺藤摸瓜下去。
像这样反复“确定→用它去确定下一个”的连锁,与“若是这里就会矛盾,所以划掉”的消去法,表格最终会被填成唯一的一种。答案是:喝水的是第 1 栋的挪威人,养斑马的是第 5 栋的日本人。
| 房子 | 颜色 | 国籍 | 饮料 | 香烟 | 宠物 |
|---|---|---|---|---|---|
| 第 1 栋 | 黄 | 挪威 | 水 | 库尔 | 狐狸 |
| 第 2 栋 | 蓝 | 乌克兰 | 红茶 | 切斯特菲尔德 | 马 |
| 第 3 栋 | 红 | 英国 | 牛奶 | 老金 | 蜗牛 |
| 第 4 栋 | 象牙白 | 西班牙 | 橙汁 | 好彩 | 狗 |
| 第 5 栋 | 绿 | 日本 | 咖啡 | 百乐门 | 斑马 |
用 15 条条件把 249 亿种收成 1 种
这道谜题的厉害,一数数字就看出来了。五个属性各自的排法是 5 的阶乘即 120 种。整体组合是 120 的 5 次方,高达约 249 亿种。而区区 15 条条件,不多不少地把它收成了 1 种。少一条答案就会变成多个,多一条就会出现冗余。信息量被调到刚刚好,让解唯一确定——这就是它被称为名作的理由。
而这个结构,在计算机科学里正是被称为约束满足问题的重要研究对象本身。给变量(各房子的属性)赋值,寻找满足全部约束的组合。斑马谜题是求解约束满足的程序的标配基准测试,在 AI 教科书和被称为约束求解器的软件教程里反复出现。
我们在表格上做的“从确定信息里削减候选”操作叫约束传播,“先假设是这里,矛盾就退回”的操作叫回溯搜索,这两样正是现代求解器实际在用的基本技术。数独、数织之类的纸笔谜题,也都是同一个约束满足家族的成员。得知自己脑子里做的消去法有个正经名字,是不是有点开心?
实务本来就是由消去法谜题组成的
斑马谜题磨练出的技术,可以直接当实务的工具用。
首先是故障排查与调试。“既然出了这条日志,网络就是活的”“这个操作不复现,所以不是数据引起的”——这种切分正是从线索里划掉候选的作业,光在脑子里做必定会漏。就像解谜时画表格一样,“做一张‘候选×已查明事实’的表逐个排除”才靠谱。
其次是排班与分配的问题。排班表的制作、会议室的分配、课程表的编排,正是约束满足问题的实务版,现实中就是用约束求解器解的。从“老王周二不行”“这两人不能分到同一组”这类条件的集合里找解,其结构与五栋房子毫无二致。
还有一点很要紧,就是条件加太多会导致无解这份感觉。斑马谜题的 15 条条件绝妙地彼此兼容,可现实的需求定义里,堆起来的条件互相矛盾而变成“无解”是常事。连“放宽哪条条件才能生出解”这道找法一起算进去,实务就是一道消去法的谜题。
爱因斯坦传说与解法的疑问
真的是爱因斯坦做的吗
如前所述,没有佐证爱因斯坦所作的证据,能确认的初出是 1962 年的《生活》杂志。出现的香烟牌子是 1960 年代的商品,这一点也表明它是后世之作。“98% 的人解不出”这个数字同样没有出处。不过这类攀附权威的传说,很好地体现了“冠上天才的名字,问题就显得有魅力”这种人的心理,作为本站解读过的“对权威没抵抗力”(光环效应)的实例,我觉得也是有趣的素材。
不靠猜着假设,纯用消去法能解开吗
开局到中盘照本文那样只靠确定的连锁就能推进,可到了终盘,会出现用“如果这栋是这个”的假设去找矛盾的场面。不过这不是靠猜或瞎蒙,而是分情况讨论、用矛盾把其中一边否决掉这样正经的逻辑操作。它与数学的反证法是同一个东西,倒不如说,不怕假设与否决,才是这类谜题进步的关键。
它和数独有什么不同
两者都是约束满足问题,但约束的种类不同。数独的约束只有“同一行、同一列、同一宫里不能放相同数字”这一种,可以说是纯培养的问题。而斑马谜题的约束种类丰富,有“若 A 则 B”“A 在 B 隔壁”“A 紧挨 B 的右边”等等,考的是条件句的读解与逻辑的翻译。如果说数独是计算练习册,斑马谜题就可以说是应用题。
相关的逻辑谜题与谜题
靠分情况讨论与否决矛盾来揭穿身份的“天堂与地狱的守门人”、把他人视角的消去法练到极致的“蓝眼睛岛”,以及处理只收集对自己有利线索之心理的“确认偏误”。
结语
本文解读了“斑马谜题”。
249 亿种可能,仅凭 15 句不起眼的话就被折叠成 1 种。解完那一刻的畅快,在推理谜题里也属别格。而画表格、从确定处填起、用矛盾砍掉分支这套解法,同时也是现实问题解决中每天都在用的技术的原型——从故障切分一直到排班表的制作。
爱因斯坦所作这个传说是假的。可就算没有那块假招牌,这道谜题的内容也足以继续发光。还没有亲手解过的读者,请务必拿纸笔画着表挑战一次。
想返回逻辑谜题与概率谜题列表的读者请点击下方链接。
我们下一篇文章见。
📚 系列:逻辑谜题大全(5/11)


