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