an o(n log 2 n) algorithm for maximum flow in undirected planar networks
DESCRIPTION
An O(n log 2 n) Algorithm For Maximum Flow in Undirected Planar Networks. Refael Hassin and Donald B.Johnson. הגדרת הבעיה: רשת זרימה, N היא רביעיה מהצורה: ( G , s , t , c ) כאשר: G = ( V , E ) הוא גרף מישורי לא מכוון עם n צמתים. t , s є V צומת מקור וצומת יעד בהתאמה. - PowerPoint PPT PresentationTRANSCRIPT
הגדרת הבעיה:
כאשר: (G , s , t , c ) היא רביעיה מהצורה: Nרשת זרימה, .1G = ) V , E ( הוא גרף מישורי לא מכוון עם n.צמתים .2t , s є V.צומת מקור וצומת יעד בהתאמה .3c: E ⟶ R⁺ פונקצית הקיבולת על הקשתות. )או למעשה
אם c)v,w( = 0 כאשר ⁺c: V⨉V ⟶ Rנרחיב את ההגדרה ל: (w ל-vאין קשת בין
e היא פונקציה המקיימת שלכל ⁺f:V⨉V ⟶ Rפונקצית זרימה = )v-w( є E:
f)v,w( + f)w,v( ≤ c)e(.:, אזv קבוצת השכנים של A תהי v є V-{s,t}ולכל
. אז ערך הזרימה: t קבוצת השכנים של הצומת Bתהי
הבעיה היא למצוא זרימה בעלת ערך מקסימלי. 2
דרך מסובכת להציג בעיה פשוטה:
דרך t ל-sרוצים להזרים כמה שיותר מים/חשמל/משהו אחר מ-.c בעלת הקיבולת Nהרשת המישורית
3
s t
1
22
2
22
2
22
2
1
1
1
1
11
3
3
3
3
3
3
44
4
4
4
4
4
4
5
5
5
5
5
6
6
6
6
6
6
6
7 7
7
7
7
7 8 88
8
8
9
9
99
9
9
9
10
1010
10
10
10
1
10
4
2
סיבוכיות
O)n2האלגוריתם הכי טוב עד עכשיו בגרפים כלליים רץ בזמן •log n(.
.)O)n3/2 log nבגרף מישורי ניתן היה להגיע לתוצאה של •
.)O)n log2 nהאלגוריתם הזה רץ בזמן אסימפטוטי •
אבל, בחלקים מסויימים, לשם פשטות, נשתמש באלגוריתם •, למרות שיש Dijkstraמציאת מסלולים קצרים ביותר של
אלגוריתמים יעילים יותר. שרץ shortest-pathלכן אם אנחנו משתמשים באלגוריתם •
.)n( log n(f(O אז סיבוכיות האלגוריתם שלנו תהיה ))O)f)nב-
4
Max-Flow Min-Cut Theorem
ידוע כי ערכה המכסימלי של זרימה בגרף כללי שווה לערך •.t ל-sהמינימלי של חתך המפריד בין
כדי למצוא זרימה 1979בעובדה זו השתמשו איתי ושילוח בשנת • על אותה פאה.t ו-sמכסימלית בגרף מישורי שבו הצמתים
לאו t ו-sחסין וג'ונסון מרחיבים אלגוריתם זה למקרה שבו •דוקא על אותה פאה.
5
הגרף הדואלי
לכל גרף מישורי יש גרף דואלי שמשמעותו החלפת כל הפאות •בצמתים )כולל הפאה החיצונית( וכל הצמתים בפאות.
6
st
הגרף הדואלי הגרף המקורי
Nd N
Fd V
Vd F
Ed E
length capacity
בה"כ הגרף הדואלי פשוט
קשת כפולה ניתן לאחד לאחת:•
לולאות ניתן למחוק:•
נשים לב כי פעולות אלו לא משפיעות לא על הזרימה ולא על המרחקים בגרף הדואלי.
אולם במאמר פותרים זאת ע"י טריאנגולציה בקשתות עם קיבולת אפס.
7
c1c2min(c1, c2)
מציאת חתך מינימלי
כל פאה שצמודה לקשת בחתך המינימלי, בהכרח צמודה •לקשת נוספת מהחתך )אחרת זהו אינו חתך(. לכן מקבלים
שהחתך שקול בגרף הדואלי למעגל.
היא הפאה sבלי הגבלת הכלליות הפאה שמתאימה לצומת •. tהחיצונית. לכן המעגל שלנו מקיף את הפאה שמתאימה ל-
.(t ל-s)ובהכרח חותך כל מסלול מ-
8
φs φt
מציאת חתך מינימלי
t לפאה של sלכן נמצא את המסלול הקצר ביותר מהפאה של • בהתאמה(.φs ,φt)נסמן
. ξs=ξ1 ξt=ξk. כאשר ξ1, ξ2, … ξk ואת צמתיו ב-Πנסמן את המסלול ב-•
ע"י הוספת צומת שקשורה )במרחק אפס( לכל Πנמצא את •, ומציאת המסלול הקצר ביותר φs וכנ"ל עבור φtצומת בפאה
ביניהן.
9
φs φtξ1ξ2 ξkΠ
מציאת חתך מינימלי
-Π להיות ( v, ξi)ונגדיר כל קשת מהצורה, ξt אל ξs מ-Πנלך על פני • ביחס למסלול. v-שמאלית, לפי מיקומו של Πימנית או
ומכיל בדיוק φtנשים לב כי קיים מעגל קצר ביותר שמקיף את •-שמאלית אחת.Π-ימנית אחת וקשת Πקשת
10
φs φtξ1ξ2 ξk
Π-left
Π-right
CUTS(N)אלגוריתם
. φt ל-φs בין Π, ואת המסלול Nהאלגוריתם מקבל רשת זרימה • את המעגל הקצר ביותר Π ξi єומחזיר קבוצה שמכילה עבור כל
.ξi-שמאלית אחת שיוצאת מ-Πשמכיל קשת
Cd{ נסמן את הפלט של האלגוריתם •1, Cd
2, … ,Cdk {
איך עושים את זה?•
11
ξ’1ξ’2 ξ’k
CUTS(N)אלגוריתם
. ניצור קשתות מכוונות מ-ξ”iו-ξ’i ל-Πנפצל את כל צמתי •ξ”i-לξ’iואת כל הקשתות ה .Π שמאליות/ימניות נכוון-
ξ”iל- ξ’i מ-shortest-pathשמאלה. עכשיו נמצא
12
Π-rightξ”1
ξ”2 ξ”k
CUTS(N)אלגוריתם
Cd אז i < hנשים לב כי ניתן להניח שאם •h נמצא כולו בתוך Cd
i .כלומר שני המעגלים לא חוצים אחד את השני.
וזה משום שאז יש שני צמתים עם שני מסלולים קצרים ביותר •ביניהם, וניתן לבחור אחד מהם.
13
φs φtξ1ξ2 ξk
ξ3
Cd3Cd
2
CUTS(N)אלגוריתם
לכן נוכל לעשות "חיפוש בינארי".•
, נפצל את הרשת לפי k/2 (Cd⌈k/2⌉)כלומר נמצא את המעגל ה-•המעגל הזה, ונריץ רקורסיבית.
14
φtξkφs ξ1
ξ2
וככה זה נראה על כדור
15
φtφs
מקראה:t ו-s- הפאות שמתאימות ל-
Π- מסלול Cd⌈k/2⌉- המעגל
φs φt
ts’t’s ts
וככה זה נראה בגרף המקורי
16
מקראה:- צמתי מקור ויעד
C⌈k/2⌉- החתך
CUTS(N)סיבוכיות אלגוריתם
נבנה את עץ הרקורסיה:•
17
ts
t’s
t”s
ts’
t’S” t’’’s’ ts’’’
כיוון הזרימה
Level 0
Level 1
Level 2
CUTS(N)סיבוכיות אלגוריתם
של העץ. l להיות מספר הצמתים בכל הגרפים ברמה σlנגדיר •
18
σ0σ1
σ2
CUTS(N)סיבוכיות אלגוריתם
V| + |F| = |E| + 2|בגרפים מישוריים •)|F| = O)|E|( = O)|V|לכן: •
ולכן:•
19
מציאת הזרימה מכסימלית מתוך CUTS(N)
כך:Nt, נגדיר גרף התמרה, Ndמתוך הגרף הדואלי, •
. כאשר יש ביניהם קשת ξ”iו-ξ’i , מפוצלת ל-Π ξi єכל צומת • )מינוס ערך הזרימה vmax– שמכוונת שמאלה, וערכה שלילית
המכסימלית(.
20
ξ’1 ξ’2 ξ’k
ξ”1ξ”2 ξ”k
–vmax
–vmax –vmax
–vmax
NdNt
מציאת הזרימה מכסימלית מתוך CUTS(N)
Ct האינדקס שעבורו מצאנו ש-rיהי •r הוא המעגל הקצר ביותר
, ולכן אין מעגלים שליליים בגרף.vmax. אורכו φtשמקיף את
21
ξ’1 ξ’2 ξ’k
ξ”1ξ”2 ξ”k
–vmax
–vmax –vmax
–vmax
Ntξ’r
ξ”r
Ctr
u(v)נגדיר את
הוא )v є V, u)vלכל כך שu: V ⟶ Rנגדיר פונקציה • :v–w. וגם נגדיר לכל קשת ξ’rהמרחק הקצר ביותר מהצומת
u)v,w( = – u)w,v( = u)w( – u)v(
22
ξ’1 ξ’2 ξ’k
ξ”1ξ”2 ξ”k
–vmax
–vmax –vmax
–vmax
Ntξ’r
ξ”r
Ctr
Lemma 1
u)ξ’i( = u)ξ”i( – vmax מתקיים: i ≤ k ≥ 1לכל •
הוכחה:•
u)ξ’i( ≤ u)ξ”i( – vmaxברור ש- •
. ונסמן את הקשת ξ’i ל-ξ’rנתבונן במסלול הקצר ביותר מ-•. ואת הצומת v – ξ’p העליון, Πהאחרונה בו שאינה במסלול
:ξ’h העליון, Π שנמצאת במסלול vהאחרונה לפני
23
ξ’r ― … ― ξ’h ― … ― v ― ξ’p ― … ― ξ’i
מסלול ללא צמתים .Πמ-
Lemma 1
מקבלים שהמסלול המסומן , Π אינו צומת ב-vאם מניחים ש-•. אבל ξ’p ל-ξ’h , והוא המסלול הקצר ביותר מ-Ndקיים גם ב-
Π מ- הוא המסלול הקצר ביותר ξ’h-ל ξ’p-לכן ניתן להניח ש ,v .ξ”pהוא הצומת
u)ξ”i( ≤ u)ξ’i( + vmaxולכן •
u)ξ’i( ≤ u)ξ”i( – vmaxכלומר •
24
ξ’r ― … ― ξ’h ― … ― v ― ξ’p ― … ― ξ’i
מסלול ללא צמתים .Πמ-
מסקנה
.Nd גם על הקשתות של )u)v,wנוכל להגדיר את •
25
u(ξk-1,ξk)
–vmax
–vmax –vmax
–vmax
NdNt
u(ξ1,ξ2)
u(ξ1,ξ2)
Theorem 1
את הזרימה המכסימלית ניתן לבנות כך:•, נסובב עם u)v,w( ≤ 0, עם v-w є Vכל קשת בגרף הדואלי •
.)f)v’,w’( = u)v,wכיוון השעון ונקבל בגרף המקורי:
26
u(v,w)f(v’,w’)
w’v’
v
w
Theorem 1הוכחת
•1 .0 ≤ u)v,w( ≤ length)v,w( = c)v’,w’(
עם כיוון השעון v1, … , vq. שצמתיוφ є Fd\{φs, φt}. יהי 2• בגרף המקורי, אזי:aוהוא שקול לצומת
27
φu(v2)
u(v1)
u(v3)
u(v4)
u(v5)
a
Theorem 1הוכחת
עם כיוון השעון. ξ’k = v1, … , vq = ξ”k, שצמתיוφt. ועבור 3• נובע:1מלמה
.sוכנ"ל עבור •
28
φtu(ξ’k)
u(ξ”k
)
u(v2)
u(v3)
u(v4)
t
Lemma 2
Ctהמעגל •r מחלק את הגרף Nt לשני חלקים, כך שלכל צומת
v-המסלול הקצר ביותר מ , ξ’r-ל v.עובר רק באחד מהם
הוכחה:•
Ctכל מסלול שחוצה את •r פעמיים ניתן לקצר ע"י החלפת קטע
Ct ממנו בקטע מ-r.
29Nt
out
ξ’r
Ctr
Ntin
מסקנה
Ntניתן לחשב קודם מרחקים קצרים ביותר ב-•in ואז באופן .
Ntדומה ב-out.
30
הגדרות
Ctהמעגלים •i :מחלקים את הגרף לתתי גרפים באופן הבא
Ntנגדיר את הרצועה i להיות כל מה שכלוא בין Ct
i לבין Cti+1
כולל.
31
φt
ξ‘rNt
r Ntr+1 Nt
k
הגדרות
Nt, אם האינדקס של ה-נורמלי (ξ’r ,v)נקרא למסלול •i ים-
כלשהו, qשבהם הוא עובר קודם גדל עד שהוא מגיע לערך ואז קטן. וכשהוא קטן, המסלול לא עובר בקשתות שליליות.
סכמטית זה נראה כך:•)באזור האדום אין קשתות שליליות(
32
ξ‘r
Ntr Nt
r+1 Ntq-1 Nt
q…v
…
Ctr
Ctr+1 Ct
q
Lemma 3
Nt לכל צומת ב-•in יש מסלול (ξ’r ,v) קצר ביותר נורמלי.
הוכחה:•ראשית נראה שלכל מסלול קצר ביותר שמסתיים בקשת שלילית •
(ξ”i , ξ’i) .יש מסלול נורמלי שקול
.( ξ”p , ξ’p), נסמן אותה ξ”iנתבונן בקשת השלילית האחרונה לפני •
.p<i משום שאז המסלול חוצה את עצמו. לכן i<pלא יתכן ש • לא מכיל קשתות שליליות, לכן הוא לא ξ”i לבין ξ’pהמסלול שבין •
פעמיים )כי אחרת אפשר לקצר אותו ע"י Ctחוצה את אותו מעגל המעגל(.
33
Lemma 3הוכחת
34
ξ‘r ξ‘i ξ‘p
ξ‘p ξ‘i
Lemma 3הוכחת
עבור כל צומת אחר:•נפרק את המסלול הקצר ביותר אליו לשני חלקים: החלק •
שמסתיים בקשת שלילית, והסוף שלא מכיל קשתות שליליות.החלק שנגמר בקשת שלילת הוא נורמלי )כי הוכחנו הרגע(.•החלק השני לא מכיל קשתות שלילות, ולכן הוא לא חותך את •
אותו מעגל פעמיים.מש"ל •
35
ξ‘rv
Inside-Labelsאלגוריתם
v є Nt. לכל 1•in : ∞ ←u)v(
•2 .0 ← u)ξ’r (
Ct על המעגל Dijkstra. הפעל 3•r ללא הקשת השלילית
( ξ’r)צומת מקור בצע:k עד r מ-i. עבור 4•
Nt על הרצועה Dijkstra. הפעל 4.1–i ללא הקשתות
)צמתי מקור – כל הצמתים שכבר חישבנו(השליליות
Nt. עדכן את הקשתות השליליות של הרצועה 4.2–i.
Nt על כל Dijkstra. הפעל 5•in ללא הקשתות השליליות
Ct)צמתי מקור - k)
36
?Dijkstraמה פרוש צמתי מקור ב-
, שידוע לו כבר v, שמחובר לכל צומת wפשוט נוסיף צומת •u)v( ונריץ .Dijkstra מהצומת w.
37
צמתי מקור
הרשת
u(v1)
u(v2)
w
∞∞
∞
Inside-Labelsאלגוריתם
וכך זה נראה סכמטית:•
38
φt
ξ‘rNt
r Ntr+1 Nt
k
-Insideהוכחת נכונות אלגוריתם Labels
Nt צומת ב-vיהי •in יש לו מסלול קצר ביותר 3. לפי למה
.נורמליקל לראות ע"י ההדגמה הבאה, שהאלגוריתם עובר על כל •
קשתות המסלול בסדר הנכון. נשים לב שקשתות שליליות במעבר בין הרצועות, לכן הן מעודכנות בזמן.רקנמצאות
39
ξ‘r
Ntr Nt
r+1 Ntq-1 Nt
q…v
…
Ctr
Ctr+1 Ct
q
Ntk
באג בסיבוכיות
מה קורה במקרה הבא?• רצועות. כלומר )n(O, ויש )O)nכל הרצועות בגודל •
.)O)n2 log nהאלגוריתם רץ בסיבוכיות זמן של
40
ξ‘r
Ctr
ξ‘k
Φt
מעגל באורךO(n)
תיקון האלגוריתם
רק על החלק הלא מנוון Dijkstraבמקרים מנוונים נריץ את •של הרצועה.
מקבלים שכל קשת משתתפת לכל היותר בשלוש הרצות של •Dijkstra.
O)n log הוא Inside-Labelsולכן סיבוכיות זמן הריצה של •n(.
41
ξ‘i ξ‘i+1
Nti
42