引言:概率论中最反直觉的奇迹
2003年,丹麦计算机科学家彼得·布罗·米尔特森(Peter Bro Miltersen)提出了一个轰动数学界的智力谜题——100名囚犯问题(100 Prisoners Problem):
- 监狱里有编号为 $1$ 到 $100$ 的 $100$ 名死刑犯。典狱长在一个密室里放了 $100$ 个抽屉(箱子),箱子外侧贴着 $1$ 到 $100$ 的编号;箱子内部随机放入了写有 $1$ 到 $100$ 号码的纸条(每个箱子一张,构成 $1$ 到 $100$ 的随机排列)。
- 规则:每名囚犯依次独自进入密室,最多可以打开 $50$ 个箱子寻找写有自己编号的纸条。离开时必须将所有箱子恢复原状,且一旦游戏开始,囚犯之间绝对禁止任何形式的信息传递或暗示(但在游戏开始前可以共同商定策略)。
- 生死判定:只有当 全部 $100$ 名囚犯都找到自己的号码 时,所有人才能被无罪释放;哪怕只有 $1$ 人失败,全体 $100$ 人立即处决。
如果每名囚犯都各自随机打开 $50$ 个箱子(独立随机策略),单人成功率为 $50/100 = 1/2$。由于各人成败相互独立,全体生还的概率是令人绝望的:
$$\mathbb{P}(\text{全体生还})_{\text{独立}} = \left(\frac{1}{2}\right)^{100} = \frac{1}{1,\!267,\!650,\!600,\!228,\!229,\!401,\!496,\!703,\!205,\!376} \approx 7.89 \times 10^{-31}$$然而,米尔特森的同事斯文·斯카이姆(Sven Skyum)发现了一个极为简单的指针追踪策略(Pointer-Following Strategy),在不传递任何1比特信息的前提下,将全体生还率一举提升到了 $31.18\%$(超过三分之一)!
第一章:指针追踪策略与置换群的轮换分解
斯文·斯카이姆提出的策略只有三步(设囚犯自己的编号为 $k \in \{1, \dots, 100\}$):
- 第1步:进入密室后,首先打开外侧标有自己编号的 第 $k$ 号箱子。
- 第2步:若箱内纸条号码 $x_1 = k$,则成功;若 $x_1 \neq k$,下一步就去打开 第 $x_1$ 号箱子。
- 第3步:读取新箱子里的号码 $x_2$,再去打开第 $x_2$ 号箱子……以此类推,沿着链条 $k \mapsto \sigma(k) \mapsto \sigma^2(k) \mapsto \cdots$ 追踪,直到找到号码 $k$ 或用完 $50$ 次机会。
flowchart TD
Start["囚犯 k 进入密室 (最多 50 次机会)"]
Step1["第 1 步: 打开第 k 号箱子,读取纸条号码 x = σ(k)"]
Check{"纸条号码 x == k ?"}
Win["成功找到自己的号码 k !"]
Limit{"已开箱次数 < 50 ?"}
Next["下一步: 将指针更新为第 x 号箱子并打开 (x ← σ(x))"]
Lose["超过 50 次仍未回到 k: 任务失败 (全体处决)"]
Start --> Step1 --> Check
Check -- "是" --> Win
Check -- "否" --> Limit
Limit -- "是" --> Next --> Check
Limit -- "否 (所在轮换长度 ℓ > 50)" --> Lose
为什么这个动作能创造奇迹?在代数学中,箱子编号与内部纸条的对应关系是 $2n = 100$ 元对称群 $S_{2n}$ 中的一个双射置换 $\sigma$。由群论基本定理,任意有限置换 $\sigma \in S_{2n}$ 都可以唯一地分解为若干个不相交轮换(Disjoint Cycles)的乘积:
$$\sigma = C_1 \circ C_2 \circ \cdots \circ C_m, \qquad \sum_{i=1}^m |C_i| = 2n = 100$$因为 $\sigma$ 是双射,从箱子 $k$ 出发沿着指针追踪,绝不会陷入旁支死胡同,而必定沿着包含 $k$ 的唯一闭合轮换绕行一周,最终必然回到起点箱子 $k$(因为指向箱子 $k$ 的那张写有号码 $k$ 的纸条正是轮换中 $k$ 的前驱 $\sigma^{-1}(k)$)!因此:
- 囚犯 $k$ 能否在 $50$ 步内找到号码 $k$,等价于包含 $k$ 的那个轮换的长度 $\ell$ 是否满足 $\ell \le 50$。
- 全体 $100$ 名囚犯全部生还,当且仅当置换 $\sigma \in S_{100}$ 的轮换分解中没有任何一个轮换的长度超过 $50$(即最大轮换长度 $L_{\max}(\sigma) \le 50$)!
第二章:长轮换计数定理与调和数 $1 - \ln 2$ 的严密推导
设总人数为 $2n$(此处 $2n = 100, n = 50$)。如果一个置换 $\sigma \in S_{2n}$ 含有长度严格大于 $n$ 的长轮换($\ell \in \{n+1, \dots, 2n\}$),由于两个长度都大于 $n$ 的不相交轮换之和至少为 $(n+1)+(n+1) = 2n+2 > 2n$,在同一个置换中,长度 $\ell > n$ 的长轮换最多只能存在唯一一个!
这意味着事件 $E_\ell := \{\text{置换 }\sigma\text{ 含有长度为 }\ell\text{ 的轮换}\}$ 对 $\ell = n+1, n+2, \dots, 2n$ 是两两互斥(Mutually Exclusive)的!我们来精确计算满足 $E_\ell$ 的置换个数:
- 从 $2n$ 个元素中选出构成该长轮换的 $\ell$ 个元素,共有 $\binom{2n}{\ell}$ 种选法;
- 将这 $\ell$ 个元素排成一个单一的闭合圆周轮换,共有 $(\ell - 1)!$ 种排法(圆排列);
- 剩下的 $2n - \ell$ 个元素可以任意排列,共有 $(2n - \ell)!$ 种排法。
将三者相乘,阶乘发生惊人的约分:
$$|E_\ell| = \binom{2n}{\ell} \cdot (\ell - 1)! \cdot (2n - \ell)! = \frac{(2n)!}{\ell! \, (2n - \ell)!} \cdot (\ell - 1)! \, (2n - \ell)! = \frac{(2n)!}{\ell}$$除以总排列数 $|S_{2n}| = (2n)!$,得到含有长度为 $\ell > n$ 的轮换的精确概率仅为 $\mathbb{P}(E_\ell) = \frac{1}{\ell}$!利用互斥事件的可加性与调和数(Harmonic Number) $H_N = \sum_{k=1}^N \frac{1}{k}$,全体生还概率为:
$$\boxed{P_{\text{success}}(2n) = 1 - \sum_{\ell = n+1}^{2n} \frac{1}{\ell} = 1 - \left(H_{2n} - H_n\right) \xrightarrow{n \to \infty} 1 - \int_1^2 \frac{dx}{x} = 1 - \ln 2 \approx 30.685\%}$$对 $2n = 100, n = 50$,精确生还率为 $P_{\text{success}}(100) = 1 - (H_{100} - H_{50}) \approx 1 - 0.688172 = \mathbf{31.1828\%}$!
第三章:为什么没有传递信息却能逆天改命?——风险的完美耦合
为什么单人成功率明明始终是 $50\%$(成功人数的数学期望在两种策略下完全相同:$\mathbb{E}[\sum I_k] = 100 \times 0.5 = 50$),全体生还率却暴涨了 $3.95 \times 10^{29}$ 倍?
flowchart TD
Pool["总失败风险池固定: 期望失败人数 E[失败] = 50 人"]
Indep["独立随机策略: 100 人成败相互独立 (风险分散在几乎所有平行宇宙)"]
Cycle["指针追踪策略: 100 人命运绑定于同一个置换 σ 的轮换结构 (风险极端耦合)"]
ResI["99.99999999999999999999999999992% 的宇宙至少死 1 人 → 全体生还率 ≈ 7.89×10⁻³¹"]
ResC["68.82% 的宇宙(含 ℓ>50 长轮换)多人团灭;31.18% 的宇宙(全短轮换) 100 人全员生还!"]
Pool --> Indep --> ResI
Pool --> Cycle --> ResC
| 比较维度 | ① 独立随机策略 | ② 指针追踪(轮换)策略 |
|---|---|---|
| 单人成功概率 $\mathbb{P}(A_k)$ | $50.00\%$ | $50.00\%$(完全不变) |
| 期望成功人数 $\mathbb{E}[X]$ | $50$ 人 | $50$ 人(完全不变) |
| 囚犯间相关性 | 零相关(相互独立) | 通过共享环境 $\sigma$ 的轮换结构强正相关 |
| $100$ 人全体生还率 | $(1/2)^{100} \approx 7.89 \times 10^{-31}$ | $1 - (H_{100} - H_{50}) \approx 31.18\%$ |
| $n \to \infty$ 渐近下界 | $0$(指数级归零) | $1 - \ln 2 \approx 30.685\%$(恒定正常数) |
- 概率论中的耦合(Coupling)与团灭换生机:在规则“哪怕1人失败即全员处决”下,失败1人和失败51人的惩罚完全相同。独立策略把失败风险均匀撒在所有样本路径上,导致几乎每条路径都有约50人失败;而指针追踪策略将所有人的命运耦合(Coupled)在同一个置换 $\sigma$ 的拓扑结构上——把所有的失败高度浓缩进那 $68.82\%$ 含有 $\ell > 50$ 长轮换的排列里(一旦失败至少51人一起失败),从而把整整 $31.18\%$ 的样本空间彻底清空为“零失败净土”!
- 如果典狱长恶意排布纸条怎么办? 如果典狱长故意把纸条排成一个长度为 $100$ 的大轮换,生还率将降为 $0$。但囚犯们只需在进场前秘密商定一个随机的重命名双射 $\tau \in S_{100}$,将箱子 $x$ 视为 $\tau(x)$,則新置换 $\tau \sigma \tau^{-1}$ 的轮换结构被完全随机化,无论典狱长如何做手脚,生还率依然严格保持 $31.18\%$!
