مقدمة: أعظم معجزة مناقضة للحدس في نظرية الاحتمالات
في عام 2003، طرح عالم الحاسوب الدنماركي بيتر برو ميلترسن (Peter Bro Miltersen) لغزاً شهيراً يُعرف باسم مسألة السجناء المئة (100 Prisoners Problem):
- يوجد \(100\) سجين محكوم عليهم بالإعدام مرقمين من \(1\) إلى \(100\). في غرفة مغلقة يوجد \(100\) صندوق تحتوي بداخلها على بطاقات مرقمة من \(1\) إلى \(100\) موزعة عشوائياً (تبديل \(\sigma \in S_{100}\)).
- القاعدة: يدخل كل سجين بمفرده بالتتابع ويحق له فتح \(50\) صندوقاً كحد أقصى للعثور على رقمه. تُعاد الصناديق كما كانت بعد خروجه، ويُمنع منعاً باتاً أي تواصل بعد بدء اللعبة (لكن يُسمح بالاتفاق على خطة مسبقة).
- شرط النجاة: إذا نجح جميع السجناء المئة في إيجاد أرقامهم يُعفى عنهم جميعاً؛ أما إذا فشل سجين واحد فقط فيُعدم المئة جميعاً.
إذا فتح كل سجين \(50\) صندوقاً عشوائياً (الاستراتيجية المستقلة)، فإن احتمال نجاح الفرد هو \(1/2\)، لكن احتمال نجاة الجميع معاً هو:
\[\mathbb{P}(\text{نجاة الجميع})_{\text{مستقل}} = \left(\frac{1}{2}\right)^{100} \approx 7.89 \times 10^{-31}\]ومع ذلك، اكتشف سفين سكايوم (Sven Skyum) استراتيجية تتبع المؤشرات (Pointer-Following Strategy) التي ترفع احتمال نجاة الجميع إلى \(31.18\%\) دون نقل بت واحد من المعلومات!
الفصل 1: تتبع المؤشرات وتفكيك الزمرة المتماثلة إلى دورات منفصلة
بالنسبة للسجين رقم \(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 خطوة: إعدام الجميع"]
Start --> Step1 --> Check
Check -- "نعم" --> Win
Check -- "لا" --> Limit
Limit -- "نعم" --> Next --> Check
Limit -- "لا (طول الدورة ℓ > 50)" --> Lose
لماذا تنجح هذه الطريقة؟ إن التقابل صندوق \(\mapsto\) بطاقة هو تقابل ثنائي \(\sigma\) في الزمرة المتماثلة \(S_{2n}\) (\(2n=100\)). وكل تبديل منتهٍ يتفكك بطريقة وحيدة إلى جداء دورات منفصلة (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\) ليصل في نهايتها إلى \(\sigma^{-1}(k)\) (الصندوق الذي يحوي البطاقة \(k\)). وعليه:
- ينجح السجين \(k\) خلال \(\le 50\) خطوة إذا وفقط إذا كان طول دورته \(\ell \le 50\).
- ينجو السجناء المئة جميعاً إذا وفقط إذا خلا التبديل \(\sigma \in S_{100}\) من أي دورة يزيد طولها على \(50\) (\(\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\) هو:
- اختيار \(\ell\) عنصراً للدورة الطويلة: \(\binom{2n}{\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)!\) نجد \(\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["فشل واحد على الأقل في 99.99...92% من الأكوان ← النجاة ≈ 7.89×10⁻³¹"]
ResC["تركيز الفشل في 68.82% (ℓ>50) ← نجاة 100% في 31.18% من الأكوان!"]
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\%\) |
- الاقتران (Coupling): بما أن فشل شخص واحد يعادل في العقوبة فشل 51 شخصاً، تحشد استراتيجية الدورات جميع حالات الفشل داخل الـ \(68.82\%\) من التباديل ذات الدورة \(\ell > 50\)، مما يترك \(31.18\%\) من فضاء العينة خالياً تماماً من أي فشل!
- التحصين ضد السجّان الخبيث: بالاتفاق مسبقاً على تقابل عشوائي سري \(\tau \in S_{100}\)، يضمن الترافق \(\tau \sigma \tau^{-1}\) بقاء احتمال النجاة عند \(31.18\%\).
