المربع اللاتيني جدول مربّع تظهر فيه الرموز مرة واحدة في كل صف وعمود. لا يشترط التعريف تفرد الرموز على القطر. [1]
سنملأ ست عشرة خانة بالأحرف A وB وC وD، ونبني فاحصًا يحدد موضع الخلل. الغرض أن تميز نجاح صف واحد عن نجاح الجدول كله، ثم تستطيع إصلاح تجربة صغيرة والتحقق منها دون الاعتماد على شكل الألوان.
الخلاصة السريعة
- قائمة الرموز المعلنة هي A وB وC وD؛ يحتاج كل صف وكل عمود إلى الأربعة كاملة.
- جدولنا يبدأ بالصف ABCD، وتنتقل نقطة بداية القراءة حرفًا في كل صف تالٍ.
- تبديل B وC في الصف الثاني يحفظ صحة الصفوف، لكنه يفسد العمودين الأول والثاني.
- فحصنا 331776 ترتيبًا محتملًا لصفوف هذا المثال؛ نجح منها 576 جدولًا مع إبقاء أسماء الرموز ومواضع الصفوف والأعمدة مميزة.
- اختبرنا 72 تحويلًا على جدولنا، وفصلنا نجاح هذا اللغز عن صلاحية أي تصميم لتجربة فعلية.
اكتب الرموز وحدود اللغز
الأحرف هنا أسماء، وليست أعدادًا نجمعها. اكتب صفًا من أربع خانات وضع فيه A ثم B ثم C ثم D من اليسار إلى اليمين. نستخدم ترتيبًا من اليسار في الشبكات لتسهيل مطابقة الإحداثيات في البرنامج، بينما يبقى شرح المقال عربيًا من اليمين.
لو استعملت أربعة أشكال بدل الحروف، فعرّف قائمة الأشكال أولًا. الاعتماد على اللون وحده قد يخفي التكرار عند الطباعة الرمادية أو عند صعوبة التمييز بين لونين؛ لذلك يحمل كل مربع في الرسم حرفًا واضحًا أيضًا. في هذه التجربة لا توجد خانات فارغة أو رموز مجهولة.
أكمل جدولًا ثم افحص الاتجاهين
صفنا الأول ABCD. نبدأ الثاني من B ونكمل القراءة الدائرية فنحصل على BCDA، ثم CDAB، ثم DABC. هذا يعطي الجدول التالي؛ كتبت رؤوس الأعمدة لاتينية لبيان اتجاه العرض، ولا تدخل تلك الرؤوس في اللغز.
| Row | C1 | C2 | C3 | C4 |
|---|---|---|---|---|
| 1 | A | B | C | D |
| 2 | B | C | D | A |
| 3 | C | D | A | B |
| 4 | D | A | B | C |
اقرأ العمود الثاني من أعلى: B ثم C ثم D ثم A. لم يتكرر رمز. العمود الرابع D ثم A ثم B ثم C يمر بالفحص نفسه. ويمكنك إجراء الفحص بوضع أربعة مربعات صغيرة على ورقة لكل عمود، وشطب اسم الرمز عند ظهوره؛ ظهور اسم مشطوب يعني تكرارًا، وبقاء اسم دون شطب يعني غيابًا.
ولحساب الخلية برمجيًا نرقم الصفوف والأعمدة من صفر إلى ثلاثة، ونختار الرمز ذي الرقم (r+c) % 4. في الصف ذي الرقم اثنين تأتي البواقي 2 و3 و0 و1؛ فتظهر CDAB. عند تثبيت أي عمود وتغيير رقم الصف تمر البواقي بالأربعة مرة واحدة أيضًا. هذه ملاحظة يمكن التحقق منها في الجدول، ولا تستدعي حساب قيمة عددية للحرف.
اصنع خطأ لا تكشفه مراجعة الصفوف
بدّل أول حرفين في الصف الثاني وحده. تصبح السلسلة CBDA بدل BCDA، لكنها ما زالت تضم الرموز الأربعة مرة واحدة. لو اكتفى الفاحص بالصفوف لأعلن النجاح خطأً. أصبح العمود الأول A,C,C,D: تكرر C وغاب B. وصار الثاني B,B,D,A: تكرر B وغاب C.
بقي العمودان الثالث والرابع صحيحين لأننا لم نغير أيًا من خلاياهما. هذا يجعل المثال مفيدًا لفحص رسالة الخطأ: ينبغي أن تسمي عمودين محددين، لا أن تصف جميع الأعمدة بالفشل. وإعادة تبديل الخليتين نفسيهما تصلح هذا المثال؛ لا نفترض أن كل جدول معيب يصلح بتبديل واحد.
يعيد برنامجنا أرقام الصفوف والأعمدة المعيبة ابتداء من الصفر. لذلك يعرض bad_rows=[] وbad_columns=[0,1]. عند كتابة واجهة للقارئ يمكن تحويل 0 و1 إلى العمودين الأول والثاني، مع إبقاء الاتفاق واضحًا في ملف الفحص.
اجعل الفاحص يسأل عن القائمة نفسها
يبدأ الفاحص بالتأكد من أربع صفوف وأربع خانات في كل صف. ثم يقارن مجموعة كل صف ومجموعة كل عمود بالمجموعة المعلنة A,B,C,D. عدد الخانات ثابت، ولذلك تعني مساواة المجموعتين وجود كل رمز مرة واحدة. أما الاكتفاء بعد أربعة رموز مختلفة فقد يقبل A,B,C,X رغم أن X خارج الأبجدية.
اختبرنا هذا الخلل باستبدال A في الركن العلوي الأيسر بـX. أبلغ الفاحص عن الصف الأول والعمود الأول معًا. ورفض جدولًا حذفنا منه صفًا قبل الدخول في فحص الرموز. هذان خطآن مختلفان: أبعاد غير مطابقة وقيمة لا تنتمي للقائمة.
تحويل كامل يحفظ الشرط
يمكن تبديل الصفوف، أو تبديل الأعمدة، أو إعادة تسمية الرموز باتفاق واحد في الجدول كله، مع بقاء مربع لاتيني. [1]
في مثالنا انقل الصف الرابع إلى الأعلى ثم ضع بقية الصفوف بعده. لن تتغير محتويات أي صف؛ وفي كل عمود يتغير ترتيب الرموز فقط. هذه عملية تختلف عن تبديل خليتين داخل صف كما فعلنا في المثال المعيب. كذلك، إذا غيرت A إلى نجمة، فيجب أن تغير كل ظهور لها بالاتفاق نفسه، لا ظهورًا واحدًا.
أجرينا جميع ترتيبات الصفوف الأربعة، وعددها 24، ثم 24 ترتيبًا للأعمدة، ثم 24 إعادة تسمية متباينة للرموز. اجتازت الاختبارات الاثنان والسبعون الفاحص. كل مجموعة بدأت من الجدول الأصلي؛ لم نضرب 24 في 24 في 24 ولم ندّع عدّ جميع تركيبات التحويلات المتتابعة.
كم ترتيبًا وجده الحصر؟
ولدنا جميع ترتيبات الأحرف الأربعة لتكون الصفوف المرشحة. لكل موضع صف 24 اختيارًا، ولذلك توجد 24⁴=331776 قائمة من أربعة صفوف قبل فحص الأعمدة. حصر مباشر مستقل مر على هذه القوائم كلها، وقارناه بمولد يستبعد الصف الجديد فور تكراره رمزًا في عمود سابق. أعطى الأسلوبان مجموعة الجداول نفسها: 576 جدولًا دون تكرار.
هذه النتيجة تعد المواضع والأسماء كما هي. جدولان يختلفان بتبديل صفين محسوبان جدولين، حتى لو اعتبرتهما نسختين من الفكرة نفسها. وعندما فرضنا أن يكون الصف الأول والعمود الأول كلاهما ABCD بالترتيب، بقيت أربعة جداول. يعرض الرسم التالي اثنين منها؛ لاحظ اختلاف الخلايا الداخلية رغم ثبات الحدود.
القطر الرئيسي في جدولنا الدوري هو A,C,A,C. لم يعده الفاحص خطأً، لأننا لم نضع قيدًا على القطر. إذا رغبت في لغز يشترط اختلاف رموزه أيضًا، فأضف هذا الفحص صراحة؛ نجاح الشروط القديمة لا يثبت الشرط الجديد.
أين تنتهي دلالة الترتيب؟
يستخدم التصميم التجريبي المربع اللاتيني لترتيب المعالجات بين عاملَي حجب. يذكر NIST افتراضات للتصميم، منها غياب تفاعلات معينة؛ صلاحية جدول رموز وحدها لا تتحقق من تلك الافتراضات. [2]
يمكنك استعمال شبكتنا كلغز تعليمي وفحص حلها بالمعيار المعلن. لكننا لم نوزع معالجات على أشخاص أو نجمع قياسات أو نحلل تجربة. والعدد 576 ليس تقديرًا لجودة تصميم؛ إنه نتيجة حصر ترتيبات رمزية صغيرة وفق شروط محددة. احتفظ بقائمة الرموز والأبعاد ونتيجة فحص كل اتجاه بجانب أي جدول تعيد استعماله.
المصادر
الأمثلة والرسوم وبرنامج الحصر والفحص أُعدت لهذا المقال وشُغلت محليًا. أُعد النص بمساعدة الذكاء الاصطناعي، ولا يُنسب إلى مراجعة بشرية مستقلة.