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

42

Upload: avi

Post on 12-Jan-2016

45 views

Category:

Documents


2 download

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

Page 1: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks
Page 2: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

הגדרת הבעיה:

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

Page 3: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

דרך מסובכת להציג בעיה פשוטה:

דרך 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

Page 4: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

סיבוכיות

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

Page 5: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

Max-Flow Min-Cut Theorem

ידוע כי ערכה המכסימלי של זרימה בגרף כללי שווה לערך •.t ל-sהמינימלי של חתך המפריד בין

כדי למצוא זרימה 1979בעובדה זו השתמשו איתי ושילוח בשנת • על אותה פאה.t ו-sמכסימלית בגרף מישורי שבו הצמתים

לאו t ו-sחסין וג'ונסון מרחיבים אלגוריתם זה למקרה שבו •דוקא על אותה פאה.

5

Page 6: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

הגרף הדואלי

לכל גרף מישורי יש גרף דואלי שמשמעותו החלפת כל הפאות •בצמתים )כולל הפאה החיצונית( וכל הצמתים בפאות.

6

st

הגרף הדואלי הגרף המקורי

Nd N

Fd V

Vd F

Ed E

length capacity

Page 7: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

בה"כ הגרף הדואלי פשוט

קשת כפולה ניתן לאחד לאחת:•

לולאות ניתן למחוק:•

נשים לב כי פעולות אלו לא משפיעות לא על הזרימה ולא על המרחקים בגרף הדואלי.

אולם במאמר פותרים זאת ע"י טריאנגולציה בקשתות עם קיבולת אפס.

7

c1c2min(c1, c2)

Page 8: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

מציאת חתך מינימלי

כל פאה שצמודה לקשת בחתך המינימלי, בהכרח צמודה •לקשת נוספת מהחתך )אחרת זהו אינו חתך(. לכן מקבלים

שהחתך שקול בגרף הדואלי למעגל.

היא הפאה sבלי הגבלת הכלליות הפאה שמתאימה לצומת •. tהחיצונית. לכן המעגל שלנו מקיף את הפאה שמתאימה ל-

.(t ל-s)ובהכרח חותך כל מסלול מ-

8

φs φt

Page 9: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

מציאת חתך מינימלי

t לפאה של sלכן נמצא את המסלול הקצר ביותר מהפאה של • בהתאמה(.φs ,φt)נסמן

. ξs=ξ1 ξt=ξk. כאשר ξ1, ξ2, … ξk ואת צמתיו ב-Πנסמן את המסלול ב-•

ע"י הוספת צומת שקשורה )במרחק אפס( לכל Πנמצא את •, ומציאת המסלול הקצר ביותר φs וכנ"ל עבור φtצומת בפאה

ביניהן.

9

φs φtξ1ξ2 ξkΠ

Page 10: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

מציאת חתך מינימלי

-Π להיות ( v, ξi)ונגדיר כל קשת מהצורה, ξt אל ξs מ-Πנלך על פני • ביחס למסלול. v-שמאלית, לפי מיקומו של Πימנית או

ומכיל בדיוק φtנשים לב כי קיים מעגל קצר ביותר שמקיף את •-שמאלית אחת.Π-ימנית אחת וקשת Πקשת

10

φs φtξ1ξ2 ξk

Π-left

Π-right

Page 11: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

CUTS(N)אלגוריתם

. φt ל-φs בין Π, ואת המסלול Nהאלגוריתם מקבל רשת זרימה • את המעגל הקצר ביותר Π ξi єומחזיר קבוצה שמכילה עבור כל

.ξi-שמאלית אחת שיוצאת מ-Πשמכיל קשת

Cd{ נסמן את הפלט של האלגוריתם •1, Cd

2, … ,Cdk {

איך עושים את זה?•

11

Page 12: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

ξ’1ξ’2 ξ’k

CUTS(N)אלגוריתם

. ניצור קשתות מכוונות מ-ξ”iו-ξ’i ל-Πנפצל את כל צמתי •ξ”i-לξ’iואת כל הקשתות ה .Π שמאליות/ימניות נכוון-

ξ”iל- ξ’i מ-shortest-pathשמאלה. עכשיו נמצא

12

Π-rightξ”1

ξ”2 ξ”k

Page 13: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

CUTS(N)אלגוריתם

Cd אז i < hנשים לב כי ניתן להניח שאם •h נמצא כולו בתוך Cd

i .כלומר שני המעגלים לא חוצים אחד את השני.

וזה משום שאז יש שני צמתים עם שני מסלולים קצרים ביותר •ביניהם, וניתן לבחור אחד מהם.

13

φs φtξ1ξ2 ξk

ξ3

Cd3Cd

2

Page 14: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

CUTS(N)אלגוריתם

לכן נוכל לעשות "חיפוש בינארי".•

, נפצל את הרשת לפי k/2 (Cd⌈k/2⌉)כלומר נמצא את המעגל ה-•המעגל הזה, ונריץ רקורסיבית.

14

φtξkφs ξ1

ξ2

Page 15: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

וככה זה נראה על כדור

15

φtφs

מקראה:t ו-s- הפאות שמתאימות ל-

Π- מסלול Cd⌈k/2⌉- המעגל

φs φt

Page 16: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

ts’t’s ts

וככה זה נראה בגרף המקורי

16

מקראה:- צמתי מקור ויעד

C⌈k/2⌉- החתך

Page 17: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

CUTS(N)סיבוכיות אלגוריתם

נבנה את עץ הרקורסיה:•

17

ts

t’s

t”s

ts’

t’S” t’’’s’ ts’’’

כיוון הזרימה

Level 0

Level 1

Level 2

Page 18: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

CUTS(N)סיבוכיות אלגוריתם

של העץ. l להיות מספר הצמתים בכל הגרפים ברמה σlנגדיר •

18

σ0σ1

σ2

Page 19: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

CUTS(N)סיבוכיות אלגוריתם

V| + |F| = |E| + 2|בגרפים מישוריים •)|F| = O)|E|( = O)|V|לכן: •

ולכן:•

19

Page 20: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

מציאת הזרימה מכסימלית מתוך CUTS(N)

כך:Nt, נגדיר גרף התמרה, Ndמתוך הגרף הדואלי, •

. כאשר יש ביניהם קשת ξ”iו-ξ’i , מפוצלת ל-Π ξi єכל צומת • )מינוס ערך הזרימה vmax– שמכוונת שמאלה, וערכה שלילית

