מבני נתונים ואלגוריתמים - מחברת קורס/גרפים/מסלולים זולים לכלל הזוגות
מתוך ויקיספר, אוסף ספרי הלימוד והמדריכים החופשי.
דף זה הוא הראשון מבין שלושה דפים העוסקים באלגוריתמים למציאת המסלול הזול ביותר בגרף מכוון בין כל שני צמתים.
|
כדאי לדעת:
|
[עריכה] הבעיה
נתונים גרף מכוון
וטבלת עלויות לקשתות
. בהינתן צמתים
, רוצים למצוא את המסלול הזול ביותר מ
ל
.
|
שימו לב: בדף זה לא נעסוק במחירי קשתות שאינם חיוביים. |
|
דוגמה: בגרף בתרשים הבא, המספר המצויין על כל קשת הוא עלות הקשת.
|
[עריכה] הקלט
כפי שנאמר מקודם, נניח שמחירי הקשתות נתונות ע"י טבלת עלויות. בד"כ אנו מניחים שזה נעשה על ידי טבלת ערבול על הקשתות, אך כאן נניח משהו שונה במקצת. נניח שEdge-Costs היא מטריצה שלה כניסהEdge-Costs[u][v] לכל שני צמתים (כלומר, אף פעם לא מוחזר הערך Nil, כבטבלת ערבול). הערך Edge-Costs[u][v], הנו:
- 0, אם
. - מחיר הקשת מ
uלv, אם יש קשת כזו.
, אם אין קשת כזו, ו
.
|
דוגמה: בתרשים הבא, A מראה שוב את הגרף שראינו לעיל. B מראה קשתות ש"נוספו" בגלל 3, וC קשתות ש"נוספו" בגלל 2. |
קל לראות שהתוספות הנ"ל אינן משנות דבר משמעותי:
|
משפט: אין הבדל בין מחירי המסלולים הזולים ביותר בגרף המקורי לאלה שבגרף ה"מוסף". |
[עריכה] הרעיון הכללי
|
כדאי לדעת: כל האלגוריתמים (שאותם נלמד) למציאת מסלולים זולים לכלל הזוגות מתבססים על אותו הרעיון.
|
| הפרק הקודם: אלגוריתם Dijkstra |
מסלולים זולים לכלל הזוגות תרגילים |
הפרק הבא: אלגוריתם "הכפלת מטריצות" |

ל
, לדוגמה, הוא
, ועלותו 2.
, לדוגמה, הוא
, ועלותו 11.
.