מבני נתונים ואלגוריתמים - מחברת קורס/גרפים/אלגוריתמי זרימה
מתוך ויקיספר, אוסף ספרי הלימוד והמדריכים החופשי.
דף זו הוא השלישי משלשה העוסק באלגוריתמים למציאת זרימת המקסימום בגרף מכוון המתאר "רשת צינורות". בדפים הקודמים מצאנו תנאים (מספיקים והכרחיים) למציאת זרימה מקסימלית. בדף זה נעסוק בשיטות ואלגוריתמים המשתמשים בתנאים אלה כדי למצוא זרימה מקסימלית.
|
כדאי לדעת: נחלק את החומר שנלמד בזרימה לשלשה חלקים:
|
|
כדאי לדעת:
|
[עריכה] שיטת Ford-Fulkerson
שיטת Ford-Fulkerson מתבססת על הרעיונות הבאים:
- מסלולים משפרים מאפשרים למעשה לקבוע את זרימת המקסימום:
- ראינו בגודל זרימה ומסלולים משפרים שכל עוד מוצאים מסלול משפר בגרף הרשת השיורית, אפשר לשפר את הזרימה.
- ראינו בזרימה וחתכי S-T שאם אי אפשר למצוא מסלול משפר בגרף הרשת השיורית, אי אפשר לשפר את הזרימה.
- קל לבנות את הרשת השיורית ולמצוא מסלול בה (או לחלופין, להיווכח שאין מסלול כזה). אם כי לא נתעמק בזאת, לא קשה לראות שאפשר לעשות זאת בסיבוכיות
.שתי נקודות אלו מובילות לרעיון הבא, הידוע כשיטת Ford -Fulkerson:
|
הגדרה: שיטת Ford-Fulkerson בהינתן רשת הזרימה:
|
|
כדאי לדעת: בקורס נלמד מספר אלגוריתמים (ודמויי אלגוריתמים) למציאת זרימה מקסימלית בעזרת מציאת מסלול משפר ברשת השיורית.
על כך יותר בספר הקורס בפרק "Maximum Flow" (תתי-פרקים 4-5). |
[עריכה] אלגוריתם Ford-Fulkerson
אלגוריתם Ford-Fulkerson הוא פחות-או-יותר שיטת Ford-Fulkerson בהקשר רשתות זרימה שבהן הקיבולים הם מספרים שלמים:
|
הגדרה: (אלגוריתם Ford-Fulkerson) בהינתן רשת הזרימה:
|
בניגוד למקרה הכללי, כאן (כשהקיבולים הם מספירם שלמים), קל-יחסית להראות שהאלגוריתם אכן עובד, ולנתח את סיבוכיותו:
|
משפט: נניח שברשת הזרימה, גודל זרימת המקסימום הוא |
הוכחה: היות שהקיבולים שלמים, אם יש מסלול שיפור ברשת השיורית, גודל הזרימה יגדל ב1 (לפחות). היות שגודל זרימת המקסימום הוא
(על פי הגדרתנו), אז לאחר
שיפורים, נגיע בהכרח לזרימת מקסימום. זה מראה שהאלגוריתם עובד. הזכרנו מקודם שמציאת מסלול שיפור אורכת
, ומכאן הסיבוכיות.
[עריכה] אלגוריתם Edmonds-Karp
אלגוריתם Edmonds-Karp הוא פחות-או-יותר שיטת Ford-Fulkerson, אך תוך ציון כיצד יש לבחור מסלול שיפור בגרף הרשת השיורית:
|
הגדרה: (אלגוריתם Edmonds-Karp) בהינתן רשת הזרימה:
|
|
שימו לב: בניגוד לאלגוריתם Ford-Fulkerson, אלגוריתם זה עובד גם על רשתות זרימה שקיבוליהן אינן מספרים שלמים. |
|
משפט: אלגוריתם Edmonds-Karp עובד בזמן |
להלן "הוכחת נפנופי-ידיים":
הוכחה: אם בוחרים בכל פעם את המסלול הקצר ביותר כמסלול השיפור בגרף הרשת השיורית (בלי קשר לצורה בה זה נעשה), אפשר להראות שיש לכל היותר
שיפורים סה"כ. מצד שני, בלי קשר למספר השיפורים, אפשר להראות שבניית גרף הרשת השיורית, והרצת BFS עליו - אורכות
זמן. הסיבוכיות נובעת משילוב שתי הנקודות.
| הפרק הקודם: זרימה שיורית וחתכים |
אלגוריתמי זרימה תרגילים |
הפרק הבא: נספחים |

.
.