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

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

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

الدرس: تنفيذ خوارزمية البحث بأولوية العمق (DFS) في لغة البايثون

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

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

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

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

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

📝 ملخص الصفحة

تشرح هذه الصفحة خطوات تنفيذ خوارزمية البحث بأولوية العمق (DFS) باستخدام الرسوم البيانية والمكدس في لغة البايثون. يبدأ المحتوى بمعالجة العقد B وC وF وإضافتها إلى المكدس، ثم يتوقف الخوارزمية عندما يصبح المكدس فارغاً.

يتم تقديم مثال عملي برمز بايثون يوضح كيفية تعريف رسم بياني واستدعاء دالة DFS لزيارة العقد بالترتيب A, B, D, E, C, F. يستخدم الكود مكدس التشغيل (Runtime Stack) بشكل غير مباشر لتتبع الاستدعاءات التكرارية.

تتضمن الصفحة أربعة رسوم توضيحية تشرح الخطوات من 5 إلى 8 للخوارزمية، حيث تُظهر إزالة العقدة B، ثم إضافة العقدتين C وF، وأخيراً إفراغ المكدس عند اكتمال التنفيذ. هذه الخطوات تساعد في فهم كيفية استكشاف الرسوم البيانية بعمق أولاً.

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

--- SECTION: 5 --- احذف العقدة B.--- SECTION: 6 --- عالج العقدة C ثم أضفها إلى المكدس.--- SECTION: 7 --- عالج العقدة F ثم أضفها إلى المكدس.--- SECTION: 8 --- المكدس خالي وبالتالي ستتوقف خوارزمية البحث بأولوية العمق (DFS).والآن سنتعلم طريقة تنفيذ خوارزمية البحث بأولوية العمق (DFS) في لغة البايثون.العقد التي فحصت باستخدام خوارزمية البحث بأولوية العمق (DFS) هي F, C, E, D, B, A.graph = { "A" : ["B", "C"], "B" : ["D", "E"], "C" : ["F"], "D" : [], "E" : [], "F" : [] }visitedDFS = [] # list to keep track of visited nodes# dfs function def dfs(visited, graph, node): if node not in visited: print(node, end = " ") visited.append(node) for neighbor in graph[node]: dfs(visited, graph, neighbor)# main program dfs(visitedDFS, graph, "A")يستخدم المكدس بصورة غير مباشرة عبر مكدس أثناء التشغيل (Runtime Stack) لتتبع الاستدعاءات التكرارية.A B D E C F2023 - 1447--- VISUAL CONTEXT --- **DIAGRAM**: خطوات تنفيذ خوارزمية البحث بأولوية العمق (DFS) - الخطوة 5 Description: Diagram illustrating step 5 of the Depth-First Search algorithm. It shows a graph with nodes A, B, C, D, E, F. Node B is highlighted, indicating it is being processed or removed. The accompanying stack diagram shows a stack initially containing 'A' at the bottom and 'B' on top. An arrow indicates 'B' is being popped from the stack, resulting in a stack containing only 'A'. Data: Graph nodes: A (root), B, C (children of A), D, E (children of B), F (child of C). Stack state changes from [A, B] to [A] after B is removed. Key Values: Node B removed, Stack: A Context: Demonstrates the removal of a node from the stack after its subtree has been fully explored in DFS.**DIAGRAM**: خطوات تنفيذ خوارزمية البحث بأولوية العمق (DFS) - الخطوة 6 Description: Diagram illustrating step 6 of the Depth-First Search algorithm. It shows a graph with nodes A, B, C, D, E, F. Node C is highlighted, indicating it is being processed or added. The accompanying stack diagram shows a stack initially containing 'A' at the bottom. An arrow indicates 'C' is being pushed onto the stack, resulting in a stack containing 'A' at the bottom and 'C' on top. Data: Graph nodes: A (root), B, C (children of A), D, E (children of B), F (child of C). Stack state changes from [A] to [A, C] after C is added. Key Values: Node C added, Stack: A, C Context: Demonstrates adding a new unvisited node (C) to the stack during DFS traversal.**DIAGRAM**: خطوات تنفيذ خوارزمية البحث بأولوية العمق (DFS) - الخطوة 7 Description: Diagram illustrating step 7 of the Depth-First Search algorithm. It shows a graph with nodes A, B, C, D, E, F. Node F is highlighted, indicating it is being processed or added. The accompanying stack diagram shows a stack initially containing 'A' at the bottom and 'C' on top. An arrow indicates 'F' is being pushed onto the stack, resulting in a stack containing 'A', 'C', and 'F' on top. Data: Graph nodes: A (root), B, C (children of A), D, E (children of B), F (child of C). Stack state changes from [A, C] to [A, C, F] after F is added. Key Values: Node F added, Stack: A, C, F Context: Demonstrates adding a new unvisited node (F) to the stack as DFS continues deeper into the graph.**DIAGRAM**: خطوات تنفيذ خوارزمية البحث بأولوية العمق (DFS) - الخطوة 8 Description: Diagram illustrating step 8 of the Depth-First Search algorithm. It shows the same graph structure. The accompanying stack diagram shows a stack initially containing 'A', 'C', 'F'. Arrows indicate 'F', 'C', and 'A' are being popped sequentially from the stack, resulting in an empty stack. Data: Graph nodes: A (root), B, C (children of A), D, E (children of B), F (child of C). Stack state changes from [A, C, F] to empty [] as all nodes are processed and popped. Key Values: Stack becomes empty, DFS traversal complete Context: Demonstrates the completion of the DFS algorithm when the stack becomes empty, indicating all reachable nodes have been visited.

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

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

ما هي آلية عمل خوارزمية البحث بأولوية العمق (DFS) عند معالجة عقدة؟

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

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

تلميح: فكر في العملية التي تحدث عندما تصل الخوارزمية إلى نقطة جديدة في الرسم البياني.

كيف تتبع خوارزمية البحث بأولوية العمق (DFS) مسارها عند استخدام لغة بايثون؟

الإجابة: تستخدم خوارزمية البحث بأولوية العمق (DFS) المكدس (Stack) بصورة غير مباشرة عبر مكدس التشغيل (Runtime Stack) لتتبع الاستدعاءات التكرارية، مما يساعدها على تذكر المسارات التي يجب العودة إليها.

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

تلميح: ما هي البنية البيانية التي تسمح بالوصول إلى آخر عنصر تم إضافته أولاً؟

اذكر العقد التي تم فحصها بالترتيب وفقًا لخوارزمية البحث بأولوية العمق (DFS) الموضحة في النص (بدءًا من العقدة A).

الإجابة: A, B, D, E, C, F

الشرح: الخوارزمية تبدأ من A، ثم تستكشف B، ثم D (لا يوجد لها أبناء)، ثم E (لا يوجد لها أبناء)، ثم تعود إلى B (لا يوجد لها أبناء آخرون)، ثم تعود إلى A، وتستكشف C، ثم F (لا يوجد لها أبناء).

تلميح: تتبع التسلسل الظاهر في نص الإخراج من البرنامج أو وصف الخوارزمية.

ماذا يحدث عندما يصبح المكدس خاليًا أثناء تنفيذ خوارزمية البحث بأولوية العمق (DFS)؟

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

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

تلميح: ما هي الحالة التي تدل على أن جميع المسارات الممكنة قد تم استكشافها؟

كيف يمكن تمثيل الرسم البياني في لغة بايثون لتطبيق خوارزمية البحث بأولوية العمق (DFS)؟

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

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

تلميح: فكر في كيفية تخزين علاقات الارتباط بين العقد.