an o(n log 2 n) algorithm for maximum flow in undirected planar networks

Post on 12-Jan-2016

45 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

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 Presentation

TRANSCRIPT

הגדרת הבעיה:

כאשר: (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

top related