המכסימלית(.

20

ξ’1 ξ’2 ξ’k

ξ”1ξ”2 ξ”k

–vmax

–vmax –vmax

–vmax

NdNt

Page 21: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

מציאת הזרימה מכסימלית מתוך CUTS(N)

Ct האינדקס שעבורו מצאנו ש-rיהי •r הוא המעגל הקצר ביותר

, ולכן אין מעגלים שליליים בגרף.vmax. אורכו φtשמקיף את

21

ξ’1 ξ’2 ξ’k

ξ”1ξ”2 ξ”k

–vmax

–vmax –vmax

–vmax

Ntξ’r

ξ”r

Ctr

Page 22: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

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

Page 23: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

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

מסלול ללא צמתים .Πמ-

Page 24: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

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

מסלול ללא צמתים .Πמ-

Page 25: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

מסקנה

.Nd גם על הקשתות של )u)v,wנוכל להגדיר את •

25

u(ξk-1,ξk)

–vmax

–vmax –vmax

–vmax

NdNt

u(ξ1,ξ2)

u(ξ1,ξ2)

Page 26: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

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

Page 27: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

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

Page 28: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

Theorem 1הוכחת

עם כיוון השעון. ξ’k = v1, … , vq = ξ”k, שצמתיוφt. ועבור 3• נובע:1מלמה

.sוכנ"ל עבור •

28

φtu(ξ’k)

u(ξ”k

)

u(v2)

u(v3)

u(v4)

t

Page 29: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

Lemma 2

Ctהמעגל •r מחלק את הגרף Nt לשני חלקים, כך שלכל צומת

v-המסלול הקצר ביותר מ , ξ’r-ל v.עובר רק באחד מהם

הוכחה:•

Ctכל מסלול שחוצה את •r פעמיים ניתן לקצר ע"י החלפת קטע

Ct ממנו בקטע מ-r.

29Nt

out

ξ’r

Ctr

Ntin

Page 30: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

מסקנה

Ntניתן לחשב קודם מרחקים קצרים ביותר ב-•in ואז באופן .

Ntדומה ב-out.

