📄 النص الكامل للصفحة
print('\nShortest Path:', solution)
print('Cells on the Shortest Path:', len(solution))
print('Shortest Path Distance:', distance)
print('Number of cell visits:', cell_visits)Shortest Path: [(2, 0), (1, 0), (0, 0), (0, 1), (0, 2), (1, 2)]
Cells on the Shortest Path: 6
Shortest Path Distance: 5
Number of cell visits: 12توضح النتائج قدرة ()astar_maze_solver على حل الحالة الموزونة بالعثور على المسار الأقصر المحتمل [(0, 2), (0, 1), (0, 0), (1, 0), (2, 0), (2, 1)] بتكلفة إجمالية قدرها 5. وهذا يوضح مزايا استخدام خوارزمية بحث مستنيرة، فهي تمكنك من إيجاد الحل الأمثل باستخدام أبسط طريقة ممكنة.--- SECTION: المقارنة بين الخوارزميات Algorithm Comparison --- المقارنة بين الخوارزميات Algorithm Comparisonالخطوة التالية هي المقارنة بين خوارزمية البحث بأولوية الاتساع (BFS) وخوارزمية البحث بأولوية الأفضل (A* search) في متاهة أكبر حجماً وأكثر تعقيداً. يُستخدم المقطع البرمجي التالي بلغة البايثون لإنشاء تمثيل رقمي لهذه المتاهة:big_maze=np.zeros(((15,15)))# coordinates of the cells occupied by blocks blocks=[(2,8), (2,9), (2,10), (2,11), (2,12),
(8,8), (8,9), (8,10), (8,11), (8,12),
(3,8), (4,8), (5,8), (6,8), (7,8),
(3,12), (4,12), (6,12), (7,12)]for block in blocks:
# set the value of block-occupied cells to be equal to 1
big_maze[block]=1هذه المتاهة 15×15 تحتوي على قسم من الحواجز على شكل حرف C ينبغي على اللاعب تجاوزها للوصول إلى الهدف المحدد بالعلامة X. ثم تُستخدم أداة الحل في البحث بأولوية الاتساع (BFS solver) وأداة الحل في البحث بأولوية الأفضل (A* search solver) لحل الإصدارات الموزونة وغير الموزونة من هذه المتاهة كبيرة الحجم:--- SECTION: الإصدار غير الموزون --- الإصدار غير الموزونstart_cell=(14,0)
target_cell=(5,10)solution_bfs_unw, distance_bfs_unw, cell_visits_bfs_unw=bfs_maze_solver(start_cell,
target_cell,
big_maze,
get_accessible_neighbors,2023 - 1447--- VISUAL CONTEXT ---
**DIAGRAM**: شكل 2.23: خلية البداية والخلية المستهدفة للمتاهة
Description: A 15x15 grid representing a maze. The grid cells are mostly green, with a black 'start_cell' at the bottom-left corner (14,0) and a target cell marked with an 'X' (5,10) in the upper-middle section. There is a C-shaped block of dark grey cells forming an obstacle in the maze, which the player needs to navigate around to reach the target. A blue line connects the start cell to the target cell, visually indicating the path or relationship. The labels 'الخلية المستهدفة (target_cell)' and 'خلية البداية (start_cell)' point to their respective locations.
Key Values: start_cell=(14,0), target_cell=(5,10), 15x15 grid, C-shaped obstacle Context: This diagram illustrates the maze structure and its key elements (start, target, obstacles) that are used as input for the BFS and A* search algorithms discussed in the text.
🎴 بطاقات تعليمية للمراجعة
عدد البطاقات: 4 بطاقة لهذه الصفحة
ما هو الغرض الرئيسي من خوارزمية البحث بأولوية الاتساع (BFS) في حل المتاهات؟
الإجابة: يهدف البحث بأولوية الاتساع (BFS) إلى إيجاد المسار الأقصر في متاهة غير موزونة، حيث يتم استكشاف جميع العقد على نفس المستوى قبل الانتقال إلى المستوى التالي.
الشرح: البحث بأولوية الاتساع هو خوارزمية بحث في الرسم البياني تستكشف جميع العقد على مسافة (عدد الخطوات) من خلية البداية قبل الانتقال إلى العقد الأبعد. هذا يضمن إيجاد المسار الأقصر في المتاهات غير الموزونة.
تلميح: فكر في طريقة استكشاف العقد في البحث بأولوية الاتساع. هل يبدأ بعمق أم باتساع؟
ما هي طبيعة المسار الذي تبحث عنه خوارزمية A* search في المتاهات؟
الإجابة: تبحث خوارزمية A* search عن المسار الأقصر (الأقل تكلفة) في المتاهات، سواء كانت موزونة أو غير موزونة، وذلك باستخدام دالة تقييم تجمع بين التكلفة الفعلية للوصول إلى العقدة والتكلفة المقدرة للوصول إلى الهدف.
الشرح: A* هي خوارزمية بحث مستنيرة تستخدم دالة تقييم (f(n) = g(n) + h(n)) حيث (g(n)) هي التكلفة الفعلية من البداية إلى العقدة الحالية، و (h(n)) هي التكلفة الاستدلالية (heuristic) من العقدة الحالية إلى الهدف. هذا يسمح لها بإيجاد المسار الأمثل بكفاءة.
تلميح: ما هي الميزة الرئيسية التي تميز A* عن BFS عندما يتعلق الأمر بتكلفة المسار؟
كيف يتم تمثيل الحواجز في المتاهة باستخدام NumPy في المثال المقدم؟
الإجابة: يتم تمثيل الحواجز في المتاهة عن طريق تعيين قيمة '1' للخلايا التي تشغلها الحواجز في مصفوفة NumPy التي تمثل المتاهة، بينما يتم تعيين القيمة '0' للخلايا المتاحة.
الشرح: في سياق الحل البرمجي للمتاهة، يتم استخدام مصفوفة NumPy (big_maze) لتمثيل شبكة المتاهة. الخلايا التي لا يمكن المرور عبرها (الحواجز) يتم تمثيلها بقيمة عددية محددة (1 في هذا المثال) للسماح للخوارزميات بالتعرف عليها وتجنبها.
تلميح: ما هي القيمة العددية التي تميز الخلايا المحظورة عن الخلايا المفتوحة؟
ما هي العلاقة بين استخدام خوارزمية بحث مستنيرة (مثل A*) و'أبسط طريقة ممكنة' لإيجاد الحل الأمثل؟
الإجابة: تشير 'أبسط طريقة ممكنة' إلى أن خوارزمية البحث المستنيرة مثل A* تجد المسار الأمثل بكفاءة أكبر من الخوارزميات غير المستنيرة (مثل BFS في بعض الحالات)، مما يعني أنها قد تستكشف عددًا أقل من العقد للوصول إلى نفس الحل الأمثل.
الشرح: خوارزمية A* هي خوارزمية بحث مستنيرة لأنها تستخدم تقديرًا (heuristic) لتوجيه البحث نحو الهدف. هذا التوجيه يساعدها على تجنب استكشاف مسارات غير واعدة، مما يجعلها فعالة في إيجاد المسار الأمثل بأقل عدد ممكن من الخطوات والتحسينات.
تلميح: فكر في مفهوم 'الاستنارة' وكيف يساعد في توجيه البحث. هل يعني ذلك استكشاف كل شيء أم استكشاف منظم؟