>_ 谬误台 // wondrous.top

首页 : /zh/t/puzzle/ : census

INKWIRE(7) reasoning puzzles INKWIRE(7)

census

说谎者普查

所有人都早已知道,但不说出口就什么事都不会发生。

解题法
公共知识归纳:公告增加的是「层数」而不是「事实」
发布
署名
阅读
4 分钟
归入
knowledge

名称

题目

一座岛上一百位居民围成一个圈。每位居民能看见其他所有人的额头,唯独看不见自己的。每人的额头上要么有一个点,要么是空白,而你看别人的记号看得一清二楚。

所有人都知道这条规则:如果你能推断出自己额头上有记号,就必须在当天夜里离岛,而且你的推断会是对的。公告之后,任何人不得交流。

九十九位居民额头有点,一位是空白。一位访客到来,对全体说了一句真话:「你们当中至少有一个人的额头有点。」然后访客离开。接下来会发生什么?在哪一夜发生?

信号

条件与每个条件所强制的结论

# 条件 它强制了什么
1 每个人都能看见其他所有人的额头 每个有点的人恰好看见 98 个点;空白的那位看见 99 个点
2 每人都懂规则且推理无误 行为可以用「某人看见几个点」上的归纳来预测
3 「至少有一个点」所有人本就都知道 这句话没有增加任何一阶事实;它的全部贡献在于「它现在成了公共知识」——人人都知道人人都知道,可以无限往上叠
4 任何人无法发信号或商议 唯一的信息更新渠道是每晚的离岛情况,而这件事本身也是公共知识
5 恰好一位居民是空白 99 位有点的人各自看见 98 个点,归纳深度到 98,于是他们全部在第 98 夜离岛

例子

解题法

对「每个人看见什么」做归纳。访客那句话增加的不是关于点的信息,而是给「人人可以依赖别人也知道」这件事加了一个深度下限。

[+] 完整解法 4

先从只有一个点的情况开始。看见零个点的人听到「至少有一个点」,立刻知道那就是自己,于是在第一夜离岛。

两个点的情况:每个有点的人看见一个点,会推理「如果我是空白,那他就是唯一一个有点的人,他今晚就会走」。第一夜无人离岛,于是两人都断定自己有点,在第二夜离岛。

规律可以推广:有 n 个点时,全部 n 位有点者在第 n 夜一起离岛。因为每人都看见 n−1 个点,会等待 n−1 个夜晚,去看那个「若自己是空白就该发生」的离岛。本题中 n = 99,所以第 99 夜,99 位有点者同时离岛,空白的那位留下。

空白的那位看见 99 个点。只有当 n = 100 时,这个观察才与「自己也有点」相容;而第 98 夜无人离岛这一点,对他而言排除了 n = 100。他的推理完全正确,结论是自己空白——这正是他留下来的原因。

近亲条目

[+] 补充与常见疑问 3
这句话究竟改变了什么?
它造出了一个基础情形。没有它,「如果我是空白,那么他就会看见零个点、今晚就走」这条链条没有起点,因为没人确定这条链能落到底。这句话提供了归纳所依赖的那个平凡情形。
为什么需要 99 夜,而不是一夜?
因为归纳的每一层都必须被观察到,而不能被假定。每一个无人离岛的夜晚都是一份证据,把所有人对「点的数量下限」的估计往上推一格。
访客说的必须是真的吗?
必须。如果这句话为假,第一夜预期中的离岛就不会发生,归纳会在第二天崩塌而不会继续推进。虚假的公告不会产生任何协同行为。

适用范围 — 本题用于推理练习;上面的归纳以一般 n 的形式给出。