30

Page 31: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

הגדרות

Ctהמעגלים •i :מחלקים את הגרף לתתי גרפים באופן הבא

Ntנגדיר את הרצועה i להיות כל מה שכלוא בין Ct

i לבין Cti+1

כולל.

31

φt

ξ‘rNt

r Ntr+1 Nt

k

Page 32: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

הגדרות

Nt, אם האינדקס של ה-נורמלי (ξ’r ,v)נקרא למסלול •i ים-

כלשהו, qשבהם הוא עובר קודם גדל עד שהוא מגיע לערך ואז קטן. וכשהוא קטן, המסלול לא עובר בקשתות שליליות.

סכמטית זה נראה כך:•)באזור האדום אין קשתות שליליות(

32

ξ‘r

Ntr Nt

r+1 Ntq-1 Nt

q…v

Ctr

Ctr+1 Ct

q

Page 33: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

Lemma 3

Nt לכל צומת ב-•in יש מסלול (ξ’r ,v) קצר ביותר נורמלי.

הוכחה:•ראשית נראה שלכל מסלול קצר ביותר שמסתיים בקשת שלילית •

(ξ”i , ξ’i) .יש מסלול נורמלי שקול

.( ξ”p , ξ’p), נסמן אותה ξ”iנתבונן בקשת השלילית האחרונה לפני •

.p<i משום שאז המסלול חוצה את עצמו. לכן i<pלא יתכן ש • לא מכיל קשתות שליליות, לכן הוא לא ξ”i לבין ξ’pהמסלול שבין •

פעמיים )כי אחרת אפשר לקצר אותו ע"י Ctחוצה את אותו מעגל המעגל(.

33

Page 34: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

Lemma 3הוכחת

34

ξ‘r ξ‘i ξ‘p

ξ‘p ξ‘i

Page 35: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

Lemma 3הוכחת

עבור כל צומת אחר:•נפרק את המסלול הקצר ביותר אליו לשני חלקים: החלק •

שמסתיים בקשת שלילית, והסוף שלא מכיל קשתות שליליות.החלק שנגמר בקשת שלילת הוא נורמלי )כי הוכחנו הרגע(.•החלק השני לא מכיל קשתות שלילות, ולכן הוא לא חותך את •

אותו מעגל פעמיים.מש"ל •

35

ξ‘rv

Page 36: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

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

Page 37: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

?Dijkstraמה פרוש צמתי מקור ב-

, שידוע לו כבר v, שמחובר לכל צומת wפשוט נוסיף צומת •u)v( ונריץ .Dijkstra מהצומת w.

37

צמתי מקור

הרשת

u(v1)

u(v2)

w

∞∞

Page 38: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

Inside-Labelsאלגוריתם

וכך זה נראה סכמטית:•

38

φt

ξ‘rNt

r Ntr+1 Nt

k

Page 39: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

-Insideהוכחת נכונות אלגוריתם Labels

Nt צומת ב-vיהי •in יש לו מסלול קצר ביותר 3. לפי למה

.נורמליקל לראות ע"י ההדגמה הבאה, שהאלגוריתם עובר על כל •

קשתות המסלול בסדר הנכון. נשים לב שקשתות שליליות במעבר בין הרצועות, לכן הן מעודכנות בזמן.רקנמצאות

39

ξ‘r

Ntr Nt

r+1 Ntq-1 Nt

q…v

Ctr

Ctr+1 Ct

q

Ntk

Page 40: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

באג בסיבוכיות

מה קורה במקרה הבא?• רצועות. כלומר )n(O, ויש )O)nכל הרצועות בגודל •

.)O)n2 log nהאלגוריתם רץ בסיבוכיות זמן של

40

ξ‘r

Ctr

ξ‘k

Φt

מעגל באורךO(n)

Page 41: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

תיקון האלגוריתם

רק על החלק הלא מנוון Dijkstraבמקרים מנוונים נריץ את •של הרצועה.

מקבלים שכל קשת משתתפת לכל היותר בשלוש הרצות של •Dijkstra.

O)n log הוא Inside-Labelsולכן סיבוכיות זמן הריצה של •n(.

41

ξ‘i ξ‘i+1

Nti

Page 42: An O(n log 2  n) Algorithm For Maximum Flow in Undirected Planar Networks

42