خوارزميات البحث وإيجاد المسار - كتاب الذكاء الإصطناعي - الصف 12 - الفصل 1 - المملكة العربية السعودية

الكتاب: كتاب الذكاء الإصطناعي - الصف 12 - الفصل 1 | المادة: الذكاء الإصطناعي | المرحلة: الصف 12 | الفصل الدراسي: 1

الدولة: المملكة العربية السعودية | المنهج: المنهج السعودي - وزارة التعليم

الدرس: خوارزمية البحث بأولوية الأفضل (A*) في المتاهات

📚 معلومات الصفحة

الكتاب: كتاب الذكاء الإصطناعي - الصف 12 - الفصل 1 | المادة: الذكاء الإصطناعي | المرحلة: الصف 12 | الفصل الدراسي: 1

الدولة: المملكة العربية السعودية | المنهج: المنهج السعودي - وزارة التعليم

نوع المحتوى: درس تعليمي

مستوى الصعوبة: متوسط

📝 ملخص الصفحة

تتناول هذه الصفحة تطبيق خوارزمية البحث بأولوية الأفضل (A*) لحل مشاكل إيجاد المسار في المتاهات، مع التركيز على حالتين رئيسيتين: الحالة غير الموزونة والحالة الموزونة. في الحالة غير الموزونة، يتم استخدام دالة استدلال ثابتة (constant heuristic) لحل متاهة 3x3، حيث تنتج الخوارزمية مساراً قصيراً يتكون من 4 خلايا بمسافة 3، بعد فحص 12 خلية، مما يوضح أداءً مشابهاً لخوارزمية البحث بأولوية الاتساع (BFS) التي فحصت 10 خلايا.

يتم شرح كيفية عمل الخوارزمية من خلال فحص الخلايا المجاورة وتحديث المسار الأفضل، حيث يتم تعيين expansion_candidates لمجموعة الخلايا المجاورة إذا تم العثور على مسار أفضل. كما يتم تقديم مقطع برمجي (astar_maze_solver) لتوضيح التنفيذ العملي، مع إخراج النتائج التي تشمل المسار القصير وعدد الخلايا المفحوصة.

تنتقل الصفحة بعد ذلك إلى الحالة الموزونة، حيث يتم تطبيق خوارزمية A* على متاهة ذات أوزان مختلفة للحركات الأفقية/العمودية والقطرية، باستخدام دالة get_accessible_neighbors_weighted. هذا يهدف إلى تقييم قدرة الخوارزمية على حل المتاهات التي فشلت فيها BFS في إيجاد المسار الأقصر، مع الإشارة إلى إمكانية استخدام دوال استدلال أخرى لتحسين الأداء في المستقبل.

📄 النص الكامل للصفحة

يحدث الأمر نفسه إذا تم فحص الدالة المجاورة من قبل، ولكن فقط إذا كان المسار إلى هذه الخلية المجاورة من خلال cell_best أقصر من المسار السابق. إذا عثرت الدالة بالفعل على مسار أفضل، فسيتم تعيين expansion_candidates إلى مجموعة الخلايا المجاورة لها. يستخدم المقطع البرمجي التالي (astar_maze_solver) لحل الحالة غير الموزونة (Unweighted Case) للغز المتاهة 3x3:--- SECTION: Unweighted A* Maze Solver Code --- start_cell=(2,0) target_cell=(1,2)solution, distance, cell_visits=astar_maze_solver(start_cell, target_cell, small_maze, get_accessible_neighbors, constant_heuristic, verbose=False)print('\nShortest Path:', solution) print('Cells on the Shortest Path:', len(solution)) print('Shortest Path Distance:', distance) print('Number of cell visits:', cell_visits)--- SECTION: Output of Unweighted A* Maze Solver --- Shortest Path: [(2, 0), (1, 0), (0, 1), (1, 2)] Cells on the Shortest Path: 4 Shortest Path Distance: 3 Number of cell visits: 12ستبحث أداة الحل في البحث بأولوية الأفضل (A* search solver) عن المسار المحتمل الأقصر والأفضل بعد فحص 12 خلية. وهذا أكثر قليلاً من أداة الحل في البحث بأولوية الاتساع (BFS solver) التي وجدت الحل بعد فحص 10 خلايا فقط. وهذا يعود إلى بساطة الاستدلال الثابت المستخدم لإرشاد (astar_maze_solver). وكما سيتضح لاحقاً في هذا القسم، يمكن استخدام دالة استدلال أخرى لتمكين الخوارزمية من إيجاد الحل بشكل أسرع. الخطوة التالية هي تقييم ما إذا كانت خوارزمية البحث بأولوية الأفضل (A* search) قادرة على حل المتاهة الموزونة التي فشلت خوارزمية البحث بأولوية الاتساع (BFS) في العثور على أقصر مسار لها أم لا:--- SECTION: Weighted A* Maze Solver Code --- start_cell=(2,0) target_cell=(1,2)horz_vert_w=1 # weight for horizontal and vertical moves diag_w=3 # weight for diagonal moves solution, distance, cell_visits=astar_maze_solver(start_cell, target_cell, small_maze, partial(get_accessible_neighbors_weighted, horizontal_vertical_weight=horz_vert_w, diagonal_weight=diag_w), constant_heuristic, verbose=False)--- VISUAL CONTEXT ---Context: Publisher/source identification for the textbook.

