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