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

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

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

الدرس: تطبيق دالة بايثون للاستدلال الذكي

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

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

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

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

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

📝 ملخص الصفحة

تقدم هذه الصفحة تطبيقًا عمليًا لخوارزمية البحث A* باستخدام دالة الاستدلال الذكي مانهاتن في لغة بايثون. يتم عرض دالة `manhattan_heuristic` التي تحسب المسافة بين خليتين في متاهة بناءً على مجموع الفروق المطلقة في الإحداثيات.

يتم توضيح كيفية استخدام هذه الدالة في البحث غير الموزون، حيث يتم استدعاء `astar_maze_solver` مع معلمات مثل الخلية البداية والهدف والمتاهة، مما يؤدي إلى إيجاد المسار الأقصر وعدد الزيارات للخلايا.

كما يتم تقديم مثال للبحث الموزون، حيث يتم تعيين أوزان مختلفة للحركات الأفقية/العمودية والقطرية، مما يظهر كيفية تكييف الخوارزمية لسيناريوهات أكثر تعقيدًا. النتائج المطبوعة تشمل المسار والمسافة وعدد الزيارات، مما يعزز الفهم العملي للتطبيقات البرمجية.

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

يمكن تطبيق هذا بسهولة في صورة دالة البايثون كما يلي:--- SECTION: Manhattan Heuristic Function --- def manhattan_heuristic(candidate_cell:tuple, target_cell:tuple): x1,y1=candidate_cell x2,y2=target_cell return abs(x1 - x2) + abs(y1 - y2)يُستخدم المقطع البرمجي التالي لاختبار إمكانية استخدام هذا الاستدلال الذكي لدعم astar_maze_solver() في البحث بشكل أسرع في كل من الحالات الموزونة وغير الموزونة:--- SECTION: Unweighted A* Search Example --- start_cell=(14,0) target_cell=(5,10)solution_astar_unw_mn, distance_astar_unw_mn, cell_visits_astar_unw_mn=astar_maze_solver( start_cell, target_cell, big_maze, get_accessible_neighbors, manhattan_heuristic, verbose=False)print('\nA* Search unweighted with the Manhattan heuristic.') print('\nShortest Path:', solution_astar_unw_mn) print('Cells on the Shortest Path:', len(solution_astar_unw_mn)) print('Shortest Path Distance:', distance_astar_unw_mn) print('Number of cell visits:', cell_visits_astar_unw_mn)--- SECTION: Weighted A* Search Setup --- horz_vert_w=1 # weight for horizontal and vertical moves diag_w=3 # weight for diagonal moves--- SECTION: Weighted A* Search Example --- solution_astar_w_mn, distance_astar_w_mn, cell_visits_astar_w_mn=astar_maze_solver( start_cell, target_cell, big_maze, partial(get_accessible_neighbors_weighted, horizontal_vertical_weight=horz_vert_w, diagonal_weight=diag_w), manhattan_heuristic, verbose=False)print('\nA* Search weighted with the Manhattan heuristic.') print('\nShortest Path:', solution_astar_w_mn) print('Cells on the Shortest Path:', len(solution_astar_w_mn)) print('Shortest Path Distance:', distance_astar_w_mn) print('Number of cell visits:', cell_visits_astar_w_mn)2023 - 1447

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

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

ما هي الدالة البرمجية المسؤولة عن حساب المسافة مانهاتن (Manhattan distance)؟

الإجابة: الدالة هي `manhattan_heuristic(candidate_cell: tuple, target_cell: tuple)`.

الشرح: الدالة `manhattan_heuristic` معرفة بوضوح في بداية المقطع البرمجي وهي مصممة لحساب المسافة مانهاتن بين خليتين.

تلميح: ابحث عن اسم الدالة الذي يتطابق مع اسم الاستدلال المذكور في السياق.

ما هي صيغة حساب المسافة مانهاتن بين خليتين (x1, y1) و (x2, y2)؟

الإجابة: المسافة مانهاتن تُحسب بالصيغة: `abs(x1 - x2) + abs(y1 - y2)`.

الشرح: الدالة `manhattan_heuristic` تطبق هذه الصيغة مباشرة لحساب الفرق المطلق في الإحداثيات السينية والصادية وجمعهما.

تلميح: انظر إلى العمليات الحسابية داخل دالة `manhattan_heuristic`.

لأي خوارزمية بحث يُمكن استخدام دالة `manhattan_heuristic` لدعمها؟

الإجابة: يمكن استخدامها لدعم خوارزمية البحث A* (`astar_maze_solver`)، سواء في الحالات الموزونة أو غير الموزونة.

الشرح: المقطع البرمجي يوضح بوضوح كيف يتم تمرير `manhattan_heuristic` كوسيط لدالة `astar_maze_solver` سواء كانت البحث غير الموزون أو الموزون.

تلميح: ابحث عن اسم الخوارزمية التي يتم استدعاؤها في الأمثلة البرمجية.

في مثال البحث غير الموزون باستخدام A*، ما هي نقاط البداية والنهاية المحددة؟

الإجابة: نقطة البداية هي `(14,0)` ونقطة النهاية هي `(5,10)`.

الشرح: المتغيرات `start_cell` و `target_cell` تُعيّن صراحةً قبل استدعاء دالة `astar_maze_solver` في هذا الجزء من الكود.

تلميح: حدد الأسطر التي تُعرف فيها المتغيرات `start_cell` و `target_cell` في قسم 'Unweighted A* Search Example'.

ما هي الأوزان (weights) المستخدمة في مثال البحث الموزون (Weighted A* Search)؟

الإجابة: وزن الحركة الأفقية والرأسية (`horz_vert_w`) هو 1، ووزن الحركة القطرية (`diag_w`) هو 3.

الشرح: القسم 'Weighted A* Search Setup' يحدد هذه الأوزان بوضوح كقيم للمتغيرات `horz_vert_w` و `diag_w`.

تلميح: ابحث عن المتغيرات التي تُعرّف قيم الأوزان قبل استدعاء البحث الموزون.