🎴 بطاقات تعليمية للمراجعة

عدد البطاقات: 4 بطاقة لهذه الصفحة

ماذا يحدث في خوارزمية A* إذا تم فحص الخلية المجاورة من قبل، ولكن المسار الجديد إليها أقصر من المسار السابق؟

الإجابة: إذا كان المسار الجديد إلى الخلية المجاورة أقصر، يتم تعيين expansion_candidates إلى مجموعة الخلايا المجاورة لهذه الخلية.

الشرح: تسمح هذه الآلية لخوارزمية A* بالتحسين المستمر لمساراتها، مما يضمن إيجاد المسار الأمثل.

تلميح: فكر في الشرط الذي يجعل تحديث المسار ضرورياً في خوارزمية البحث.

في مثال حل المتاهة غير الموزونة باستخدام A*، كم عدد الخلايا التي تم فحصها للعثور على الحل؟

الإجابة: تم فحص 12 خلية.

الشرح: يشير عدد الزيارات إلى مدى عمق البحث الذي قامت به الخوارزمية لإيجاد الحل.

تلميح: ارجع إلى قسم 'Output of Unweighted A* Maze Solver' واستخرج الرقم الخاص بـ 'Number of cell visits'.

لماذا قد يكون عدد الزيارات في البحث بأولوية الأفضل (A* search) أكثر قليلاً من البحث بأولوية الاتساع (BFS) في حالة المتاهة غير الموزونة؟

الإجابة: يعود ذلك إلى بساطة دالة الاستدلال المستخدمة في A*، والتي قد لا توجه البحث بنفس كفاءة BFS في هذه الحالة المحددة.

الشرح: في حين أن A* أقوى بشكل عام، فإن اختيار دالة الاستدلال المناسبة أمر بالغ الأهمية لكفاءتها. دالة الاستدلال الثابتة في هذا المثال لم تكن مثالية للمتاهة غير الموزونة.

تلميح: ما هي المكونات الرئيسية التي تستخدمها خوارزمية A* لتوجيه بحثها؟

ما هو الغرض من استخدام 'partial' مع 'get_accessible_neighbors_weighted' في حل المتاهة الموزونة؟

الإجابة: يُستخدم 'partial' لتثبيت بعض الوسائط (مثل الأوزان الأفقية والرأسية والأقطرية) لدالة 'get_accessible_neighbors_weighted' وإنشاء دالة جديدة يمكن تمريرها مباشرة إلى 'astar_maze_solver'.

الشرح: هذه تقنية برمجة مفيدة تسمح بإعادة استخدام الدوال وتكييفها مع سياقات مختلفة، مما يجعل الكود أكثر مرونة.

تلميح: فكر كيف يمكن تعديل دالة موجودة لتناسب متطلبات دالة أخرى بدون إعادة كتابتها بالكامل.