איך מבצעים את אלגוריתם דייקסטרא (Dijkstra)

איך מבצעים את אלגוריתם דייקסטרא (Dijkstra)

בחיים היומיומיים שלנו אנחנו לא שמים לב לכמות הפעמים בה אנחנו משתמשים באלגוריתם של דייקסטרא: בג'י פי אס שלנו, הראוטר במחשב שלנו או סתם מהליכה מנקודה א' לנקודה ב'. דייקסרא מאפשר לנו למצוא את המסלול הקצר ביותר מנקודה אחת לכל הנקודות בגרף. הוא עובד רק על גרפים מכוונים ובעלי משקל אי שלילי (בכדי לעבוד עם גרפים בעלי משקל שלילי יש להשתמש באלגוריתם של בלמן פורד).

Medium 492 views

What You'll Need

  • אלגוריתמים
  • דיאקסטרא
  • אלגוריתם של דיאקסטרא
  • דייקסטרא

Steps

  1. 1

    Step 1

    Step 1
    אז יש לנו גרף מכוון, ממושקל ומגניב המתחיל מקודקוד S. נכתוב ליד הגרף שלנו את רשימת כל הקודקודים לפני שאנחנו מריצים את דייקסטרא.
  2. 2

    Step 2

    Step 2
    נאתחל את כל המשקלים על הקודקודים שלנו לאינסוף (מלבד הקודקוד S) יופי, אז אפשר להתחיל.
  3. 3

    Step 3

    Step 3
    נבחר קשת היוצאת מS, כרגע לא משנה איזה, אני בחרתי במקרה בקשת בין S לb. נבדוק האם משקל הקשת קטן ממשקל הקודקוד b. אכן, 5 קטן יותר מאינסוף ולכן נחליף את משקל הקודקוד של b ל5.
  4. 4

    Step 4

    Step 4
    נבחר את הקשת הבאה היוצאת מS, הקשת מS לa. נבדוק האם משקל הקשת קטן ממשקל הקודקוד a. אכן, 8 קטן יותר מאינסוף ולכן נחליף את משקל הקודקוד של a ל8.
  5. 5

    Step 5

    Step 5
    לאחר שסיימנו לעבור על כל הקשתות היוצאות מS , נמחק אותו מהרשימה שלנו בכדי לדעת שעברנו עליו ושאי אפשר לגשת אליו יותר. נעבור עכשיו לקודקוד ההבא בגרף הקרוב לS ובעל המשקל הנמוך ביותר - במקרה שלנו b ונבחן את קשתותיו. נסתכל על הקשת מb לa ונבדוק האם משקל הקודקוד b + משקל הקשת בין b לa קטן ממשקל הקודקוד a. אם כן, נחליף את משקל הקודקוד a. ואכן במקרה שלנו 5+2<8 ונחליף את משקל הקודקוד a ב7
  6. 6

    Step 6

    Step 6
    נעבור לקשת הבאה היוצאת מb - הקשת מb לc ונשאל את אותה שאלה: האם משקל הקודקוד b + משקל הקשת בין b לc קטן ממשקל הקודקוד c. אכן, 5+8 < אינסוף ולכן נחליף את משקל קודקוד c ב13.
  7. 7

    Step 7

    Step 7
    נעבור לקשת הבאה היוצאת מb - הקשת מb לd. ונבדוק: האם משקל הקודקוד b + משקל הקשת בין b לd קטן ממשקל הקודקוד d. אכן 5+4< אינסוף ולכן נחליף את משקל קודקוד d ב9 הערה:שימו לב שכל פעם שאנחנו בוחנים את הקודקוד הבא אנו צריכים לבדוק שאינו מחוק מהרשימה שלנו.
  8. 8

    Step 8

    Step 8
    עכשיו שסיימנו עם כל הקשתות היוצאות מקודקוד b, נמחק אותו מהרשימה בכדי שלא ניגש אליו שוב. יופי, כעת נבחר את הקודקוד הקרוב b ובעל המשקל הנמוך ביותר ונחזור על התהליך. הקודקוד הקרוב ביותר לb ובעל המשקל הנמוך ביותר הוא a. לא נתמקד בקשת מa לb מכיוון שb מחוק מהרשימה שלנו ונעבור ישר לקשת מa לc. נבדוק: האם משקל הקודקוד a + משקל הקשת בין a לc קטן ממשקל הקודקוד c. אכן 7+1<13 ונחליף את משקל הקודקוד של c ל8.
  9. 9

    Step 9

    Step 9
    סיימנו עם a אז נמחק אותו מהרשימה ונעבור לקודקוד הבא הקרוב לa בעל המשקל הנמוך ביותר ושאינו מחוק מהרשימה - במקרה שלנו זהו קודקוד c. שימו לב מה קורה עכשיו, הקודקוד הקרוב לc שאינו מחוק מהרשימה הוא d וכפי שניתן לראות משקל הקודקוד של c + משקל הקשת בין c לd גדול ממשקל קודקוד d. לכן, פשוט לא נעשה שום דבר ונמחק את c מהרשימה.
  10. 10

    Step 10

    Step 10
    נעבור לקודקוד האחרון ברשימה, קודקוד d. וגם כאן ניתן לראות שיש מבוי סתום, אין קודקודים הקרובים אליו שאינם מחוקים מהרשימה ולכן גם אותו נמחק מהרשימה. זהו, ראיתם איך אלגוריתם דייקסטרא עובד ויש בידכם את המסלול הקצר ביותר מקודקוד אחד לכל הקודקודים.

Related Guides

איך לאזן עץ AVL (מבנה נתונים)

איך לאזן עץ AVL (מבנה נתונים)

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

Hard 3K views
איך ללמוד הוכחות במתמטיקה

איך ללמוד הוכחות במתמטיקה

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

Medium 2K views

How to put together a class schedule

How to choose courses and how to choose a schedule

Easy 1K views
איך לכתוב ביטויים וסימנים מתמטיים במחשב (ווינדוס 7)

איך לכתוב ביטויים וסימנים מתמטיים במחשב (ווינדוס 7)

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

Easy 1K views

איך להצליח בלימודים

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

Easy 1K views
How to Make Paper Polyhedra: Easy DIY Geometric Shapes Tutorial

How to Make Paper Polyhedra: Easy DIY Geometric Shapes Tutorial

Learn to create stunning 3D geometric shapes from paper. This guide covers materials, step-by-step instructions, and educational insights into polyhedra.

Easy 11K views