منهجية البحث بأولوية الاتساع (BFS) - كتاب الذكاء الإصطناعي - الصف 12 - الفصل 1 - المملكة العربية السعودية

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

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

الدرس: منهجية البحث بأولوية الاتساع (BFS) وحل المتاهة

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

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

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

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

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

📝 ملخص الصفحة

تشرح هذه الصفحة منهجية البحث بأولوية الاتساع (BFS) كخوارزمية تستخدم للبحث في المساحات أو المتاهات، حيث تفحص جميع الخيارات في العمق الحالي قبل الانتقال إلى المستوى التالي. تستخدم الخوارزمية مجموعات وقوائم مثل `visited` و `to_expand` لتتبع الخلايا التي تم فحصها وتلك التي تحتاج إلى توسيع، مع استخدام قاموسين `shortest_distance` و `parent` لحفظ طول المسار الأقصر والعقد الأصلية.

يتضمن المحتوى مثالاً تطبيقياً لحل متاهة صغيرة 3x3 باستخدام دالة `bfs_maze_solver()`، حيث يتم تحديد خلية البداية والهدف وتنفيذ الخوارزمية خطوة بخطوة. تُظهر النتائج المسار الأقصر وعدد الخلايا والمسافة وعدد الزيارات، مما يوضح كيفية عمل BFS في الممارسة العملية.

يُعد هذا الدرس جزءاً من تعلم الخوارزميات والبرمجة، مع التركيز على تطبيقات BFS في حل المشكلات مثل المتاهات، مما يساعد الطلاب على فهم مفاهيم البحث والمسارات في علوم الحاسب.

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

تتبع الدالة منهجية البحث بأولوية الاتساع (BFS) للبحث في كل الخيارات في العمق الحالي قبل الانتقال إلى مستوى العمق التالي. وتستخدم هذه المنهجية مجموعة واحدة تسمى visited وقائمة تسمى to_expand. تتضمن المجموعة الأولى كل الخلايا التي فحصت مرة واحدة على الأقل من قبل الخوارزمية، بينما تتضمن القائمة الثانية كل الخلايا التي لم توسع بعد، مما يعني أن الخلايا المجاورة لم تفحص بعد. تُستخدم الخوارزمية كذلك قاموسين shortest_distance و parent، يحفظ الأول منهما طول المسار الأقصر من خلية البداية إلى كل خلية أخرى، بينما يحفظ الثاني عقدة الخلية الأصل في المسار الأقصر. بمجرد الوصول إلى الخلية الهدف وانتهاء البحث، سيخزن المتغير shortest_distance[target_cell] طول الحل والذي يمثل طول المسار الأقصر من البداية إلى الهدف. يستخدم المقطع البرمجي التالي دالة bfs_maze_solver() لحل المتاهة الصغيرة 3x3 الموضحة بالأعلى:start_cell=(2,0) # start cell, marked by a star in the 3x3 maze target_cell=(1,2) # target cell, marked by an "X" in the 3x3 maze solution, distance, cell_visits=bfs_maze_solver(start_cell, target_cell, small_maze, get_accessible_neighbors, verbose=True)print('\nShortest Path:', solution) print('Cells on the Shortest Path:', len(solution)) print('Shortest Path Distance:', distance) print('Number of cell visits:', cell_visits)Expanding cell (2, 0) Visiting neighbor cell (1, 0)Expanding cell (1, 0) Visiting neighbor cell (0, 0) Visiting neighbor cell (0, 1) Visiting neighbor cell (2, 0)Expanding cell (0, 0) Visiting neighbor cell (0, 1) Visiting neighbor cell (1, 0)Expanding cell (0, 1) Visiting neighbor cell (0, 0) Visiting neighbor cell (0, 2) Visiting neighbor cell (1, 0) Visiting neighbor cell (1, 2)Shortest Path: [(2, 0), (1, 0), (0, 1), (1, 2)] Cells on the Shortest Path: 4 Shortest Path Distance: 3 Number of cell visits: 102023 - 1447

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

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

ما هي المنهجية التي تتبعها الدالة `bfs_maze_solver()` للبحث في خيارات المتاهة؟

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

الشرح: البحث بأولوية الاتساع (BFS) يضمن استكشاف جميع المسارات الممكنة على نفس المسافة من نقطة البداية قبل التقدم إلى المسارات الأطول، مما يساعد في إيجاد أقصر مسار.

تلميح: فكر في كيفية استكشاف الخيارات في المستويات المتتالية، حيث يتم فحص كل الاحتمالات في المستوى الحالي قبل الانتقال للمستوى التالي.

ما هو الدور الذي تلعبه المجموعة `visited` في خوارزمية البحث بأولوية الاتساع (BFS)؟

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

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

تلميح: ما هي الفائدة من تذكر الخلايا التي تم زيارتها بالفعل لتجنب العمل المكرر؟

ما هي وظيفة القائمة `to_expand` في خوارزمية البحث بأولوية الاتساع (BFS)؟

الإجابة: تحتوي القائمة `to_expand` على الخلايا التي لم يتم توسيعها بعد، مما يعني أن الخلايا المجاورة لها لم يتم فحصها بعد.

الشرح: تمثل قائمة `to_expand` طابور الانتظار للخلايا التي يجب استكشاف جيرانها. هذا يضمن اتباع ترتيب مستوى بمستوى في عملية البحث.

تلميح: إذا كانت `visited` تتتبع ما تم فحصه، فما الذي تتتبعه `to_expand` لتحديد الخطوة التالية؟

ماذا يخزن القاموس `shortest_distance` في خوارزمية BFS؟

الإجابة: يخزن القاموس `shortest_distance` طول المسار الأقصر من خلية البداية إلى كل خلية أخرى تم الوصول إليها.

الشرح: يُستخدم `shortest_distance` لتتبع المسافة الأقل من نقطة البداية إلى أي خلية، مما يسمح بتحديد طول أقصر مسار إلى الخلية الهدف عند اكتمال البحث.

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

ماذا يمثل المتغير `distance` بعد انتهاء دالة `bfs_maze_solver()`؟

الإجابة: يمثل المتغير `distance` طول الحل، وهو طول المسار الأقصر من خلية البداية إلى الخلية الهدف.

الشرح: بعد أن تجد الخوارزمية المسار الأقصر إلى الهدف، فإن قيمة `distance` توفر القياس المباشر لطول هذا المسار.

تلميح: بمجرد أن تجد الحل (المسار الأقصر)، ما هي المعلومة الرئيسية التي تريد الحصول عليها من هذا الحل؟