جدول الحقيقة الذي لم يعلّمك أحدٌ كيف تستخدمه

لُقّنته ثلاث مرات بوصفه تمرينًا منطقيًّا. لكنه كان دائمًا شيئًا آخر — أوثق وسيلة للتعامل مع كل حالة دون أن تفوتك واحدة.

تُعلَّم جداول الحقيقة ثلاث مرات: مرة في المرحلة الابتدائية، ومرة في الثانوية، ومرة في الجامعة. وفي كل مرة الدرس نفسه: P وQ وAND وOR، وشبكة من الصواب والخطأ تُثبت متطابقةً ما تنساها قبل الامتحان التالي. ثلاث مرات مع التجريد نفسه، ولا تخبرك أيٌّ منها بالغرض الذي وُجد من أجله.

وإليك الغرض منه. جدول الحقيقة أوثق أداة لتصميم الخوارزميات ستستخدمها يومًا — و«الخوارزمية» هنا لا تعني الشيفرة، بل أي إجراء عليه أن يعالج كل حالة دون أن تفوته واحدة: نصّ يتبعه موظف الدعم، أو عملية تفتيش، أو قاعدة عمل، أو سطر شيفرة. وجدول الحقيقة يحوّل سؤال «هل عالجنا كل شيء؟» من أمنية إلى سؤال يمكنك فعلًا الإجابة عنه.

الطريقة

لها ست خطوات.

  1. صُغ المشكلة كأسئلة نعم/لا. كل سؤال يصبح عمودًا. وإن لم يكن السؤال ثنائيًّا، فجزّئه حتى يصير كذلك.
  2. عدّد كل التركيبات. فـn سؤالًا تعطي 2ⁿ صفًّا، وهذه الصفوف هي كل حالة ممكنة — لا ما خطر لك منها، بل كلها. والتغطية تحصل عليها كاملةً بمجرد أن تنتهي من العدّ. ثم رتّب الأعمدة بحسب قدرتها على الإقصاء: العامل الأكبر أولًا — أي السؤال الذي إذا جاء جوابه على وجه معيّن أسقط أكبر كتلة من الصفوف دفعة واحدة. فإن أحكمت هذا الترتيب كاد الجدول يختصر نفسه بنفسه.
  3. أقصِ — وراقب الجدول يتقلّص. أجب عن السؤال الأول بالجواب الذي يُسقط غيره، فيصبح كل سؤال يليه بلا معنى — إما لأن الواقع لا يمكن أن ينتج له جوابًا، وإما لأن قاعدةً حسمت النتيجة سلفًا. علّم تلك الأعمدة بـ-، فتنطوي الكتلة كلها في حالة واحدة. كل شريحة تُقلّص الجدول على مرأى العين، وذلك التقلّص هو الطريقة وهي تعمل.
  4. حلّ كل حالة باقية: نتيجة واحدة لكل منها، مذكورة بوضوح. وإن لم تكن للحالة نتيجة بيّنة، فقد وجدت للتوّ ثغرة كانت ستصل إلى المستخدم خللًا لولا ذلك.
  5. ارسم المخطط الانسيابي: من البداية إلى النهاية، فرع لكل سؤال، مبتدئًا بالأكثر إقصاءً. الحالات الباقية هي نهايات فروعه، والنتائج هي مستقرّها.
  6. برمِجه — أو اكتب النصّ، أو إجراء التشغيل المعياري. تُدخل تغطية كاملة، فتخرج بإجراء يمكن إثبات اكتماله. لا توجد حالة غير مُختبَرة، لأنه لا توجد حالة غير مُدرَجة.

مثالٌ تطبيقي: رصيف الاستلام

خذ مثالًا حقيقيًّا. مستودعٌ يستلم منتجاتٍ من المورّدين والمصنّعين. وقبل أن ينتقل أي شيء إلى صالات العرض والمتاجر، تُفحص عيّنةٌ من كل دفعة بالباركود عند الرصيف. تحكم ذلك الرصيف قاعدتان ثابتتان: لا باركود، نولّد باركودًا داخليًّا خاصًا بنا؛ أي عدم تطابقٍ هو خطأ المورّد، فتُرفض الشحنة كلها.

أربعة أسئلة نعم/لا لكل عنصر من العيّنة، مرتّبة بالأكثر إقصاءً أولًا:

  • هل يوجد باركود؟ — العامل الأكبر؛ فغياب الباركود له قاعدةٌ خاصة به.
  • قابل للمسح؟ — هل يُقرأ الملصق فعلًا.
  • يطابق المتوقّع؟ — هل يساوي الرمز الممسوح ما أعلنه المورّد لذلك العنصر.
  • مُسجَّل؟ — هل الرمز وحدة تخزين معروفة في نظامنا.

اكتب مكان كل نعم الرقم 1، ومكان كل لا الرقم 0 — وهذا كل ما يعنيه النظام الثنائي. وعدد الحالات الممكنة ليس تخمينًا أبدًا: هو دائمًا 2ⁿ، أي اثنان مرفوعًا إلى عدد الأسئلة. أربعة أسئلة تعني 2⁴ = 16 حالة في كل مرة — وتعدادها ليس إلا عدًّا ثنائيًّا من 0000 إلى 1111. ستة عشر صفًّا لم يتطلّب أيٌّ منها اجتهادًا — كل ما فعلته أنك عددت. والآن جزّئ الجدول، مبتدئًا بالأكثر إقصاءً، واختزل كل كتلة تنطوي إلى الصف الوحيد الذي تمثّله حقًّا:

