يتناول هذا الدرس خوارزميات البحث التنافسي (Adversarial Search) المستخدمة في الألعاب الثنائية، وخوارزمية MiniMax لتحديد أفضل الحركات في لعبة XO، والتقليم ألفا–بيتا (Alpha-Beta Pruning) لزيادة كفاءة البحث، مع تطبيقها برمجياً بلغة بايثون (Python).
آخر تحديث:
يُستعمَل في هذا الدرس لغة البرمجة بايثون لبناء تطبيقات الذكاء الاصطناعي، لِما توفِّره من مكتبات جاهزة تُغني عن كتابة الخوارزميات من الصفر.
لماذا بايثون في الذكاء الاصطناعي: لأنَّ صياغتها قريبة من اللغة الطبيعية فيسهل قراءة الشِّفرة ومراجعتها، ولأنَّ لها مكتبات ناضجة تُغطِّي المعالجة العددية، وتحليل البيانات، والتعلُّم الآلي، والرسم البياني، ولأنَّ مجتمعها الواسع يوفِّر أمثلة وحلولًا جاهزة للمشكلات الشائعة.
تسلسل بناء تطبيق: يبدأ العمل بتحديد المشكلة والهدف منها بدقَّة؛ ثمَّ جمع البيانات التي سيتعلَّم منها النظام أو التي سيعمل عليها؛ ثمَّ تجهيز هذه البيانات بتنظيفها وتحويلها إلى الصيغة التي تقبلها المكتبة؛ ثمَّ اختيار الأسلوب المناسب وبناء النموذج أو الخوارزمية؛ ثمَّ تشغيله وقياس جودة نتائجه؛ ثمَّ تحسينه بتعديل مُعامِلاته أو بزيادة بياناته؛ ثمَّ استعماله على حالات جديدة.
التعامل مع الشِّفرة: تُستورَد المكتبات اللازمة في بداية البرنامج، ثمَّ تُكتَب الدوال التي تُنفِّذ خطوات الحَلِّ، ويُفضَّل تقسيم البرنامج إلى دوال صغيرة يؤدِّي كلٌّ منها وظيفة واحدة؛ فذلك يُسهِّل تتبُّع الأخطاء واختبار كل جزء على حدة.
قياس النتيجة: لا يكفي أن يعمل البرنامج من دون أخطاء؛ بل يجب قياس جودة ما يُنتِجه بمقارنته بنتائج معروفة مُسبَّقًا. فإن كان النظام يُصنِّف، قِيست نسبة التصنيفات الصحيحة؛ وإن كان يتنبَّأ بقيمة عددية، قِيس مقدار انحراف تنبُّؤاته عن القِيَم الحقيقية.
حدود النظام: النظام لا يعرف إلّا ما تُخبِره به بياناته؛ فإن كانت البيانات ناقصة أو مُنحازة، كانت مخرجاته كذلك. ولذلك تُعَدُّ مرحلتا جمع البيانات وتجهيزها أهمَّ من اختيار الخوارزمية نفسها في كثير من الحالات، ويبقى الحكم البشري ضروريًّا لتفسير النتيجة وتحديد ما إذا كانت صالحة للاستعمال.
لعبة محصّلتها صفر: لعبة يكون فيها مكسب لاعب مساوياً لخسارة الآخر، فمجموع الفائدتين صفر.
MAX وMIN: عند تتبّع MiniMax: في مستويات اللاعب خذ القيمة العظمى للأبناء، وفي مستويات الخصم خذ القيمة الصغرى؛ والقيمة الصاعدة للجذر تحدّد أفضل حركة.
نفس النتيجة بكفاءة أعلى: التقليم ألفا–بيتا لا يغيّر قرار MiniMax؛ يصل إلى الحركة نفسها لكن بتقييم عقد أقل.
بحث في مسائل بوكلاء متنافسين كالألعاب الثنائية.
مكسب لاعب = خسارة الآخر، مجموعهما صفر.
تمثيل لتعاقب حركات اللاعبين وحالات اللعبة.
تعظّم فائدة اللاعب وتفترض خصماً يصغّرها.
قيمة تقيس مدى جودة الحالة للاعب (فوز/خسارة/تعادل).
يحذف الفروع غير المؤثّرة لرفع كفاءة MiniMax.
عرف خوارزميات البحث التنافسي (Adversarial Search Algorithms) واذكر أشهر أمثلتها.
هي أنواع من خوارزميات البحث في الذكاء الاصطناعي، تُستخدم في حال وجود عميلين (وكيلين) أو أكثر يتنافس كل منهما الآخر كما في ألعاب الذكاء، والشطرنج، وتخطيط الاستراتيجيات. من أشهر أمثلتها: خوارزمية (MiniMax)، وخوارزمية التقليم (Alpha-Beta)، وخوارزمية (Monte Carlo).
ما المقصود بخوارزميات البحث التنافسي؟
هي خوارزميات تُستخدم عند وجود عميلين أو أكثر يتنافس كلٌّ منهما مع الآخر.
اذكر مثالين على استخدام خوارزميات البحث التنافسي.
ألعاب الذكاء والشطرنج.
اذكر ثلاث خوارزميات من أشهر خوارزميات البحث التنافسي.
MiniMax، والتقليم Alpha-Beta، وMonte Carlo.
بماذا تختلف خوارزميات البحث التنافسي عن خوارزمية البحث الشامل بالأفضلية A*؟
تعتمد على المواجهة والتغلب على الخصم الذي يحاول دائمًا إفشال خطط اللاعب.
بطاقات مهمة
بحث في مسائل بوكلاء متنافسين كالألعاب الثنائية.
مكسب لاعب يساوي خسارة الآخر.
تعظّم فائدة اللاعب وتفترض خصماً يصغّرها.
MAX يأخذ القيمة العظمى للأبناء، وMIN يأخذ الصغرى.
قيمة تقيس جودة الحالة (فوز/خسارة/تعادل).
يحذف الفروع غير المؤثّرة لرفع كفاءة MiniMax.
لا، يعطي القرار نفسه بتقييم عقد أقل.
تمثيل لتعاقب حركات اللاعبين وحالات اللعبة.
لغة البرمجة بايثون لتطوير لعبة XO.
لأنه يستكشف كل النتائج ويختار ما يضمن أفضل نتيجة بافتراض خصم مثالي.
نصائح للمراجعة
موضوعات أخرى في الوحدة