260 likes | 719 Views
אלגוריתמים נבחרים בתורת הגרפים. זרימה ברשתות. זרימה ברשתות. רשת זרימה: גרף מכוון סופי G=(V, E) (לשם נוחות נניח ש- G ללא לולאות או קשתות מקבילות) . שני קודקודים s (מקור) ו- t (בור). פונקצית קיבול: C: E → Z +
E N D
אלגוריתמים נבחרים בתורת הגרפים זרימה ברשתות
זרימה ברשתות • רשת זרימה: • גרף מכוון סופי G=(V, E)(לשם נוחות נניח ש- G ללא לולאות או קשתות מקבילות). • שני קודקודיםs (מקור) ו- t (בור). • פונקצית קיבול:C: E → Z+ • לכל קשת מותאם מספר שלם אי-שלילי המציין את קיבול הקשת – מהי הזרימה המקסימלית שניתן להעביר דרך הקשת.
זרימה ברשתות הבעיה:מציאת פונקצית זרימהf : f: E → R+המקיימת: 1. 0≤f(e)≤c(e) 2. לכל קודקוד מלבד s ו – t: הזרימה הנכנסת לצומת = הזרימה היוצאת ממנה אם α(v) קבוצת הקשתות הנכנסות ל- v ו- β(v) קבוצת הקשתות היוצאת מ- v 3. מיקסום F – הזרימה הכוללת:
האלגוריתם שלFord and Fulkersonלמציאת זרימה מקסימלית ברשת תיאור אינטואיטיבי: 1. מוצאים מסלול כלשהו ממקור ליעד אשר דרכו ניתן להעביר זרימה. מסמנים את הצמתים המשתתפים במסלול. 2. בוחרים במסלול זה קשת אשר קיבולה מינימלי ומעבירים במסלול זה זרימה כגודל קיבול מינימלי זה. 3. אם בכל מסלול אפשרי מהמקור ליעד יש לפחות קשת רוויה*אחת – הפסק, אחרת חזור ל-1. *קשת רוויה - קשת שעבורה פונקצית הזרימה שווה לקיבול הקשת.
האלגוריתם שלFord and Fulkersonלמציאת זרימה מקסימלית ברשת חקרו את פעולת האלגוריתם באמצעות האפלט הבא: http://www-b2.is.tokushima-u.ac.jp/~ikeda/suuri/maxflow/Maxflow.shtml
האלגוריתם שלFord and Fulkersonלמציאת זרימה מקסימלית ברשת • לכל קשת (x,y) אתחל: f(x,y) = 0 f(y,x) = 0 • מצא זרימה התחלתית f כלשהי ממקור s לבור t . • כל עוד קיים מסלול משפר p מהמקור s לבור t והשיפור שניתן להשיג הוא C(p): לכל קשת (x,y) במסלול המשפרp : f(x,y) = f(x,y) + C(p) f(y,x) = f(y,x) - C(p)
דוגמא – מצאו זרימה מקסימלית סימון על הקשתות:c(e), f(e) 12, 0 A B e3 15, 0 e5 7, 0 e4 e1 e7 3, 0 5, 0 s t e2 e8 4, 0 10, 0 e6 C D 10, 0
דוגמא – מצאו זרימה מקסימלית סימון על הקשתות:c(e), f(e) המסלול:s-C-D-A-B-t, הגדלת הזרימה ב- 4 יחידות. 12, 4 A B e3 15, 0 e5 7, 4 e4 e1 e7 3, 0 5, 4 s t e2 e8 4, 4 10, 0 e6 C D 10, 4
דוגמא – מצאו זרימה מקסימלית סימון על הקשתות:c(e), f(e) המסלול:s-A-B-C-D-t, הגדלת הזרימה ב- 3 יחידות. 12, 7 A B e3 15, 3 e5 7, 4 e4 e1 e7 3, 3 5, 4 s t e2 e8 4, 4 10, 3 e6 C D 10, 7
דוגמא – מצאו זרימה מקסימלית סימון על הקשתות:c(e), f(e) המסלול:s-A-B-t, הגדלת הזרימה ב- 3 יחידות. 12, 10 A B e3 15, 6 e5 7, 7 e4 e1 e7 3, 3 5, 4 s t e2 e8 4, 4 10, 3 e6 C D 10, 7
דוגמא – מצאו זרימה מקסימלית סימון על הקשתות:c(e), f(e) המסלול:s-A-D-t, הגדלת הזרימה ב- 4 יחידות. (שימו לב ל- .(e4 12, 10 A B e3 15, 10 e5 7, 7 e4 e1 e7 3, 3 5, 0 s t e2 e8 4, 4 10, 7 e6 C D 10, 7
דוגמא – מצאו זרימה מקסימלית סימון על הקשתות:c(e), f(e) לא ניתן למצוא מסלולים המגדילים את הזרימה. הזרימה = 14. 12, 10 A B e3 15, 10 e5 7, 7 e4 e1 e7 3, 3 5, 0 s t e2 e8 4, 4 10, 7 e6 C D 10, 7
חתך חתך : קבוצת כל הצלעות בעלות זנב ב- S וראש ב- . חתך המפריד את s מ- t: קיבולת חתך המפריד את s מ- t : bij קבולת קשתvi-vj כאשרvi ב-X ו- vj ב- .
דוגמא – מצאו חתך מינימלי 12, 0 A B e3 15, 0 e5 7, 0 e4 e1 e7 3, 0 5, 0 s t e2 e8 4, 0 10, 0 e6 C D 10, 0
דוגמא – חתך מינימלי 12, 0 A B e3 15, 0 e5 7, 0 e4 e1 e7 3, 0 5, 0 s t e2 e8 4, 0 10, 0 e6 C D 10, 0
דוגמא – בגרף הבא מופיעה זרימה מקסימלית.מהי קבולת החתך המינימלי המצוייר? 12, 10 A B e3 15, 10 e5 7, 7 e4 e1 e7 3, 3 5, 0 s t e2 e8 4, 4 10, 7 e6 C D 10, 7
משפט בכל רשת: ערך הזרימה המקסימלית שווה לקיבולת החתך המינימלי.
מקורות נוספים http://www.cs.princeton.edu/courses/archive/spring03/cs226/lectures/flow.4up.pdf http://engr.smu.edu/~olinick/emis8374/lectures/maxflow/1
שימושים • PERT – תכנון מהלך עבודה • תקשורת – העברת נתונים ברשת • הקמת וועדות עם אילוצים שונים: • הקמת וועדת נציגים שחבריה הם ראשי וועדות אחרות. • לכל וועדה יש בדיוק נציג אחד בוועדת הנציגים; • בוועדת הנציגים כל חבר/ה יכול/ה לייצג בדיוק וועדה אחת.
שימושים הקמת וועדת נציגים: • V = {v1, v2, …, Vm} ; S = {S1, S2, …, Sn} • V – קבוצת המשתתפים בוועדות; • S – קבוצת הוועדות (קבוצה שאיבריה הם תת-קבוצות של (V; • SJ מורכבת מאיברי V.
שימושים - הקמת וועדת נציגים דוגמא 1: V = {1, 2, 3, 4, 5}
שימושים - הקמת וועדת נציגים דוגמא 2: V = {1, 2, 3, 4, 5} האם ניתן לבנות וועדת נציגים?
מתי ניתן לבנות וועדת נציגים? 1 2, 4, 5 2 1, 5 t S 3 3, 4 4 1, 4 5
מתי ניתן לבנות וועדת נציגים? • בתיאור הנ"ל: • קיבול כל הקשתות הוא 1. • קשור s לכל הוועדות. • קישור כל החברים ל- t. • אם קיימת זרימה מקסימלית מ- s ל- t השווה למספר הוועדות, אז ניתן לבנות וועדת נציגים. • הנציגים נבחרים על-פי הזרימה המקסימלית.