الأقسام
هذه المعضلة تسمى معضلة اللواءين Two Generals Problem، وهي معضلة ليس لها حل.. عفوا، يمكن أن توجد حلول تقلل من حدة المشكلة ولكن لا يوجد حل يضمن مزامنة الهجوم بنسبة 100%. ربما تقول "يخبر عباس عمرا في الرسالة أن يرد عليه برسول، فإن رجع رسول من عمرو إلى عباس يؤكد وصول الرسالة يهاجم، وإن لم يصل فإن الرسول الأول لم يصل ولا يهاجم.."، لكنك لم تلاحظ أن هذا ينقل المأزق من عباس إلى عمرو لا أكثر، إذ ربما لا يصل الرسول العائد من عمرو إلى عباس، حينها لن يهاجم عباس (لأنه يظن رسوله لم يصل) وسيهاجم عمرو ويقع في مأزق!
لا يوجد حل يضمن لهما المزامنة بنسبة 100% مهما فكرت أيها القارئ، فالطريقة الوحيدة هي أن تكون وسيلة التواصل بينهما توصل الرسائل باحتمالية 100%.. لكن يوجد حل يقلل حدة المشكلة: ماذا لو أرسل عباس رسولين بنفس الرسالة؟ احتمالية عدم وصول أحدهما 50% ولكن احتمالية عدم وصول كليهما معا تهبط إلى 25%، وإن أرسل ثلاثة فإن احتمالية عدم وصول الثلاثة تهبط إلى 12.5%، أما إن أرسل عشرة فإن احتمالية عدم وصول العشرة تهبط إلى 00.097%!
فكل ما على عباس هو أن يرسل سبعة أو ثمانية رسل مع نفس الرسالة (هاجم الساعة 6:00 صباحا) وأن يهاجم هو في هذه الساعة مهما كان، وأن يرجو من الله أن أحد الرسل على الأقل قد وصل إلى عمرو.
لماذا تشرح هذه المعضلة؟ هذه المعضلة ليست من أجل تعليمك كيف تهاجم عندما تكون لواء، ولكنها لتعليمك المشكلات التي تواجه المهندسين عند محاولة المزامنة بين جهازين بينهما طريقة تواصل غير مضمونة.
من التطبيقات المعروفة للمعضلة أيضا بروتوكول (أو ميفاق) التحكم بالإرسال Transmission Control Protocol. كلنا نعلم أنه عندما يريد جهاز إنهاء الاتصال بهذا البروتوكول فإنه ينهيها بطريقة المصافحة رباعية الطرق "Four-way handshake".. كلنا نعلم ما عدا هذا القارئ
ربما هذا المثال بعيد قليلا عن حياتنا العملية، لنقل مثالا آخر، لنقل أن جهاز حاسوبك متصل بطابعة بالبلوتوث، وأرسلت أمر طباعة مستند، الحاسوب يخبرك أن أمر الطباعة أرسل بنجاح لكن الطابعة لم تطبع شيئا! السبب هو أن الحاسوب أرسل الأمر ولكنه لم يصل أو وصل منقوصا، فلم تنفذ الطابعة الأمر والحاسوب لا يستطيع أن يعلم أن الطابعة لم تنفذ الأمر.. إذا قلت أن ينتظر الحاسوب رسالة تأكيد من الطابعة، فهذا يصنع مأزقا آخر بحيث تكون الطابعة طبعت ولكن الحاسوب يظن أنها لم تطبع لأن رسالة التأكيد لم تصل بسلام..
بالنسبة لموضوع الطابعة.. ما رأيك؟ كيف نحل هذه المشكلة؟ ربما تقول "يرسل الحاسوب عشرات الرسائل بنفس الأمر لنحل المشكلة بنفس الطريقة"، ولكن كيف سنضمن أن الطابعة ستنفذ الأمر مرة واحدة فقط؟ حينها نحل المشكلة بطريقة رمز الهوية:
وبهذا نكون حللنا معضلة اللواءين بالنسبة للحاسوب والطابعة.