האלגוריתם של ג'ונסון

אלגוריתם ג'ונסון מוצא את הדרך הכי קצרה בין כל שתי נקודות בגרף. גרף הוא אוסף נקודות וקווים עם משקל.

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

המטרה היא: להוסיף נקודה חדשה s שמחוברת לכל הנקודות בקווים שמשקלם 0, להריץ בלמן‑פורד מ‑s ולקבל מספרים h לכל נקודה. משתמשים ב‑h כדי לשנות את המשקלים כך שיהיו לא שליליים. אחרי זה מריצים דייקסטרה מכל נקודה ומוצאים את כל הדרכים הקצרות.

בלמן‑פורד פועל רק פעם אחת. דייקסטרה רץ פעם על כל נקודה. כשיש מעט קווים בגרף, השיטה של ג'ונסון בדרך כלל מהירה יותר משיטות אחרות כמו פלויד‑וורשאל.

תגובות גולשים

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

עדיין אין תגובות. היה הראשון להגיב!