You are on page 1of 5

‫جامعة دمشق – كلية الهندسة املعلوماتية‬

‫السنة الرابعة‬

‫عملي خوارزميات البحث الذكية‬

‫وظيفة عملي خوارزميات البحث الذكية‬


‫قسم الذكاء الصنعي فئة ‪ 5‬و‪6‬‬

‫لعبة ‪Logic Steps‬‬


‫هي إحدى ألعاب األحاجي التي يلعبها العب واحد والتي تعتمد على املنطق‪ ،‬سنقوم بداية بكتابة برنامج يحقق هذه‬
‫اللعبة‪.‬‬

‫يمكنك تجريب اللعبة على الرابط التالي‪https://www.mathplayground.com/logic_steps.html :‬‬

‫قواعد اللعبة‬
‫يتألف ال‪ Puzzle‬الواحد من رقعة ثنائية البعد تحوي مجموعة خاليا‪ ،‬تحوي الخاليا على دوائر لها عدة أنواع‬
‫باإلضافة إلى مربع مفرغ (واحد أو أكثر) موجود على إحدى الخاليا‪ ،‬يتم تحريكه بزلقه على الرقعة‪ ،‬يتغير نوع الدائرة‬
‫عند املرور عليها باملربع املفرغ حتى تصبح في النهاية بشكل مربع أبيض‪ ،‬هذا املربع ال يمكن املرور عليه مرة أخرى‪،‬‬
‫الهدف إمرار املربع املفرغ على جميع الخاليا بحيث تصبح كلها مربعات بيضاء‪.‬‬

‫‪1‬‬
‫لنوضح أنواع الخاليا من خالل املثال التالي (مستوى متقدم من اللعبة)‬

‫خليه عليها مربع مفرغ‬

‫مربع أبيض ال يمكن المرور عليه‬


‫مرة أخرى‬

‫دائرة خضراء تتحول بالمرور عليها‬


‫إلى مربع أبيض‬

‫دائرة حمراء تتحول بالمرور عليها‬


‫إلى دائرة صفراء‬

‫دائرة صفراء تتحول بالمرور عليها‬


‫إلى دائرة خضراء‬

‫مربع بنفسجي (من نوع الدوائر‬


‫تماماً) يتحول بالمرور عليه إلى‬
‫دائرة حمراء‬

‫وفيها يلي مثال لحل الرقعة‪:‬‬

‫‪2‬‬
3
‫املطلوب‬
‫نريد كتابة برنامج لبرمجة هذه اللعبة ليلعبها بها املستخدم باستعمال تعليمات من الكيبورد آخذين بعين االعتبار‬
‫أننا سنبرمج الحقا مجموعة من الخوارزميات تمثل كل منها استراتيجية بحث والتي ستحل املسألة باعتبارها مسألة‬
‫بحث‪.‬‬

‫املطلوب منك في هذا الجزء من الوظيفة هو تحقيق اللعبة بالبنية التي تراها مناسبة‪ ،‬وباستخدام أي لغة برمجة‬
‫تريدها‪ ،‬ولكن يجب األخذ بعين االعتبار أن يكون إضافة استراتيجية بحث جديدة هو أمر بسيط‪ .‬يمكنك تحقيق‬
‫ذلك بالفصل ما بين جزء الكود املتعلق بمنطق اللعبة وبين الجزء املتعلق بطريقة اللعب على الشكل التالي‪.‬‬

‫الجزء املتعلق بمنطق اللعبة‪:‬‬


‫يجب تمثيل املسألة بما يوافق مسألة بحث ‪ ،state space search‬ويمكن ذلك باعتبار الحالة (‪ )state‬هي خطوة‬
‫رقعة فيها حل جزئي‪.‬‬

‫يمكنك برمجة صف يمثل رقعة (حالة) يجب أن يتوفر فيه ما يلي‪:‬‬

‫• تمثيل مناسب للخاليا وأماكنها ضمن الرقعة‪،1‬‬


