التعقيد حين تفكر المستعمرة
في صحراء أريزونا عام ١٩٨٢ جلست عالمة أحياء شابة تحت شمس حارقة تراقب نملا. ليس نملا عاديا - نمل حصاد أحمر يبني مستعمرات تحت الأرض بعمق مترين. ديبورا غوردون لم تكن تبحث عن شيء محدد. كانت تراقب وتسأل سؤالا بسيطا: من المسؤول هنا؟
كل كتب الأحياء تقول: الملكة. الملكة تقود المستعمرة وتعطي الأوامر والعاملات تنفذ. لكن غوردون راقبت لسنوات ولاحظت شيئا غريبا: الملكة لا تعطي أوامر. إطلاقا. كل ما تفعله هو وضع البيض. لا توجد خطة مركزية. لا يوجد مهندس معماري. لا يوجد مدير مشروع.
ومع ذلك المستعمرة تبني أنفاقا بزوايا محسوبة لتهوية مثالية. تخصص فرقا للاستكشاف وأخرى لجمع الطعام وأخرى للحراسة - وتغير النسب حسب الحاجة. حين تمطر تسد المداخل. حين يهاجمها عدو تحشد المقاتلين. تتخذ قرارات ذكية كمؤسسة بشرية. لكن لا توجد نملة واحدة "تقرر" أي شيء.
القواعد الثلاث
غوردون اكتشفت أن كل نملة تتبع قواعد بسيطة لا تتجاوز ثلاثا:
ثلاث قواعد. لا خطة. لا قائد. لا خريطة. ومن هذا تظهر طرق سريعة مثالية بين العش ومصدر الطعام - أقصر مسار ممكن. نفس المسألة التي يحتاج حاسوب حديث آلاف العمليات لحلها تحلها مستعمرة نمل بثلاث قواعد كيميائية بسيطة.
هذا اسمه الانبثاق ؟ (Emergence). الكل ليس أكبر من مجموع أجزائه فقط - الكل مختلف نوعيا عن أجزائه. لا توجد نملة ذكية. المستعمرة ذكية. لا توجد نملة تعرف الخريطة. المستعمرة تعرف.
لعبة الحياة: أربع قواعد تصنع كونا
النمل ليس وحيدا. نفس المبدأ - قواعد بسيطة محلية تنتج سلوكا معقدا عالميا - يظهر في كل مكان. في الأحياء وفي الفيزياء وفي الرياضيات. وأنقى تجسيد له جاء من رياضي بريطاني لم يكن يبحث عن الحياة بل عن لعبة.
في عام ١٩٧٠ جلس جون كونواي - رياضي بريطاني لامع في جامعة كامبريدج - مع طلابه في غرفة الشاي. على لوح غو أمامهم كانوا يجربون قواعد. يضعون حجارة على الشبكة ويحركونها بقواعد بسيطة لجيل بعد جيل. جربوا مئات التوليفات. معظمها مات بسرعة أو انفجر بلا ضابط.
ثم وجد كونواي أربع قواعد سحرية:
من هذه القواعد الأربعة تنبثق أشكال تمشي عبر الشاشة ("طائرات شراعية")، وأشكال تنبض، وأشكال تطلق طائرات شراعية بانتظام ("مدافع"). بل ثبت رياضيا أن لعبة الحياة تورينغ-كاملة ؟ - أي أنها تستطيع نظريا حساب أي شيء يحسبه حاسوبك. كون كامل من ٤ قواعد.
كونواي كره لعبة الحياة. ليس لأنها سيئة بل لأن شهرتها طغت على كل أعماله الأخرى في نظرية الزمر والعقد الرياضية. قال مرة: "كل ما يريد الناس سؤالي عنه هو تلك اللعبة السخيفة." توفي في أبريل ٢٠٢٠ بكوفيد-١٩. لكن لعبته الخالدة أثبتت شيئا عميقا: قواعد بسيطة - إن أحسن تصميمها - تنتج تعقيدا يفوق الخيال. كونواي جرب مئات التوليفات قبل أن يجد الأربع الصحيحة. القواعد لم تكتب نفسها.
نملة لانغتون: فوضى ثم طريق سريع
والآن لنعد إلى ما شاهدته في أول الفصل. ذلك الكائن الذي تحرك بفوضى ثم فجأة بنى طريقا مستقيما. هذه نملة لانغتون - واحدة من أجمل الاكتشافات في علوم التعقيد.
كريس لانغتون لم يكن أكاديميا تقليديا. في شبابه كان هيبيا ومتسلق جبال. عام ١٩٧٥ تحطم في حادث طيران شراعي - كسر ٣٥ عظمة. بقي في المستشفى سنة كاملة. خلال تعافيه الطويل قرأ عن الأنظمة الحية والمحاكاة الحاسوبية. قرر أن يكرس حياته لسؤال واحد: هل يمكن للآلات أن "تحيا"؟
صاغ مصطلح "الحياة الاصطناعية" عام ١٩٨٦ واخترع أبسط كائن يظهر سلوكا انبثاقيا. نملة على شبكة مربعات. قاعدتان فقط:
على مربع أبيض: استدر يمينا. اقلب المربع إلى أسود. تقدم خطوة.
على مربع أسود: استدر يسارا. اقلب المربع إلى أبيض. تقدم خطوة.
هذا كل شيء. قاعدتان.
ماذا تتوقع؟ حركة بسيطة متكررة ربما؟ اضغط "تشغيل" وراقب ثلاث مراحل: أولا فوضى عشوائية تماما (بقع سوداء وحمراء بلا نمط). ثم فجأة - بدون أي تحذير - طريق سريع قطري ينطلق في اتجاه واحد ولا يتوقف. التحول يحدث عند الخطوة ١٠٠٠٠ تقريبا. لا أحد يعرف لماذا.
أول عشرة آلاف خطوة: فوضى. بقع سوداء وبيضاء بلا نمط واضح. تبدو عشوائية تماما. ثم - بلا أي إنذار - تبدأ النملة ببناء "طريق سريع" قطري. نمط متكرر كل ١٠٤ خطوات يمتد إلى اللانهاية. لا أحد يعرف لماذا. لا يوجد برهان رياضي يفسر هذا الانتقال من الفوضى إلى النظام. إنه لغز مفتوح منذ عام ١٩٨٦.
حافة الفوضى
النمل الحقيقي ولعبة الحياة ونملة لانغتون - ثلاثة أنظمة مختلفة تماما تشترك في شيء واحد: التعقيد ينشأ على الحافة بين النظام والفوضى.
فكر في الأمر هكذا. نظام منتظم تماما - مثل بلورة - لا يحدث فيه شيء مثير. كل شيء متكرر ومتوقع. ونظام فوضوي تماما - مثل غاز ساخن - لا يستمر فيه شيء. كل شيء يتبدد ويتبعثر. لكن بينهما - على تلك الحافة الضيقة - يحدث السحر. تظهر أنماط وتختفي. يتشكل نظام ثم ينهار ثم يتشكل غيره. الحياة والذكاء والحساب - كلها تعيش على هذه الحافة.
كل ما ستقرأه في هذه المقالة يعود إلى هذا المبدأ. مولدات الأعداد العشوائية: قواعد حسابية بسيطة تنتج ما يبدو عشوائيا. الفراكتال: قواعد هندسية بسيطة تنتج تعقيدا لا نهائيا. نظرية الفوضى: معادلات بسيطة تنتج سلوكا لا يمكن التنبؤ به. التشفير: عمليات بسيطة تنتج أمانا لا يمكن كسره. قواعد بسيطة. تكرار. تعقيد.
النرد الكاذب
افتح هاتفك. افتح أي تطبيق فيه رقم "عشوائي" - لعبة نرد، خلط أوراق، كلمة مرور عشوائية. ارمِ النرد. ظهر ٤. ارمه مرة أخرى. ظهر ٢. يبدو عشوائيا.
لكنه ليس كذلك. كل "عدد عشوائي" في حاسوبك ليس عشوائيا. إنه نتيجة معادلة رياضية حتمية تماما. لو عرفت المعادلة والرقم الذي بدأت منه لاستطعت أن تتنبأ بكل "عشوائية" حاسوبك حتى يوم القيامة.
فكر في الأمر هكذا. الحاسوب آلة تأخذ مدخلا وتطبق خوارزمية وتعطيك مخرجا. نفس المدخل + نفس الخوارزمية = نفس المخرج. دائما. لا توجد خوارزمية تعطيك نتيجة عشوائية حقا. لأن "عشوائي" يعني "لا يمكن التنبؤ به" - والحاسوب بطبيعته يمكن التنبؤ بكل ما يفعله.
جون فون نويمان - الرجل الذي صمم بنية الحاسوب كما نعرفه - قال بنفسه:
أفضل ما يستطيعه الحاسوب هو توليد أعداد شبه عشوائية ؟ (pseudo-random) - العلاقة بين المدخل والمخرج مبهمة بما يكفي لتبدو عشوائية. لكن عند مستوى معين من التمحيص ينهار الوهم ويظهر النمط.
ما هي العشوائية الحقيقية؟
العشوائية الحقيقية لا توجد إلا في الطبيعة. هناك أجهزة تسمى TRNG ؟ (True Random Number Generator) تعتمد على ظواهر فيزيائية لا يمكن التنبؤ بها: التحلل الإشعاعي لذرة يورانيوم. الضجيج الحراري في مقاومة كهربائية. التقلبات الكمية في الفراغ. تقلبات شدة الضوء.
وشركة Cloudflare - التي تحمي ربع مواقع الإنترنت - تستخدم طريقة أغرب: جدار من مصابيح اللافا. نعم. مصابيح اللافا. في بهو مقرها في سان فرانسيسكو جدار كامل منها يسمونه "جدار الإنتروبيا". كاميرا تصور حركة الفقاعات - وهي حركة فوضوية حقيقية لا يمكن التنبؤ بها - وتحول كل صورة إلى سلسلة أعداد تغذي مولد تشفير يحمي ملايين المواقع. والطريف أن الموظفين الذين يمرون أمام الكاميرا يضيفون فوضى إضافية - حركاتهم العشوائية تصبح جزءا من التشفير.
ومكتبهم في لندن يستخدم بندولا مزدوجا - نظام فوضوي رياضيا بحت. ومكتبهم في أوستن يستخدم أشكالا معلقة شفافة تتأرجح مع تيارات الهواء. وفي لشبونة: ٥٠ آلة أمواج. كل مكتب يحصد الفوضى بطريقته. والفكرة ليست جديدة - شركة Silicon Graphics بنت نظاما مشابها اسمه "Lavarand" عام ١٩٩٦.
لكن هذه كلها حلول خاصة. معظم البرامج لا تحتاج عشوائية حقيقية. تحتاج شيئا يبدو عشوائيا ويمكن إعادته. وهنا تبدأ القصة.
البذرة: لماذا نريد عشوائية قابلة للإعادة؟
كل مولد أعداد شبه عشوائية يبدأ من رقم واحد يسمى البذرة ؟ (seed). هذه البذرة تُستخدم لحساب العدد "العشوائي" الأول. هذا العدد يصبح بذرة للعدد الثاني. والثاني بذرة للثالث. وهكذا. سلسلة لا نهائية من رقم واحد.
النتيجة: نفس البذرة = نفس السلسلة. دائما. جربها:
قد تتساءل: لماذا نريد هذا أصلا؟ أليس المفترض أن تكون الأعداد "عشوائية"؟ لماذا نريد تكرارها؟
ألعاب الفيديو: في لعبة مثل Minecraft كل عالم يتولد من بذرة واحدة. اكتب نفس البذرة ويحصل كل لاعب في العالم على نفس الخريطة بالضبط - نفس الجبال والأنهار والكهوف. المصمم يخزن رقما واحدا بدلا من خريطة كاملة.
الفن الخوارزمي: تخيل أنك ترسم ١٠٠ دائرة بمواقع وأحجام "عشوائية" وأعجبك الترتيب. بدون بذرة لا يمكنك استعادته أبدا. مع بذرة يمكنك تجربة ألوان مختلفة مع الحفاظ على نفس الترتيب بالضبط.
الاختبار: حين يختبر مهندس خوارزمية يحتاج أن يعيد نفس "العشوائية" ليقارن النتائج. البذرة تجعل الفوضى قابلة للإعادة.
لكن دالة Math.random() المدمجة في JavaScript لا يمكن بذرها. لا توجد طريقة للحصول على نفس التسلسل مرتين. لذلك نحتاج مولداتنا الخاصة.
ثلاثة مقاييس: كيف نحكم على مولد؟
قبل أن نبني أي مولد نحتاج أن نعرف: ما الذي يجعل مولدا جيدا وآخر سيئا؟ ثلاثة أشياء:
الآن تعال نبني مولدا من الصفر ونختبره بهذه المقاييس الثلاثة.
أبسط مولد في العالم
في عام ١٩٤٩م جلس فون نويمان أمام حاسوب ENIAC وفكر: ما أبسط طريقة لتوليد عدد "عشوائي" من عدد سابق؟ فكرته: خذ العدد. ربّعه. خذ الأرقام الوسطى. هذا هو العدد التالي. سماها طريقة المربع الأوسط ؟ (Middle-square method).
تعال نمشي فيها خطوة بخطوة. لنقل أننا نعمل بأعداد من ٤ أرقام:
بسيط! خوارزمية من ثلاثة أسطر تولد أعدادا تبدو عشوائية. لكن... هل هي جيدة؟
اختبار الدورة: متى ينهار المولد؟
الاختبار الأول: كم عددا يمكننا توليده قبل أن نحصل على تكرار؟ بأعداد من ٤ أرقام الحد الأقصى النظري ١٠٠٠٠ عدد (من ٠٠٠٠ إلى ٩٩٩٩). لكن هل نصل إلى هذا الحد؟
جرب بنفسك: اختر بذرة وشاهد متى يتكرر أول عدد:
جرب البذرة 1234: تحصل على دورة من بضع عشرات فقط. جرب 9600: ٤ أعداد فقط ثم تنهار! لكن هناك بذرة أسوأ من الكل. بذرة محكوم عليها بالموت من قبل أن تبدأ. جرب 2500 وشاهد ماذا يحدث.
احسبها بنفسك: $2500^2 = 06250000$. الأرقام الأربعة الوسطى؟ 2500. نفس البذرة بالضبط. المولد يولد نفسه. حلقة لا نهائية من عدد واحد من أول خطوة - كمرآة تعكس مرآة. والأسوأ: بذور كثيرة تؤدي في النهاية إلى ٠٠٠٠ - ومنها لا يخرج المولد أبدا لأن $0^2 = 0$. ثقب أسود رقمي.
هل يمكن تحسينها؟ بزيادة عدد الأرقام تزداد الدورة. مع ٦ أرقام بدلا من ٤ نحصل على دورة أطول بكثير. لكن هل تبدو الأعداد عشوائية فعلا؟ لنختبرها بصريا. نملأ صورة نقطة نقطة - إذا كان العدد أكبر من النصف نلون البكسل أبيض وإلا أسود. مولد جيد يعطي تشويشا كشاشة تلفزيون. مولد سيئ يظهر أنماطا.
هل ترى الخطوط المائلة؟ لو كانت هذه الأعداد عشوائية حقا لبدت الصورة كتشويش تلفزيون بدون أي نمط. لكن المربع الأوسط ينتج أعدادا مترابطة - كل عدد مشتق من مربع سابقه - فتظهر خطوط قطرية متكررة لأن النمط يعيد نفسه بعد دورة قصيرة (حوالي ٨٥٠ عددا مع هذه البذرة). حين تكون دورة المولد أقصر من عرض الصورة يصطف نفس النمط عموديا ويظهر كخطوط.
فون نويمان نفسه كان يعرف أن طريقته سيئة. لكنها كانت تكفي لحاسوب ENIAC البطيء في ذلك الوقت. نحتاج شيئا أفضل بكثير.
LCG: المولد الذي حكم العالم
المولد الذي استخدمته فعلا معظم لغات البرمجة لعقود اسمه المولد التطابقي الخطي ؟ (Linear Congruential Generator - LCG). وهو معادلة واحدة فقط:
تخيلها كساعة مجنونة. خذ الرقم الحالي، اضربه في عدد ضخم (فيتشوه تماما)، أضف عددا آخر (فيتشوه أكثر)، ثم أجبره على العودة إلى نطاق محدد بالقسمة بالباقي (كعقرب الساعة الذي يعود للصفر بعد ١٢). النتيجة: رقم جديد لا علاقة ظاهرة له بسابقه. كرر. لنشاهدها خطوة بخطوة:
ثلاثة أعداد ثابتة فقط - a (المضاعف) وc (الإزاحة) وm (المقسوم عليه) - هي كل ما يحتاجه المولد. سطر كود واحد:
لكن أي قيم نختار لـ a وc وm؟ هنا القصة تصبح مثيرة. اختيار سيئ يعطي مولدا عديم الفائدة. اختيار جيد يعطي مولدا استخدمه ملايين المبرمجين.
المعاملات: لماذا الأرقام المحددة مهمة جدا؟
على مر السنين استخدمت أنظمة مختلفة معاملات مختلفة. بعضها كان جيدا وبعضها كان كارثيا. تعال نقارن اثنين:
| المصدر | a | c | m | النتيجة |
|---|---|---|---|---|
| glibc (GCC) | 1103515245 | 12345 | $2^{31}$ | أنماط مرئية |
| Numerical Recipes | 1664525 | 1013904223 | $2^{32}$ | ممتاز |
| RANDU (IBM) | 65539 | 0 | $2^{31}$ | كارثي |
نفس المعادلة بالضبط. نفس الكود. ثلاثة أرقام مختلفة. نتائج مختلفة تماما. لنرى الفرق بصريا - أولا بالرسم البياني ثنائي الأبعاد:
نولد ٥٠ ألف عدد "عشوائي". كل عددين متتاليين $(x_n, x_{n+1})$ نرسمهما كنقطة: الأول على المحور الأفقي والثاني على المحور العمودي. المحور الأفقي = العدد الحالي. المحور العمودي = العدد التالي. كل نقطة حمراء = زوج متتالي.
مولد جيد = سحابة متجانسة تملأ المربع كالضجيج. مولد سيئ = النقاط تصطف على خطوط مرئية (يعني الأعداد مترابطة ويمكن التنبؤ بها).
في الوضع العادي تبدو كل المولدات متشابهة تقريبا - وهذا بالضبط ما يجعل المولدات السيئة خطيرة. تبدو بريئة في اختبار بسيط. لكن فعّل "كشف البتات الدنيا" وشاهد: glibc تظهر شبكة منتظمة لأن بتاتها المنخفضة تدور في دورات قصيرة. وRANDU تنكشف خطوطه القطرية بوضوح صادم.
كارثة RANDU: حين خدع المولد العالم
في الستينيات كانت شركة IBM سيدة عالم الحوسبة. حاسوب System/360 كان في كل جامعة ومختبر. ومعه مولد أعداد عشوائية اسمه RANDU بمعاملات بسيطة: $a = 65539$، $c = 0$، $m = 2^{31}$.
ملايين العلماء استخدموه في محاكاتهم. وبدا كل شيء طبيعيا. في بعد واحد - أعداد تبدو عشوائية. في بعدين - الرسم البياني يبدو مقبولا. لكن حين رسم أحدهم النقاط في ثلاثة أبعاد اكتشف الكارثة: كل النقاط تقع على ١٥ مستوى فقط. ليست موزعة في الفراغ بل مصطفة كجنود.
نتائج علمية نشرت في مجلات محكمة كانت خاطئة. محاكاة فيزيائية استغرقت سنوات أعطت إجابات خاطئة. كل ذلك لأن "العشوائية" لم تكن عشوائية.
أن الأعداد تبدو عشوائية في بعد واحد أو بعدين لا يعني أنها عشوائية في ثلاثة أبعاد. اختبار العشوائية أصعب بكثير من توليدها. وكارثة RANDU تذكرنا أن الثقة العمياء في الأدوات تؤدي إلى نتائج كاذبة.
حيلة عرض الصورة
وهنا حيلة مهمة تعلمناها من مبرمج الفيديو التعليمي: نفس المولد الذي يبدو جيدا بعرض صورة ٦٠٠ بكسل قد يظهر أنماطا واضحة بعرض ٥٥٠ بكسل. لماذا؟ لأن حين يتوافق عرض الصورة مع الدورة الداخلية للمولد تصطف الأعداد عموديا وتظهر البنية المخفية. تغيير العرض يكسر أو يكشف التوافق.
إذن الاختبار الصحيح: جرب أعراضا متعددة. إذا ظهر نمط بأي عرض فالمولد ضعيف. معاملات Numerical Recipes لم تظهر أنماطا بأي عرض جربته.
java.util.Random. وكذلك فعلت نسخ من C وC++ وVisual Basic لعقود.
اختبار البكسل
الرسم البياني أظهر لنا أنماطا. لكن هناك اختبار أقوى بكثير: اختبار البكسل. الفكرة بسيطة. املأ شاشة نقطة نقطة. لكل نقطة: إذا كان العدد "العشوائي" التالي أكبر من 0.5 لونها أبيض. وإلا لونها أسود. مولد جيد؟ ستحصل على تشويش يشبه شاشة تلفزيون بدون إشارة. مولد سيئ؟ ستظهر أنماط وخطوط ودوائر.
وهنا حيلة ذكية من الفيديو التعليمي: حين تغير عرض الصورة تتغير الأنماط. مولد يبدو جيدا بعرض ٦٠٠ بكسل قد يظهر خطوطا واضحة بعرض ٥٥٠. لأن عرض الصورة حين يتوافق مع دورة المولد الداخلية تصطف الأرقام عموديا وتظهر البنية المخفية.
هذا الاختبار البصري من أهم أدوات تقييم المولدات. العين البشرية تكتشف الأنماط أسرع من أي خوارزمية. ولهذا وُضعت اختبارات رسمية: اختبارات Die Hard (١٩٩٥) - ١٨ اختبارا إحصائيا صارما. واختبارات TestU01 وNIST الأحدث. مولد لا يجتاز هذه الاختبارات لا يصلح للاستخدام الجاد.
ميرسين تويستر: المعيار الذهبي
في عام ١٩٩٧م طور ماتسوموتو ونيشيمورا خوارزمية سموها ميرسين تويستر (Mersenne Twister). دورتها - أي عدد الأعداد قبل أن تتكرر - هي $2^{19937} - 1$. هذا عدد من ٦٠٠٠ رقم. أكبر من عدد الذرات في الكون المرئي بمليارات المرات. تجتاز كل اختبارات Die Hard. وأصبحت المولد الافتراضي في Python وRuby وPHP وMatlab. وحتى Java تستخدم LCG بمعاملاتها الخاصة كمولد افتراضي.
متى تستخدم ماذا؟
| الخوارزمية | الدورة | السرعة | الاستخدام |
|---|---|---|---|
| المربع الأوسط | ~١٠٠ | سريع | تعليمي فقط - لا تستخدمه أبدا |
| LCG (معاملات جيدة) | $2^{32}$ | سريع جدا | ألعاب، فن خوارزمي، محاكاة بسيطة |
| Mersenne Twister | $2^{19937}$ | سريع | محاكاة علمية، الافتراضي في معظم اللغات |
| CSPRNG (ChaCha20, AES) | هائلة | أبطأ | التشفير فقط - غير قابل للعكس |
| TRNG (أجهزة) | لا نهائية | بطيء | توليد مفاتيح، بذور أولية |
رحلة العشوائية عبر الزمن
حتى الآن رأينا كيف تنتج معادلة بسيطة واحدة تيارا لا نهائيا من الأعداد التي تبدو عشوائية. قواعد بسيطة، تكرار، تعقيد - نفس المبدأ الذي رأيناه في مستعمرة النمل. لكن الأعداد ليست المكان الوحيد الذي يظهر فيه هذا المبدأ. ماذا لو طبقنا نفس الفكرة - قاعدة هندسية بسيطة تكرر نفسها مرة بعد مرة - على الأشكال بدلا من الأرقام؟
الفراكتال الشكل الذي يحتوي نفسه
في عام ١٩٦٧م نشر رياضي بولندي يعمل في مختبرات IBM سؤالا غريبا: "كم يبلغ طول ساحل بريطانيا؟" ليس سؤالا جغرافيا. إنه سؤال رياضي. لأن الإجابة تعتمد على طول المسطرة. قس بمسطرة ١٠٠ كيلومتر تحصل على رقم. قس بمسطرة كيلومتر واحد تحصل على رقم أكبر بكثير - لأنك تتبع التعرجات الصغيرة. قس بمسطرة متر واحد يزداد الطول أكثر. قس بمسطرة سنتيمتر... الطول يستمر في الازدياد بلا نهاية.
هذا الرياضي كان بينوا ماندلبرو. صبي بولندي يهودي هرب مع عائلته من النازيين. درس في فرنسا ثم ذهب إلى أمريكا. لم تقبله الجامعات الكبرى - أفكاره كانت غريبة جدا. فعمل في مختبرات IBM حيث لم يسأله أحد عن أبحاثه. هناك اخترع كلمة "فراكتال" ؟ عام ١٩٧٥ وسخر منه الرياضيون الأكاديميون: "هذا رجل يرسم صورا جميلة ويسميها رياضيات!" لكنه كان يرى ما لا يرونه. الطبيعة ليست خطوطا مستقيمة ودوائر كاملة. الطبيعة فراكتال.
والفراكتال شكل يحتوي نسخا مصغرة من نفسه في كل مستوى. كبر الصورة تجد نفس النمط. كبرها أكثر تجده مرة أخرى. وأخرى. وأخرى. إلى ما لا نهاية. السحب فراكتال. الجبال فراكتال. الأوعية الدموية فراكتال. رئتاك فراكتال. الطبيعة تكرر نفسها على كل مقياس.
ندفة كوخ: محيط لا نهائي في مساحة محدودة
ابدأ بمثلث متساوي الأضلاع. على كل ضلع: قسمه ثلاثا، وأضف مثلثا صغيرا على الثلث الأوسط. كرر على كل ضلع جديد. وكرر. وكرر. النتيجة: شكل محيطه لا نهائي لكن مساحته محدودة. كيف يمكن لشكل أن يكون له حد لا نهائي ومساحة محدودة؟ لأنه ليس بعدا واحدا ولا بعدين. بعده الفراكتالي هو $D \approx 1.26$ - رقم بين الأعداد الصحيحة.
مجموعة ماندلبرو: أعقد شيء في الرياضيات
لكن أشهر فراكتال على الإطلاق ولد من معادلة أبسط مما تتخيل:
خذ عددا مركبا $c$. ابدأ بـ $z = 0$. ربّع واجمع $c$. ربّع الناتج واجمع $c$. كرر. إذا بقي $z$ محدودا فإن $c$ ينتمي لمجموعة ماندلبرو. إذا هرب إلى اللانهاية فلا. لون كل نقطة حسب سرعة هروبها. النتيجة: أعقد كائن رياضي عرفه الإنسان. كبره مليون مرة تجد أشكالا جديدة لم ترها من قبل. كبره مليار مرة تجد المزيد. لا نهاية للتفاصيل.
الخط بعده ١. المربع بعده ٢. لكن ندفة كوخ بعدها $D = \frac{\log 4}{\log 3} \approx 1.26$ - بين الخط والمربع. وحدود مجموعة ماندلبرو بعدها $D = 2.0$ بالضبط - سطح بلا سمك لكنه معقد بما يكفي ليملأ مستوى كامل. هذه هي أبعاد الفراكتال: أرقام بين الأعداد الصحيحة.
ماندلبرو اكتشف الفراكتال في الطبيعة ثم في الرياضيات. لكن هل اخترعه الإنسان قبل أن يكتشفه؟ هل بنى أحد فراكتالا من حجر ورخام قبل أن يملك حاسوبا أو يعرف الكلمة؟ الإجابة في القاهرة. قبل ماندلبرو بستمائة عام.
مسجد السلطان حسن
في عام ١٣٤٨م ضرب الطاعون الأسود القاهرة. مات ثلث السكان في أشهر. انهار الاقتصاد. أصبحت الشوارع فارغة والأسواق مغلقة. من هذه الفوضى - وبأموال صودرت من ممتلكات الموتى - أمر السلطان حسن - وهو في الثالثة عشرة من عمره - ببناء أعظم مدرسة عرفها العالم الإسلامي.
والمماليك أنفسهم كانوا نظاما معقدا بكل معنى الكلمة. عبيد جلبوا أطفالا من آسيا الوسطى والقوقاز، دربوا على الفروسية والحرب، ثم حكموا إمبراطورية. لا توجد سلالة حاكمة - كل سلطان يصل بالقوة والتحالفات. نظام يبدو فوضويا لكنه أنتج أعظم عمارة في تاريخ الإسلام. فوضى سياسية ولدت نظاما هندسيا.
والقاهرة نفسها كانت نظاما معقدا انبثاقيا - مثل مستعمرة النمل في الفصل الأول. لا مخطط مركزي لشوارعها. كل حرفي يبني بجوار حرفي مشابه فتتشكل أحياء متخصصة تلقائيا. كل تاجر يختار موقعه بناء على جيرانه فتظهر أسواق منتظمة بلا تخطيط. من قواعد بسيطة محلية ينبثق نظام حضري معقد.
ومن قلب هذه المدينة المعقدة خرج مبنى هو تجسيد حرفي للفراكتال. مدرسة السلطان حسن - التي بنيت بين ١٣٥٦ و١٣٦٣م - ليست مجرد مبنى جميل. إنها فراكتال من القرن الرابع عشر. والسلطان حسن نفسه؟ قتل في مؤامرة قبل اكتمال البناء ولم يعثر على جثته قط. لكن المبنى اكتمل بدونه - كالمستعمرة التي تستمر بدون ملكتها.
لكن ما معنى هذا الكلام بالضبط؟ كيف يمكن لمبنى أن يكون فراكتالا؟
تذكر: الفراكتال شكل يحتوي نسخا مصغرة من نفسه على كل مقياس. ندفة كوخ تبدو متشابهة سواء نظرت إليها من بعيد أو كبرتها عشر مرات. المبنى الفراكتالي يفعل الشيء نفسه: حين تقف أمامه ترى تقسيما هندسيا. حين تدخل الفناء ترى نفس التقسيم بمقياس أصغر. حين تنظر إلى البلاط تحت قدميك - نفس النسب مرة أخرى. وحين ترفع رأسك إلى المقرنصات فوقك - أصغر وأصغر، نفس البنية تتكرر.
القياس: كيف تقيس فراكتالية مبنى؟
باحثون في جامعة كاليفورنيا استخدموا تقنية "عد الصناديق"؟ (box-counting): تضع شبكة مربعات على صورة واجهة المبنى وتعد كم مربعا يحتوي تفاصيل. ثم تصغر المربعات وتعد مرة أخرى. النسبة بين حجم المربع وعدد المربعات المملوءة تعطيك البعد الفراكتالي. مبنى حداثي (واجهة زجاجية ملساء) بعده قريب من ١.٠ - سطح مستو بلا تفاصيل. مبنى فراكتالي غني بعده أقرب إلى ١.٥ أو أعلى.
مدرسة السلطان حسن: $D = 1.16$. قد يبدو الرقم متواضعا لكنه يعني أن المبنى أكثر تعقيدا من خط لكن أبسط من سطح - بالضبط مثل منحنى كوخ التربيعي. والمفارقة أن المباني الحديثة التي نظن أنها "معقدة" - ناطحات السحاب الزجاجية - بعدها الفراكتالي $D \approx 1.05$. ملساء. مملة رياضيا. المسجد الذي عمره سبعمائة عام أغنى هندسيا من برج في مانهاتن.
دراسات في علم النفس المعماري أظهرت أن البشر يفضلون المباني ذات البعد الفراكتالي بين $1.3$ و$1.5$ - نفس نطاق الأشجار والسحب والجبال. المباني الحداثية الملساء ($D \approx 1.1$) تشعرنا بالاغتراب. المعمار الإسلامي الكلاسيكي يقع في النطاق الذي يريحنا بيولوجيا - ربما لأن أدمغتنا تطورت في بيئات فراكتالية طبيعية.
أربعة مستويات من التشابه الذاتي
الفراكتال في مدرسة السلطان حسن يظهر على أربعة مستويات متداخلة:
النسبة السرية: $1:\sqrt{2}$
المربع هو الشكل الأصل. إخوان الصفا - جماعة سرية من فلاسفة البصرة في القرن العاشر - اعتبروا المربع من أكثر الأشكال استقرارا. يمثل الاتجاهات الأربعة ويحدد اتجاه القبلة.
لكن المربع وحده لا يصنع فراكتالا. السر في كيفية تقسيمه. خذ مربعا وارسم قطره. طول القطر = $\sqrt{2}$ ضعف طول الضلع. هذه النسبة - $1:\sqrt{2}$ - هي ما يحكم كل تقسيم في المبنى. من الفناء المركزي إلى الإيوانات إلى الأرضيات. نفس النسبة تتكرر أربع مرات على أربعة مقاييس مختلفة.
والمذهل أن هذه هي نفس النسبة التي تحكم أحجام الورق الحديثة (A4 وA3 وA5) - حين تطوي ورقة A4 من المنتصف تحصل على A5 بنفس النسب. مبدأ التشابه الذاتي الذي اكتشفه المعماريون المسلمون يعيش في كل ورقة تطبعها.
الصانع والرياضي
أبو الوفاء البوزجاني في القرن العاشر كتب رسالة بعنوان "ما يحتاج إليه الصانع من أعمال الهندسة". لاحظ العنوان: ما يحتاج إليه الصانع. ليس رسالة نظرية بل دليل عملي. شرح فيها كيف يقسم الحرفي مساحة مربعة إلى أجزاء متناسبة باستخدام المسطرة والبركار فقط - بدون أرقام ولا حساب. الهندسة كانت لغة بصرية بين الرياضي والبناء.
هذا يعني أن المعماريين المسلمين لم يحتاجوا نظرية الفراكتال ليبنوا فراكتالا. كانوا يملكون شيئا أقوى: تقليدا حرفيا ينقل النسب من جيل إلى جيل. الأستاذ يعلم التلميذ: "قسم هذا المربع كما أريتك". التلميذ يطبق القاعدة على مقياس أصغر. والنتيجة - بدون أن يعرف أحد كلمة "فراكتال" - مبنى بعده الفراكتالي يضاهي الأشكال الرياضية التي اكتشفت بعده بستة قرون.
الفراكتال إذن ليس حكرا على الحواسيب والرياضيات. إنه مبدأ عميق: قاعدة بسيطة تكرر نفسها على مقاييس مختلفة تنتج تعقيدا لا نهائيا. في مسجد السلطان حسن القاعدة هي نسبة $1:\sqrt{2}$ المطبقة أربع مرات. في ندفة كوخ القاعدة هي "أضف مثلثا على كل ضلع". وفي مجموعة ماندلبرو القاعدة هي "ربع واجمع". نفس المبدأ بالضبط الذي رأيناه في مولدات الأعداد العشوائية - معادلة واحدة تكرر نفسها فتنتج ما يبدو عشوائيا. لكن ماذا يحدث حين يكون التكرار حساسا - حساسا بشكل مفرط - لأدنى تغيير؟
الفوضى الحتمية
في صباح شتوي عام ١٩٦١م كان إدوارد لورنز - عالم أرصاد في MIT - يشغل محاكاة طقس على حاسوب Royal McBee LGP-30 بحجم مكتب. كان قد شغل نفس المحاكاة بالأمس وأراد رؤية النتائج مرة أخرى. لكن بدلا من البدء من الصفر قرر توفير الوقت: أخذ الأرقام من منتصف الطباعة السابقة وأدخلها كنقطة بداية جديدة.
مشكلة واحدة صغيرة: الحاسوب كان يحسب بدقة ٦ أرقام عشرية (0.506127) لكن الطابعة كانت تطبع ٣ أرقام فقط لتوفير الورق (0.506). أدخل لورنز الرقم المقرب وذهب ليشرب قهوة في الممر.
حين عاد بعد ساعة وقف مذهولا أمام الطابعة. الطقس مختلف تماما. ليس مختلفا قليلا. مختلف كأنه من كوكب آخر. في البداية ظن أن الحاسوب تعطل. لكن بعد أيام من التحقق أدرك الحقيقة: فارق $0.000127$ - أقل من جزء من عشرة آلاف - في رقم واحد غير مسار الطقس بأكمله.
لم يكن يعلم أنه اكتشف للتو أحد أعمق المبادئ في الرياضيات. سماه لاحقا تأثير الفراشة ؟ في محاضرة عنوانها الشهير: "هل يمكن لرفرفة جناحي فراشة في البرازيل أن تسبب إعصارا في تكساس؟"
والإجابة ليست "ربما". الإجابة: حتما. لكن ليس لأن الطقس عشوائي. بل لأنه حتمي وحساس. هذا هو التمييز الجوهري الذي يجب أن نفهمه:
الخريطة اللوجستية: فوضى من سطر واحد
أبسط نظام فوضوي ممكن. معادلة واحدة:
حيث $x$ بين ٠ و١ و$r$ معامل التحكم. صممت أصلا لنمذجة تقلبات أعداد الأرانب. لكن شاهد ماذا يحدث حين تحرك r:
مخطط التشعب: أجمل رسم في الرياضيات
لكن المفاجأة الحقيقية تظهر حين ترسم كل قيم r معا. هذا هو مخطط التشعب ؟ - وهو من أجمل الأشكال في الرياضيات كلها. اقرأه من اليسار إلى اليمين: خط واحد مستقر ← ينشطر إلى اثنين ← ينشطر إلى أربعة ← فوضى. لكن داخل الفوضى: نوافذ صغيرة من النظام تظهر وتختفي. والرسم كله فراكتال - كبر أي جزء تجد نفس الشكل.
الفوضى تصنع أرقاما
الخريطة اللوجستية التي رأيناها للتو - التي صممت لنمذجة أعداد الأرانب - هي في الحقيقة مولد أعداد عشوائية. نعم. نفس المعادلة. عند $r = 4$ تنتج سلسلة أعداد بين ٠ و١ لا يمكن تمييزها عن العشوائية الحقيقية.
لماذا $r = 4$ تحديدا؟ تذكر مخطط التشعب. عند $r < 3$ يستقر النظام. عند $r \approx 3.57$ يدخل الفوضى. لكن عند $r = 4$ بالذات يحدث شيء خاص: مدى القيم يغطي كل الفترة من ٠ إلى ١ بالتساوي. أي أن المعادلة تزور كل قيمة ممكنة - شرط أساسي لأي مولد عشوائي جيد. فوضى حتمية تولد ما يبدو عشوائيا.
والأعجب أن هذا المولد يتفوق على LCG في اختبار مهم: لا يمكن عكس هندسته بسهولة. مع LCG إذا عرفت ثلاثة أعداد متتالية يمكنك استنتاج المعاملات والتنبؤ بكل الأعداد التالية. مع الخريطة اللوجستية الأمر أصعب بكثير - الحساسية المفرطة للشروط الأولية تعني أن خطأ ضئيلا في تقدير البذرة يعطي تسلسلا مختلفا تماما.
لعبة الفوضى: سحر من العدم
لكن هناك شيء أجمل من مولد عشوائي. تعال نلعب لعبة تربط كل ما تعلمناه - العشوائية والفراكتال والنظام.
ضع ثلاث نقاط على رؤوس مثلث. اختر نقطة بداية في أي مكان. ثم في كل خطوة: اختر رأسا عشوائيا وتحرك نصف المسافة نحوه. ضع نقطة. كرر. ما الذي تتوقعه؟ غيمة عشوائية من النقاط بلا شكل؟ اضغط "ابدأ" وراقب. بعد مائة نقطة ستلمح شيئا. بعد ألف ستكون متأكدا. بعد عشرة آلاف لن تصدق عينيك.
انظر إلى الشاشة. من قفزات عشوائية بحتة - نرد يختار رأسا ونقطة تتحرك نصف المسافة - يظهر مثلث سيربنسكي. فراكتال كامل. نظام مثالي من فوضى محضة.
هذا ليس خدعة بصرية. هذه خاصية رياضية عميقة اسمها الجاذب ؟ (attractor). بعض الأنظمة الفوضوية لها أشكال تنجذب إليها كل المسارات مهما كانت نقطة البداية. ابدأ من أي مكان على الشاشة - الزاوية، المنتصف، الحافة - وستحصل على نفس مثلث سيربنسكي بالضبط. النقطة الأولى لا تهم. الجاذب يسحب كل شيء نحوه.
لكن لماذا مثلث سيربنسكي تحديدا؟ لأن قاعدة "نصف المسافة" تمنع النقاط من الوقوع في مناطق معينة - المثلثات المقلوبة في كل مستوى. القاعدة بسيطة لكنها تنحت فراغات هندسية دقيقة. غير القاعدة من "نصف" إلى "ثلث" المسافة تحصل على شكل مختلف. غير عدد الرؤوس من ٣ إلى ٤ مع شرط "لا تختر نفس الرأس مرتين" تحصل على فراكتال آخر. كل مجموعة قواعد لها جاذبها الخاص.
الدائرة تكتمل
توقف لحظة وانظر إلى ما حدث. بدأنا هذه المقالة بمولدات أعداد عشوائية - آلات حتمية تتظاهر بالعشوائية. ثم اكتشفنا الفراكتال - أشكال من تكرار بسيط. ثم نظرية الفوضى - حتمية تبدو عشوائية. والآن: العشوائية تصنع فراكتالا، والفوضى تصنع أرقاما عشوائية. الخيوط كلها تتقاطع.
نفس المعادلة التي تنمذج انهيار أعداد الأرانب تولد أعدادا عشوائية تشفر كلمة مرور بنكك. ونفس العملية العشوائية التي تبدو فوضوية تنتج فراكتالا منتظما. النظام والفوضى وجهان لعملة واحدة.
التشفير وفن الإخفاء
فلنتوقف ونسأل: لماذا نهتم بتوليد أعداد "عشوائية" أصلا؟ الإجابة في كلمة واحدة: التشفير.
أبسط شفرة ممكنة: حرك كل حرف بمقدار ثابت. أ تصبح ج، ب تصبح د، وهكذا. هذه شفرة قيصر - استخدمها يوليوس قيصر قبل ألفي عام. ومشكلتها واضحة: كل أ في الرسالة تصبح نفس الحرف. ابحث عن التكرارات تكسر الشفرة في دقائق.
لكن ماذا لو استخدمت إزاحة مختلفة لكل حرف؟ وكل إزاحة "عشوائية"؟ هذا هو مبدأ الدفتر ذي الاستخدام الواحد ؟ (one-time pad) - وهو الشفرة الوحيدة المثبت رياضيا أنها غير قابلة للكسر. المشكلة: تحتاج مفتاحا بطول الرسالة. مفتاح عشوائي حقيقي. ومشاركته مع المستلم بشكل آمن.
الحل الحديث: استخدم مولد أعداد عشوائية ينتج مفتاحا طويلا من بذرة قصيرة. يكفي أن يتفق الطرفان على البذرة. نفس البذرة = نفس المفتاح = نفس التشفير وفك التشفير.
جرب بنفسك: شفرة XOR
البذرة تصنع عالما: المناظر الطبيعية
لكن البذرة لا تستخدم فقط في التشفير. في ألعاب الفيديو مثل Minecraft كل عالم يتولد من بذرة واحدة. نفس البذرة = نفس الجبال والوديان والأنهار لكل لاعب في العالم.
حشو الدوائر: فن من خوارزمية
وهذا مثال آخر: خوارزمية تضع دوائر عشوائية وتكبرها حتى تلمس دائرة أخرى. النتيجة: فن تكويني جميل من بضعة أسطر كود. والبذرة تحدد الترتيب.
من أين تأتي البذرة الأولى؟
سؤال لم نجبه بعد: إذا كان كل شيء يبدأ من بذرة - فمن أين تأتي البذرة نفسها؟ على نظام Linux يوجد ملف سحري اسمه /dev/urandom. هذا الملف يحصد فوضى حقيقية من كل مكان: تذبذبات توقيت القرص الصلب. ضجيج بطاقة الشبكة. حركات الماوس. مفاتيح لوحة المفاتيح. يجمعها كلها في "بركة إنتروبيا" ويولد منها أعدادا عشوائية حقيقية تصلح لتكون بذورا.
هكذا يعمل النظام الكامل: فوضى حقيقية من العالم الفيزيائي ← بذرة ← مولد أعداد عشوائية حتمي ← تيار لا نهائي من الأعداد "العشوائية" ← تشفير.
التهديد الكمي: الباب الخلفي عبر الزمن
كل ما تحدثنا عنه - LCG وميرسين تويستر وحتى مولدات التشفير القوية مثل AES وChaCha20 - يقوم على رهان واحد: أن بعض المسائل الرياضية صعبة الحل. خذ عددا من ٦٠٠ رقم واطلب من حاسوب أن يحلله إلى عوامله الأولية. أسرع حواسيب العالم تحتاج ملايين السنين. على هذه الصعوبة يقوم كل تشفير الإنترنت.
لكن في عام ١٩٩٤ نشر بيتر شور خوارزمية تستطيع تحليل هذه الأعداد في ساعات - لكنها تحتاج حاسوبا كميا. حاسوب يعمل بقوانين ميكانيكا الكم بدلا من قوانين الإلكترونيات التقليدية.
الحاسوب الكمي القوي بما يكفي لا يوجد بعد. لكن هنا يظهر التهديد الأخطر. يسميه خبراء الأمن "احصد الآن، فك الشفرة لاحقا" ؟ (Harvest Now, Decrypt Later):
هذا يعني أن اتصالاتك اليوم معرضة للخطر - ليس الآن بل في المستقبل. والمعلومات الحساسة (أسرار عسكرية، ملفات طبية، براءات اختراع) لا تفقد قيمتها خلال ٢٠ عاما.
لذلك بدأ السباق. في عام ٢٠٢٢ اختار المعهد الأمريكي للمعايير (NIST) خوارزميات جديدة مقاومة للحوسبة الكمية. وOpenSSH - البرنامج الذي يحمي كل خادم Linux على الإنترنت تقريبا - بدأ التحول:
| الإصدار | التاريخ | ما تغير |
|---|---|---|
| OpenSSH 9.0 | ٢٠٢٢ | أول دعم لتبادل مفاتيح مقاوم للكم (sntrup761) |
| OpenSSH 9.9 | ٢٠٢٤ | إضافة ML-KEM (المعيار الجديد من NIST) |
| OpenSSH 10.0 | أبريل ٢٠٢٥ | ML-KEM أصبح الافتراضي لكل اتصال |
| OpenSSH 10.1 | ٢٠٢٥ | تحذير صريح عند الاتصال بدون حماية كمية |
الخوارزمية الجديدة "هجينة" بتصميم ذكي: تجمع ML-KEM (المقاوم للكم) مع x25519 (التقليدي). حتى لو تبين أن الجزء الكمي ضعيف يبقى الجزء التقليدي يحميك. تحوط في الاتجاهين.
'store now, decrypt later' attacks"
إصدار OpenSSH 10.1 يعرض هذا التحذير حين يتصل خادمك بدون تشفير مقاوم للكم. ١ إذا كنت تدير خوادم - حدث الآن. ما تنقله اليوم بدون تشفير كمي قد يقرأه شخص ما بعد عقد.
لكن كيف نعرف أصلا أن تشفيرنا جيد؟ كيف نقيس كمية "العشوائية" في مفتاح؟ كيف نميز نصا مشفرا جيدا من نص مشفر سيئا يمكن كسره؟ الإجابة في مفهوم اكتشفه فيزيائي نمساوي مأساوي قبل أن يولد أول حاسوب - ودفع حياته ثمنا لاكتشافه.
الإنتروبيا لماذا يفسد كل شيء
في سبتمبر ١٩٠٦م كان لودفيج بولتزمان في إجازة مع عائلته في بلدة دواينو الإيطالية المطلة على البحر. فيزيائي نمساوي أمضى ثلاثين عاما يدافع عن فكرة واحدة: أن المادة مكونة من ذرات وأن الحرارة ليست إلا حركتها. سخر منه كبار الفيزيائيين - إرنست ماخ كان يرفض حتى وجود الذرات لأنه "لا يمكن رؤيتها". هوجم في المؤتمرات. سخروا من أوراقه. في ذلك اليوم في دواينو بينما كانت زوجته وابنته على الشاطئ شنق نفسه في غرفة الفندق.
المأساة أنه بعد أقل من عام أثبت جان بيران وجود الذرات تجريبيا وفاز بجائزة نوبل. بولتزمان كان محقا في كل شيء. وعلى شاهد قبره في فيينا حفرت معادلة واحدة - هي كل ما تركه:
الإنتروبيا ($S$) تساوي ثابت بولتزمان ($k$) مضروبا في لوغاريتم عدد الحالات الممكنة ($W$). كلما زادت الحالات الممكنة زادت الفوضى.
فكر في الأمر هكذا: كوب شاي ساخن في غرفة باردة. الحرارة مركزة في الشاي - هذه حالة واحدة محددة من ترتيب الجزيئات. لكن "الحرارة موزعة بالتساوي في الغرفة" - هذه ملايين الترتيبات الممكنة. احتمال أن تتركز الحرارة تلقائيا في الشاي مرة أخرى ضئيل لدرجة أنه لن يحدث قبل موت الكون. ليس مستحيلا - فقط غير محتمل بشكل ساحق. الإنتروبيا لا تزداد لأن الكون "يريد" الفوضى. بل لأن حالات الفوضى أكثر عددا بكثير من حالات النظام.
إنتروبيا المعلومات
في عام ١٩٤٨ سرق كلود شانون الكلمة. ليس سرقة حرفية - لكن فون نويمان نصحه: "سمها إنتروبيا. لا أحد يفهم الإنتروبيا فعلا، فلن يجادلك أحد في الندوات."
إنتروبيا المعلومات؟ تقيس كمية المفاجأة في رسالة. فكر في حرف عربي. إذا كنت تعرف أن الحرف التالي هو "الألف" بنسبة ٩٩٪ - فظهور الألف لا يفاجئك. معلومات قليلة. إنتروبيا منخفضة. لكن إذا كان الحرف التالي قد يكون أي شيء باحتمال متساو - كل حرف يفاجئك. معلومات كثيرة. إنتروبيا عالية. معادلة شانون تحسب هذا بالضبط:
حيث $p_i$ هو احتمال ظهور الرمز $i$. التشابه مع معادلة بولتزمان ليس صدفة - هي نفس الرياضيات في سياق مختلف. الفيزيائي يعد حالات الجزيئات والمهندس يعد حالات الرموز.
لماذا يهم هذا للتشفير؟
هل كلمة مرورك آمنة؟ الإجابة ليست في طولها بل في إنتروبيتها. لنفهم لماذا.
نص عربي عادي: حرف الألف يظهر ١٢.٥٪ من الوقت. حرف الظاء يظهر ٠.١٪. لأن بعض الحروف أكثر شيوعا يمكنك تخمين الحرف التالي. هذا يعني إنتروبيا منخفضة - حوالي ٤ بت لكل حرف. نص مشفر جيد: كل رمز يظهر بنفس الاحتمال تقريبا. لا يمكنك تخمين شيء. إنتروبيا عالية - حوالي ٨ بت لكل بايت.
وهنا الرابط المباشر بالتشفير: إذا كان النص المشفر إنتروبيته منخفضة فالشفرة مكسورة. لأن الإنتروبيا المنخفضة تعني وجود أنماط - والأنماط تعني معلومات مسربة. كل مولد عشوائي سيئ (مثل المربع الأوسط أو RANDU) ينتج أعدادا إنتروبيتها أقل من الحد الأقصى. وهذا بالضبط ما يجعلها غير صالحة للتشفير.
كلمة مرور من ٨ أحرف عشوائية (أحرف كبيرة وصغيرة وأرقام ورموز = ٩٥ رمزا ممكنا): إنتروبيتها $\log_2(95^8) \approx 52.6$ بت. كلمة مرور "password123": إنتروبيتها تقارب الصفر لأنها ضمن أول ألف كلمة يجربها أي مهاجم. الإنتروبيا هي ما يحدد فعلا قوة أمنك الرقمي.
النظام في قلب الفوضى
تخيل أنك واقف على شاطئ. الموجة التي تضرب قدميك - مثل موجة هوكوساي في أول المقالة - تبدو فوضوية. لكن كل قطرة فيها تتبع قوانين نيوتن بدقة مطلقة. كل ذرة ماء تعرف أين تذهب. الفوضى ليست في الماء بل في عينيك - في عجزك عن تتبع مليارات القطرات دفعة واحدة.
هذا ما تعلمناه في هذه الرحلة.
بدأنا بمستعمرة نمل في صحراء أريزونا. خمسون ألف نملة، كل واحدة تتبع ثلاث قواعد كيميائية بسيطة، لا قائد ولا خطة - ومن هذا تنبثق شبكة طرق تحسدها شركات اللوجستيات. ونملة لانغتون: قاعدتان فقط، عشرة آلاف خطوة من الفوضى العمياء، ثم - بلا أي تفسير رياضي حتى اليوم - طريق سريع لا ينتهي.
ثم سألنا: هل يستطيع الحاسوب أن يرمي نردا؟ وبنينا مولدات من الصفر. المربع الأوسط الذي انتحر عند البذرة ٢٥٠٠. وRANDU الذي خدع جيلا كاملا من العلماء. ومعادلة LCG التي حكمت العالم بسطر واحد من الكود. تعلمنا أن ما يبدو عشوائيا قد لا يكون كذلك - وأن الاختبار الوحيد هو أن تنظر من زوايا لم تخطر لك.
واكتشفنا الفراكتال. شكل يحتوي نفسه إلى ما لا نهاية. ماندلبرو - الغريب الذي رفضته الجامعات - سماه عام ١٩٧٥. لكن حرفيي القاهرة في القرن الرابع عشر كانوا يبنونه من حجر ورخام بمسطرة وبركار. مسجد السلطان حسن - الذي مولته أموال ضحايا الطاعون وقتل صاحبه قبل اكتماله - يقف شاهدا على أن النظام يولد من الفوضى، والجمال يولد من المأساة.
ورأينا كيف أن فارقا أصغر من جزء من عشرة آلاف غير مسار الطقس بأكمله في حاسوب لورنز. تأثير الفراشة. والخريطة اللوجستية - معادلة صممت لعد الأرانب - تحولت مولدا للعشوائية عند $r = 4$. ولعبة الفوضى حولت قفزات عشوائية إلى مثلث سيربنسكي المثالي. العشوائية تصنع نظاما. والنظام ينتج عشوائية. الحدود بينهما ليست حدودا - إنها مرآة.
ثم ربطنا كل هذا بحياتك اليومية. بذرة واحدة - رقم - تولد مفتاحا يحمي رسائلك ومعاملاتك البنكية وأسرار الدول. والإنتروبيا - الكلمة التي حفرها بولتزمان على شاهد قبره بعد أن انتحر لأن العالم لم يصدقه - هي نفسها ما يقيس أمان تشفيرك. نفس المعادلة. نفس الرياضيات. الفيزيائي الذي مات وحيدا في فندق إيطالي لا يعرف أن معادلته تحمي كل رسالة ترسلها على الإنترنت.
بذرة واحدة تصنع كل شيء
آخر تجربة. بذرة واحدة - رقم واحد - تولد منظرا طبيعيا وتشفر رسالة وتقيس الإنتروبيا. كل شيء من رقم واحد. غير الرقم يتغير كل شيء. أبقه كما هو يبقى كل شيء كما هو. إلى الأبد. حتمية مطلقة تتنكر في زي فوضى مطلقة.
والآن يأتي الحاسوب الكمي. آلة تعمل بقوانين عالم لا يشبه عالمنا - عالم تكون فيه القطة حية وميتة معا. خوارزمية شور تستطيع كسر كل تشفير نعتمد عليه. ليس اليوم - لكن ربما بعد عقد. فنبني خوارزميات جديدة مقاومة للكم. فوضى أعمق وأعقد. سباق لا ينتهي بين من يبني القفل ومن يصنع المفتاح. يغذيه سؤال واحد لا تنتهي صلاحيته: هل هذه الأعداد عشوائية بما يكفي؟
بين مستعمرة النمل في صحراء أريزونا والمقرنصات في سقف مسجد السلطان حسن. بين قاعدتي نملة لانغتون ومعادلة $z = z^2 + c$. بين بذرة التشفير في هاتفك ومعادلة بولتزمان المحفورة على شاهد قبر في فيينا. بين الموجة العظيمة التي رسمها هوكوساي والموجة التي تضرب شاطئا الآن وأنت تقرأ هذه الكلمات.
خيط واحد يمتد عبر ألف عام من التاريخ البشري. عبر الرياضيات والفيزياء والأحياء والعمارة والتشفير. خيط بسيط بساطة مخيفة:
قواعد بسيطة. تكرار. تعقيد.
النظام في قلب الفوضى. والفوضى في قلب النظام. والجمال في المسافة بينهما.
معجم المصطلحات
| بالعربية | بالإنجليزية | المعنى باختصار |
|---|---|---|
| الانبثاق | Emergence | ظهور خصائص معقدة على مستوى النظام لا توجد في أجزائه المنفردة |
| شبه عشوائي | Pseudo-random | أعداد تبدو عشوائية لكنها ناتجة عن معادلة حتمية قابلة للإعادة |
| البذرة | Seed | الرقم الأولي الذي يبدأ منه المولد. نفس البذرة = نفس السلسلة دائما |
| الدورة | Period | عدد الأعداد التي يولدها المولد قبل أن يبدأ بالتكرار |
| المربع الأوسط | Middle-square method | خوارزمية فون نويمان: ربّع العدد وخذ الأرقام الوسطى |
| المولد التطابقي الخطي | LCG | مولد يحسب كل عدد بالضرب والجمع والباقي. سطر كود واحد |
| ميرسين تويستر | Mersenne Twister | مولد بدورة $2^{19937}$. الافتراضي في Python وRuby وPHP |
| مولد تشفيري | CSPRNG | مولد غير قابل لعكس الهندسة. يستخدم للتشفير فقط |
| فراكتال | Fractal | شكل يحتوي نسخا مصغرة من نفسه على كل مقياس. بعده كسري |
| البعد الفراكتالي | Fractal dimension | رقم بين الأعداد الصحيحة يقيس تعقيد الشكل. خط = ١، سطح = ٢ |
| عد الصناديق | Box-counting | طريقة قياس البعد الفراكتالي بعد المربعات المملوءة على مقاييس مختلفة |
| مجموعة ماندلبرو | Mandelbrot set | فراكتال من المعادلة $z = z^2 + c$. أعقد كائن رياضي معروف |
| تأثير الفراشة | Butterfly effect | حساسية مفرطة للشروط الأولية. تغيير ضئيل يغير كل شيء |
| الخريطة اللوجستية | Logistic map | معادلة $x = rx(1-x)$. من الاستقرار إلى الفوضى حسب قيمة r |
| مخطط التشعب | Bifurcation diagram | رسم يوضح تحول النظام من نظام إلى فوضى عبر تغيير معامل |
| الجاذب | Attractor | شكل أو حالة ينجذب إليها نظام ديناميكي مهما كانت البداية |
| ثابت فايغنباوم | Feigenbaum constant | $\delta = 4.6692...$ نسبة ثابتة بين التشعبات في كل الأنظمة الفوضوية |
| الدفتر ذو الاستخدام الواحد | One-time pad | الشفرة الوحيدة المثبت رياضيا أنها غير قابلة للكسر |
| الإنتروبيا | Entropy | مقياس الفوضى (فيزياء) أو المفاجأة (معلومات). نفس الرياضيات |
| احصد الآن فك لاحقا | Harvest Now, Decrypt Later | تسجيل اتصالات مشفرة اليوم لفكها بحاسوب كمي مستقبلا |
| تورينغ-كامل | Turing-complete | نظام يستطيع نظريا حساب أي شيء يحسبه أي حاسوب |
| الحياة الاصطناعية | Artificial Life | محاكاة حاسوبية لأنظمة تظهر خصائص الحياة من قواعد بسيطة |
| حافة الفوضى | Edge of Chaos | الحد بين النظام الجامد والفوضى التامة. حيث ينشأ التعقيد |