📄 النص الكامل للصفحة
--- 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.
تلميح: فكر في كيفية تخزين علاقات الارتباط بين العقد.