‫• مجموعة توابع تتحقق من إمكانية تحريك مربع مفرغ ما بإحدى االتجاهات األربعة (أعلى‪ ،‬أسفل‪ ،‬يمين‪،‬‬
‫يسار‪)2‬‬
‫ً‬
‫• مجموعة توابع تقوم بتحريك مربع مفرغ مولدة حالة جديدة أي غرض جديد من الرقعة (باعتبارها عقدة‬
‫جديدة في ‪ graph‬البحث)‬
‫• تابع يتحقق من كون الرقعة تمثل حالة نهائية محققة شروط اللعبة (جميع الخاليا أصبحت مربعات‬
‫بيضاء)‪.‬‬
‫• تابع يقوم بطباعة الرقعة (ما يوافق ‪ toString‬في جافا)‬

‫هناك مجموعة من التوابع اإلضافية ‪ -‬يجب عليك تحقيقها في هذا الجزء من الوظيفة‪ -‬التي ستحتاج إلى تحقيقها‬
‫ً‬
‫لتمثيل بنية مسألة البحث (قد ال تستخدمها اآلن في حالة لعب املستخدم للعبة ولكنك ستحتاج إليها الحقا عند‬
‫تحقيق خوارزميات البحث املختلفة)‬
‫ً‬
‫ابتداء من الرقعة الحالية بتحريك أي من املربعات املفرغة في‬ ‫• تابع يقوم برد جميع الحاالت (الرقع) املمكنة‬
‫أي من االتجاهات املمكنة‪ ،‬وذلك ضمن قائمة من أغراض جديدة تمثل نسخة من الغرض املمثل للرقعة‬
‫الحالية مع تغيير فقط في مكان املربع املفرغ ونوع الخلية التي تم التحريك إليها‪.‬‬

‫‪ 1‬الرقعة ليست مستطيلة الحجم‪ ،‬ولكن مع ذلك يمكنك أن تمثلها بمصفوفة ثنائية للسهولة‪ ،‬ويمكن أن تجعل الخاليا التي ال تحوي على دوائر‬
‫غير مفعلة‬
‫‪ 2‬حافظ على هذا الترتيب أثناء تحقيقك للتابع‪.‬‬

‫‪4‬‬
‫ً‬
‫• توابع تتأكد من تساوي حالتين معا (ما يوافق ‪ equals‬و ‪ hashCode‬في جافا)‬

‫الجزء املتعلق باللعب‬


‫هذا الجزء من الكود سيقوم بلعب لعبة برقعة ما‪ ،‬أي بغرض من الصف السابق‪ ،‬في وظيفتنا سيكون من يقوم‬
‫باللعب هو املستخدم‪ ،‬حيث تظهر له الرقعة ويقوم باختيار املربع املفرغ واالتجاه الذي يرغب بتحريكه إليه‬
‫وسيقوم البرنامج بتحريكه (إن أمكن) وإظهار الرقعة التالية‪ ،‬وفي حال كانت حالة نهائية ينهي اللعبة‪.‬‬

‫في مراحل الحقة سيكون البرنامج هو من يلعب هذه اللعبة حيث يتم اختيار الخطوة حسب استراتيجية اللعب‬
‫وطباعة مجموعة خطوات الحل‪.‬‬

‫ليس عليك االعتناء بجمالية اإلظهار حيث يكفي أن تقوم بطباعة جدول يمثل الرقعة بشكل واضح كل مرة‪ ،‬وأن‬
‫يكون اإلدخال بتعليمات دخل بسيطة‪.‬‬
‫ً‬
‫مالحظة‪ :‬يجب أن يكون برنامجك قادرا على تحقيق إمكانية لعب أي رقعة وليس رقعة واحدة ثابتة‬

‫أمور تنظيمية‪:‬‬
‫• تسلم الوظيفة يوم اإلثنين ‪ 2023/10/30‬ضمن حصة العلمي‪ .‬تأكد أن برنامجك يعمل ألنك ستقوم‬
‫بالتعديل عليه ضمن الحصة‪.‬‬
‫• الوظيفة فردية لكل طالب على حدا‪.‬‬
‫• أي وظيفة منقولة أو منقول منها من طالب آخر من اإلنترنت ستنال عالمة الصفر حتما‪،‬‬

‫ّ‬
‫م‪ .‬زينة الدالل‬

‫‪5‬‬

You might also like