جدول حقيقة متحرك: 16 صفًّا ثنائيًّا تُبنى بالعدّ من 0000 إلى 1111، ثم تنهار عبر أربع شرائح إقصاءٍ إلى خمس حالات من A إلى E.

ست عشرة حالة تُبنى بالعدّ الثنائي، ثم تنهار عبر أربع شرائح إلى خمس.

الشريحة 1 — الباركود = 0. لا باركود: فلا شيء يُمسح أو يُطابَق أو يُبحث عنه — ولهذه الحالة قاعدتها الخاصة (توليد باركود داخلي). تُعلَّم الأعمدة الثلاثة الأخيرة بـ-، فلا تكون كتلة «لا باركود» ثماني حالات، بل حالة واحدة. سؤال واحد، وانطوى نصف الجدول في سطر واحد.

الشريحة 2 — الباركود = 1، المسح = 0. الملصق الذي لا يُقرأ لا يعطي قيمة تُطابَق أو يُبحث عنها — والملصق غير المقروء عيب من المورّد. يُعلَّم «التطابق» و«معروف» بـ-، فتُختزل الصفوف الأربعة غير المقروءة إلى صف واحد.

الشريحة 3 — الباركود = 1، المسح = 1، التطابق = 0. وهنا انطواء أدقّ. عدم التطابق يرفض الشحنة كلها بحكم القاعدة — فكون الرمز معروفًا أو غير معروف لا يغيّر شيئًا. فسؤال «معروف» هنا ليس بلا جواب، بل هو ببساطة لا صلة له بالنتيجة. علّمه بـ-، فيُختزل صفّا عدم التطابق إلى صف واحد.

الشريحة 4 — الباركود = 1، المسح = 1، التطابق = 1. الآن فقط تستحقّ «معروف» مكانها: فالباركود الصالح المطابق إما وحدة تخزينٍ نحملها أصلًا، وإما جديدةٌ لإدراجها. صفّان، وحالتان حقيقيتان. أسنِد النتائج ويُحسم الجدول:

الباركودالمسحالتطابقمعروفالنتيجة
0–––A — توليد باركود داخلي؛ التسجيل؛ الإفراج إلى التوزيع
10––B — رفض الشحنة: ملصقٌ غير مقروء (المورّد)
110–C — رفض الشحنة: عدم تطابق الباركود (المورّد)
1110D — إدراج وحدة تخزين جديدة؛ التسجيل؛ الإفراج إلى التوزيع
1111E — قبول وحدة تخزين معروفة؛ الإفراج إلى التوزيع

ست عشرة تركيبة، وخمس حالات — ثلاث منها كتل كاملة حسمها سؤال واحد: لا باركود، وغير مقروء، وعدم تطابق. والمخطط الانسيابي يخرج مباشرة من الشرائح، مبتدئًا بالأكثر إقصاءً: خطآ المورّد يلتقيان في مسار واحد هو رفض الشحنة؛ ومسارات القبول الثلاثة يؤدّي كلّ منها دوره ثم تندمج في الإفراج إلى التوزيع؛ وكل مسار ينتهي عند نهاية واحدة. ولا يبلغ السؤال الأخير إلا العنصر السليم المطابق.

مخطط قرار: هل يوجد باركود؟ لا ← توليد باركود داخلي؛ نعم ← قابل للمسح؟ لا ← رفض؛ نعم ← يطابق المتوقّع؟ لا ← رفض؛ نعم ← مُسجَّل؟ لا ← إدراج وحدة تخزين جديدة، نعم ← قبول الوحدة المعروفة. مسارات القبول تُفرِج إلى التوزيع؛ وكل المسارات تنتهي عند النهاية.

أهذه مجرّد قوة غاشمة؟

لاحِظ الآن ما حدث للتوّ، فهو يبدو تمامًا كالشيء الذي ينبغي تجنّبه. تعداد التركيبات كلها، 2ⁿ، هو قوة غاشمة — المتّهمة في منشور سابق من هذه السلسلة، الخطوة التي تتخطّى السؤال الذي كانت بنية أذكى ستطرحه. فأيّهما إذن؟

كلاهما، كلٌّ في موضعه. القوة الغاشمة تُستخدم على المشكلة — فمجال الحالات صغير ومحدود ومنتهٍ (2ⁿ لحفنة من الأسئلة الثنائية)، وتعداده لا يكلّف شيئًا تقريبًا ويضمن تغطية كاملة. ثم يأتي الحل بنيويًّا: الواقع وقواعدك يختزلان الصفوف المحسومة، والترتيب بالأكثر إقصاءً يختصر الباقي سريعًا، وكل حالة باقية تنال جوابًا حقيقيًّا. القوة الغاشمة على التعريف رخيصة وصادقة، والقوة الغاشمة على الحل هي النوع المكلف. عدّد المشكلة باستقصاء، وحلّها ببنية. إنها الخطوة نفسها التي في تعريف المشكلة تعريفًا كاملًا قبل مدّ اليد إلى الجواب — فالاكتمال هو المقصد، وجدول الحقيقة ليس إلا الأداة التي تجعل الاكتمال قابلًا للفحص.

سُلّم إليك هذا ثلاث مرات وقيل لك إنه تمرينٌ منطقي. لم يكن قط تمرينًا منطقيًّا. كان وسيلةً لئلّا تفوتك حالةٌ بعد اليوم.

شارك هذا المنشور
علامات التصنيف
الأرشيف
«لديك إمكاناتٌ حقيقية» — ما الذي تخبرك به هذه العبارة فعلًا
إنه مديحٌ يعني واحدةً من اثنتين — راصدٌ اكتفى بملاحظتك، أو البنّاء النادر الذي يعرف حقًّا كيف يطوّر ما يراه.