כיצד אוכל להשתמש ב-BFS כדי למצוא את הנתיב הקצר ביותר?
כיצד אוכל להשתמש ב-BFS כדי למצוא את הנתיב הקצר ביותר?

וִידֵאוֹ: כיצד אוכל להשתמש ב-BFS כדי למצוא את הנתיב הקצר ביותר?

וִידֵאוֹ: כיצד אוכל להשתמש ב-BFS כדי למצוא את הנתיב הקצר ביותר?
וִידֵאוֹ: Shortest Path using BFS Algorithm | Unweighted Graph | BFS | DFS | GATE | DSA 2024, נוֹבֶמבֶּר
Anonim

ל למצוא ה הדרך הכי קצרה , כל שעליכם לעשות הוא להתחיל מהמקור ולבצע א רוחב ראשון לחפש ולעצור כאשר אתה למצוא צומת היעד שלך. הדבר הנוסף היחיד שאתה צריך לעשות הוא שיהיה לך מערך הקודם[n] אשר יאחסן את הצומת הקודם עבור כל צומת שביקר בו. הקודם של המקור יכול להיות null.

נשאל גם, מדוע BFS מוצא את הדרך הקצרה ביותר?

אנחנו אומרים את זה BFS הוא ה אלגוריתם לשימוש אם נרצה בכך למצוא את הדרך הקצרה ביותר בגרף לא מכוון ולא משוקלל. התביעה עבור BFS הוא שבפעם הראשונה שצומת מתגלה במהלך המעבר, המרחק הזה מהמקור היה תן לנו את הדרך הכי קצרה . לא ניתן לומר את אותו הדבר לגבי גרף משוקלל.

יודע גם, איפה השביל הקצר ביותר במבוך? מצא את הדרך הקצרה ביותר במבוך

  1. עלה למעלה: (x, y) –> (x – 1, y)
  2. עבור שמאלה: (x, y) –> (x, y – 1)
  3. ירידה למטה: (x, y) –> (x + 1, y)
  4. עבור ימינה: (x, y) –> (x, y + 1)

כמו כן כדי לדעת, האם אנו יכולים להשתמש ב- DFS כדי למצוא את הנתיב הקצר ביותר?

לא, אתה לא יכול השתמש ב-DFS כדי למצוא את הנתיב הקצר ביותר בגרף לא משוקלל. זה לא המצב ש, מִמצָא ה הדרך הכי קצרה בין שני צמתים פותרים באופן בלעדי על ידי BFS. בגרף לא משוקלל ה הדרך הכי קצרה הם המספר הקטן ביותר של קצוות שיש לעבור מצמתי מקור ליעד.

מהו זמן הריצה של BFS?

מורכבות של חיפוש רוחב ראשון חיפוש רוחב ראשון יש זמן ריצה של O (V + E) O(V + E) O(V+E) שכן כל קודקוד וכל קצה ייבדקו פעם אחת. בהתאם לקלט לגרף, O (E) O(E) O(E) יכול להיות בין O (1) O(1) O(1) ל-O (V 2) O(V^2) O(V2).

מוּמלָץ: