אלגוריתם חיפוש לעומק – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
SieBot (שיחה | תרומות)
מ בוט משנה: bar:Diafnsuach
Noon (שיחה | תרומות)
שורה 7:
דרך הפעולה שמנחה את החיפוש לעומק היא [[רקורסיה|רקורסיבית]]. בצורה פורמלית, אלגוריתם חיפוש לעומק בודק את הצומת עליו הוא הופעל, ולאחר מכן מפעיל את עצמו רקורסיבית על כל אחד מהצמתים שמקושרים לצומת אליו הוא הופעל, אם הוא טרם ביקר בהם. על מנת לזכור באילו צמתים האלגוריתם כבר ביקר, יש לסמן אותם בדרך כלשהי (ניתן לעשות זאת, למשל, באמצעות טבלה).
 
מימוש אחר של חיפוש לעומק אינו מסמן את הצמתים אותם הרחיב, ומרחיב בן יחיד בכל פעם, היתרון במימוש זה הוא ש[[סיבוכיות מקום|סיבוכיות המקום]] של האלגוריתם נמוכה יותר, <math>\ O(d)</math> לעומת <math>\ O(V)</math> במימוש הקודם, כאשר d הוא העומק המקסימלי של הגרף, וVו-V הוא מספר הקודקודים בגרף. החסרון במימוש זה הוא שאם ישנם מעגלים בגרף, החיפוש עלול שלא להסתיים. פתרון לבעיה זאת נמצאה בגישה האיטרטיבית לחיפוש לעומק (Iterative deepening depth-first search), בגישה זאתשבה החיפוש לעומק מתבצע כל פעם עד עומק קבוע מראש, כאשר אם לא נמצאה התשובה מגדילים את עומק החיפוש.
 
==שימושים==