Featured image of post Задача о 100 узниках: как следование по циклам повышает шанс выживания с 0,0000000000000000000000000000008% до 31,18%

Задача о 100 узниках: как следование по циклам повышает шанс выживания с 0,0000000000000000000000000000008% до 31,18%

Математический разбор задачи о 100 узниках (Милтерсен 2003): разложение подстановок на независимые циклы, подсчет длинных циклов 1/ℓ, гармонические числа, предел 1 - ln 2 ≈ 31,18% и связывание рисков без передачи информации.

Введение: самое парадоксальное чудо теории вероятностей

В 2003 году датский информатик Петер Бро Милтерсен сформулировал знаменитую задачу о 100 узниках:

  • $100$ приговоренных к смерти узников имеют номера от $1$ до $100$. В комнате стоят $100$ закрытых коробок, внутри которых случайно разложены карточки с номерами от $1$ до $100$ (подстановка $\sigma \in S_{100}$).
  • Правило: Каждый узник по очереди входит в комнату и может открыть не более $50$ коробок, чтобы найти свой номер. После его выхода коробки закрываются, и любое общение после начала испытания исключено (но стратегию можно обсудить заранее).
  • Условие спасения: Только если все $100$ узников найдут свои номера, всех помилуют; если хотя бы один потерпит неудачу, казнят всех $100$.

Если каждый открывает $50$ случайных коробок (независимая стратегия), шанс одного равен $1/2$, но вероятность общего спасения ничтожна:

$$\mathbb{P}(\text{все спасены})_{\text{незав.}} = \left(\frac{1}{2}\right)^{100} \approx 7{,}89 \times 10^{-31}$$

Однако коллега Милтерсена Свен Скайум нашел стратегию следования по указателям (Pointer-Following Strategy), которая без передачи единого бита информации поднимает шанс общего спасения до $31{,}18\,\%$!


Глава 1: Следование по указателям и разложение на независимые циклы

Стратегия Скайума для узника с номером $k \in \{1, \dots, 100\}$:

  1. Шаг 1: Сначала открыть коробку № $k$.
  2. Шаг 2: Если внутри карточка $x_1 = k$, успех; если $x_1 \neq k$, следующей открыть коробку № $x_1$.
  3. Шаг 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 шагов: Общая казнь"]
    Start --> Step1 --> Check
    Check -- "Да" --> Win
    Check -- "Нет" --> Limit
    Limit -- "Да" --> Next --> Check
    Limit -- "Нет (длина цикла ℓ > 50)" --> Lose

Почему это работает? Соответствие коробка $\mapsto$ карточка есть биекция $\sigma$ в симметрической группе $S_{2n}$ ($2n=100$). Любая конечная подстановка единственным образом раскладывается в произведение независимых (непересекающихся) циклов:

$$\sigma = C_1 \circ C_2 \circ \cdots \circ C_m, \qquad \sum_{i=1}^m |C_i| = 2n = 100$$

Так как $\sigma$ биективна, стартуя с коробки $k$, узник движется по единственному замкнутому циклу, содержащему $k$, и завершает обход на $\sigma^{-1}(k)$ (коробке с карточкой $k$). Следовательно:

  • Узник $k$ успешен за $\le 50$ шагов тогда и только тогда, когда длина его цикла $\ell \le 50$.
  • Все $100$ узников выживают тогда и только тогда, когда подстановка $\sigma \in S_{100}$ не содержит ни одного цикла длины $\ell > 50$!

Глава 2: Подсчет длинных циклов и гармонические числа ($1 - \ln 2$)

Для $2n$ узников ($n = 50$) подстановка $\sigma \in S_{2n}$ может содержать не более одного цикла длины $\ell > n$, так как два непересекающихся цикла длины $> n$ требовали бы минимум $2n+2 > 2n$ элементов. Значит, события $E_\ell := \{\sigma \text{ содержит цикл длины } \ell\}$ при $\ell = n+1, \dots, 2n$ попарно несовместны! Число подстановок в $E_\ell$ равно:

  1. Выбор $\ell$ элементов длинного цикла: $\binom{2n}{\ell}$;
  2. Число ориентированных циклов на этих $\ell$ элементах: $(\ell - 1)!$;
  3. Перестановки остальных $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)!$ дает $\mathbb{P}(E_\ell) = \frac{1}{\ell}$. Через гармонические числа $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$ имеем $P_{\text{success}}(100) = 1 - (H_{100} - H_{50}) \approx \mathbf{31{,}1828\,\%}$!


Глава 3: Связывание рисков (Coupling) без передачи информации

  flowchart TD
    Pool["Суммарный риск фиксирован: Ожидание неудач E[неудач] = 50"]
    Indep["Независимая стратегия: Неудачи распылены почти по всем исходам"]
    Cycle["Стратегия циклов: Судьбы связаны структурой циклов σ"]
    ResI["Минимум 1 провал в 99,99...92 % исходов → Выживание ≈ 7,89×10⁻³¹"]
    ResC["Провалы сжаты в 68,82 % исходов (ℓ>50) → В 31,18 % исходов выживают все 100!"]
    Pool --> Indep --> ResI
    Pool --> Cycle --> ResC
Характеристика1. Независимая стратегия2. Стратегия циклов
Личный успех $\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\,\%$
  1. Связывание (Coupling): Поскольку 1 неудача и 51 неудача одинаково ведут к казни, стратегия циклов концентрирует все неудачи в $68{,}82\,\%$ перестановок с длинным циклом ($\ell > 50$), очищая $31{,}18\,\%$ пространства элементарных исходов от единой ошибки!
  2. Защита от коварного начальника тюрьмы: Тайно выбрав заранее случайную биекцию $\tau \in S_{100}$, узники сопряжением $\tau \sigma \tau^{-1}$ гарантируют те же $31{,}18\,\%$ выживания.
comments powered by Disqus