All-Pairs Bottleneck Paths in Vertex Weighted Graphs

36
All-Pairs Bottleneck Paths in Vertex Weighted Graphs Adapted from paper by Asaf Shapira, Raphael Yuster, Uri Zwick

description

All-Pairs Bottleneck Paths in Vertex Weighted Graphs. Adapted from paper by Asaf Shapira , Raphael Yuster , Uri Zwick. הערות – לפני שנתחיל. לשאול שאלות תוך כדי זה בסדר, לפי המקרא הבא: שאלה מעניינת: "מעניין באמת מה התשובה, כי לי אין מושג" שאלה טובה: "הא הא! אני יודע מה התשובה!" - PowerPoint PPT Presentation

Transcript of All-Pairs Bottleneck Paths in Vertex Weighted Graphs

Page 1: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

All-Pairs Bottleneck Paths in Vertex Weighted Graphs

Adapted from paper by Asaf Shapira, Raphael Yuster, Uri Zwick

Page 2: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

הערות – לפני שנתחיל

לשאול שאלות תוך כדי זה בסדר, לפי המקרא •הבא:

"מעניין באמת מה התשובה, כי שאלה מעניינת:1.לי אין מושג"

"הא הא! אני יודע מה התשובה!"שאלה טובה: 2.

"בואו נסתכל על השקף הבא..."שאלה מצויינת: 3.

אם יש מינוח/סימון לא ברור, תרגישו חופשי •1לשאול, אלא אם כן זה מקרה

Page 3: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

הערות – לפני שנתחיל

הנחה היא שהקוד' תמיד ממויינים לפי משקל, •.W(Vi) ≤ W(Vi+1)ז"א

זה לא פוגע בסיבוכיות, כי בכל מקרה •הסיבוכיות המינ' היא ריבועית, ומיון לוקח

O(Vlog(V)).

יעזור בהמשך...•

Page 4: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

? )הגדרות(APBPמה זה

היא w: V → R, כאשר G = (V, E, w)נתון גרף מכוון •.הקודקודיםפונ' משקולות על

capacity )המשקל הפוקק(, או ה- bottleneckה- •)קיבולת( של מסלול, הוא המשקל הנמוך ביותר

על אותו מסלול.את C(u, v) נסמן ב- u,vעבור שני קודקודים •

. v ל – uהקיבולת המקסימאלית על מסלול בין המסלולים בין כלאם נעבור על במילים אחרות: •

u -ל v ונבדוק מה הקיבולת של כל מסלול, אזי ,C(u,v) .יהיה הערך הכי גדול מבין הקיבולות

Page 5: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

? )הגדרות(APBPמה זה

כמובן שאפשר להבין למה זה מעניין – בעיות •זרימה למיניהם...

וריאנטים מרכזיים:2יש •–Open-APBP : כאשר לא מתחשבים במשקולות של

(.W(u), W(v)קודקודי הקצה )לא מתחשבים ב- –Closed-APBP : ,מתחשבים במשקולות הקצה

.Ct(u, v) = W(v) או Ct(u, v) = W(u)כלומר ייתכן ו-

הבעיות שקולות 2 אחת מתוצאות המאמר:)סיבוכית(.

Page 6: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

התוצאה המרכזית )"החלק החכם"(

Open-APBPאלגוריתם שמחשב מטריצת •.O(n ^ (2 + μ)) בזמן Closed-APBPומטריצת

, כאשר הוכח ש – μ + 2נשים לב שהחזקה היא •0.575> μ נובע מהקבוע של כפל מטריצות(

בוליאנות(לכן סה"כ האלג' פועל בסיבוכיות:•

O(n ^ 2.575) הגנרי μבכל מקרה אנחנו נשתמש בסימון •

עבור סיבוכיות האלגוריתם שלנו

Page 7: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

מה בעצם באנו להוכיח? )פורמלי(

יש אלג' שפותר את במילים אחרות:APBP בגרף מכוון בסדר גודל זמן שלוקח

n Xלבצע כפל מטריצות בוליאניות בגודל n.

Page 8: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

סקיצת ההוכחה

)מטריצת עדים MWBMM לחישובAמוצאים אלג' O(n ^ (2 + μ))מקסימאליים לכפל מטריצות בוליאניות( בזמן -

-Closed פותר את בעיית A', שע"י שימוש ב- Aבונים את APBP בגרפים מכוונים עבור אורך מסלול קבוע t תכנות(

דינאמי(

יוצרים אלג' "הפרד ומשול" רקורסיבי לפיתרון הבעיה הכללית, ' לפתרון שלבים בדרך Aכאשר נעשה שימוש ב-

Page 9: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

MWBMMחישוב למעשה קיבלנו את החלק הזה ב"מתנה", שכן נתון לנו האלג'

הבא בתור קופסא שחורה:

Kowaluk & Lingas

מטריצות 2מטריצת עדים מקסימאלית )מע"מ( עבור כפל .O(n ^ (2 + μ)) ניתנת לחישוב בזמן - n X nבוליאניות

Page 10: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

סקיצת ההוכחה

)מטריצת עדים MWBMM לחישובAמוצאים אלג' O(n ^ (2 + μ))מקסימאליים לכפל מטריצות בוליאניות( בזמן -

בגרפים APBP פותר את בעיית A', שע"י שימוש ב- Aבונים את )תכנות דינאמי(tמכוונים עבור אורך מסלול קבוע

יוצרים אלג' "הפרד ומשול" רקורסיבי לפיתרון הבעיה הכללית, ' לפתרון שלבים בדרך Aכאשר נעשה שימוש ב-

Page 11: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

. רוצים u,v ושני קודקודים t נתון לנו אורך הבעיה:למצוא את המשקל הפוקק המקסימאלי על כל

, כאשר מסתכלים רק על v ל- uהמסלולים בין 1 )כל קשת מוסיפה tמסלולים שאורכם עד

לאורך המסלול – נזכור שהקשתות לא ממושקלות(.

.Ps, Qs ניעזר ב- הפתרון:

Page 12: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

Ps(u,v) = 1 -אם יש מסלול מ u – ל v באורך s -לכל היותר, שבו ל v המשקל המינימאלי

(.0)אחרת

Qs(u,v) = 1 -אם יש מסלול מ u – ל v המשקל u לכל היותר, שבו ל- sבאורך

(.0המינימאלי )אחרת

? כן!!!(1תכנות דינאמי )אלג'

sנבנה את המטריצות מלמטה למעלה עבור כל הרעיון: , וזה לא "קשה" כי בכל שלב מתחשבים רק t ל - 0בין

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

Page 13: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

בנייהנתון:

•A מטריצת שכנויות של – G•B :מטריצה בוליאנית שבה –

B(u,v) = 1 אם"ם w(u) >= w(v)

P0 = Q0 = I: 0מדרגה

: 1מדרגה •P1 = A ^ B.•Q1 = A ^ Bt.

Page 14: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

בנייה )המשך(

:Sמדרגה . אזי:P (s – 1), Q (s – 1) נניח שיש לנו את •Ps = AP(s – 1) & B•Qs = Q(s – 1)A&Bt

הוכחה: v, שבו ל- v ל- u לכל היותר מ- s באורך p = (u, x, … ,v)נניח שיש מסלול

)כי הם שכנים(, ו-A[u,x] = 1משקל מינימאלי. אזי P(s-1)[x, v] = 1 כי כי p’ = (x…v) הוא מסלול באורך (s - 1) לכל היותר שבו

משקל מינימאלי v, כי ל- B[u, v] = 1 משקל מינימאלי, וכן vל- עצמו כלול בהשוואת המשקולות.w(u), כאשר v ל – uבמסלול בין

Qs זה אותו דבר, רק transposed.

Page 15: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

APBP -עבור אורך מסלול חסום ב t

, זה s = 0, 1, … t עבור כל הערכים Ps, Qsנחשב את קבוע, ולכן זה יוצא T זמן. O(t * n^μ)ייקח לנו

O(n^μ).זמן

, שהיא המע"מ עבור הכפל Wsעכשיו נחשב את

Ps Q(t-s) לכל ערך , s 'האלג .A שהראנו קודם ( t, יש לנו מספר קבוע )O(n^μ)ב - Ws מחשב כל

של מטריצות כאלה, ולכן זה מוסיף לנו סיבוכיות

O(n^μ) :זמן – ז"א הסיבוכיות הכוללת O(n^μ).

Page 16: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

הרעיון המרכזי

שהראינו מקודם, ניתן Wsכעת, כשיש לנו את כל ה- ע"י:O(t) בזמן Ct(u,v)למצוא את

•W(0)∞- = .•Ct(u, v) = W(max Ws(u, v)) כאשר ,Ws הכוונה לכל

.t … 0 רץ על הערכים s שחישבנו )ז"א Wsהמטריצות

במילים אחרות: שחישבנו במקום ה-Wsנסתכל על כל מטריצות

[u, v] וניקח את הערך המקסימאלי. נשתמש בערך זה ,כאינדקס של קודקוד: המשקל של אותו קודקוד הוא-הוא

Ct(u, v).

Page 17: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

הוכחת הטענה המרכזית

:0תנאי

אם"ם v ל- u מ- tאין מסלול באורך חסום

Ws(u, v) = 0 עבור כל s.ז"א בכל המטריצות ,

-< במקרה זה תקף התנאי המיוחד שלנו, ו-

W(0) = Ct(u, v).

Page 18: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

הוכחת הטענה המרכזית

:1כיוון

, נראה שזה אכן מה שהאלג' *Ct(u, v) = wנניח שלנו מחזיר.

עם קיבולת v ל – u מ- pע"פ ההנחה, קיים מסלול w* -ו ,y הוא קודקוד על המסלול p – שעבורו

W(y) = w* אפשר בעצם להסתכל על .p כעל איחוד , p2 = (y, … ,v) ו – p1 = (u, …. ,y)של שני מסלולים

.s ≤ t ≥ 0 עבור p1| = s, |p2| = t|כאשר:

Page 19: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

הוכחת הטענה המרכזית

)המשך(:1כיוון

, בפרט p בכל המשקל הכי נמוך yכיון שלקודקוד בנפרד, ולכן: p2 ו- p1זה תקף ל-

Ps(u, v) = 1 וכן Qt-s(u,v) = 1.

, ולכן Ws(u, v) ≥ yע"פ הגדרת מע"מ זה אומר ש- שבחרנו מקיים )נזכור מיון Ctמתקיים שה-

קוד'(:

Ct(u, v) ≥ W(y) = w* .■

Page 20: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

הוכחת הטענה המרכזית

:2כיוון

Ct(u, v), נראה שאכן *wנניח שהאלג' שלנו מחזיר = w*.

שעבורוy כלשהו, אזי קיים קוד' *wנניח שקיבלנו

W(y) = w* מסלולים: 2, וכן בהכרח יש שני

P1 = (u…y), P2 = (y…v) כך שאורך המסלול ,. tהכולל הוא לכל היותר

Page 21: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

הוכחת הטענה המרכזית

)המשך(:2כיוון

המשקל y בהכרח ל- Ps, Qsבנוסף, ע"פ הגדרת .P, ולכן בכל P2 וגם ב- P1הנמוך ביותר ב-

■. *Ct(u, v) ≤ wמכאן ש-

Page 22: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

סקיצת ההוכחה

)מטריצת עדים MWBMM לחישובAמוצאים אלג' O(n ^ (2 + μ))מקסימאליים לכפל מטריצות בוליאניות( בזמן -

בגרפים APBP פותר את בעיית A', שע"י שימוש ב- Aבונים את )תכנות דינאמי(tמכוונים עבור אורך מסלול קבוע

יוצרים אלג' "הפרד ומשול" רקורסיבי לפיתרון הבעיה הכללית, ' לפתרון שלבים בדרך Aכאשר נעשה שימוש ב-

Page 23: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

APBPהנחות –

הנחות:

- V = {1..n} כאשר ,w(i) ≤ w(i+1) ז"א: הקודקודים .ממויינים לפי משקל.

-N 2 הוא חזקה של

הערה:

ההנחות הנ"ל לא משפיעות על סיבוכיות הזמן 2שלנו.

Page 24: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

Uber Algorihm of Doom APBP-

APBP(V, E, w) לשני קבוצות:Vמחלקים את 1.

A = 1…n/2B = V\A המשלים של( A)

, ז"א B: הגרף המושרה ע"י Gb. נגדיר את 2. Aמעיפים קשתות שנוגעות בקוד' מ-

.Gb רקורסיבית על )(APBPנפעיל את

Page 25: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

Uber Algorihm of Doom APBP-

קשת (u, v), כאשר Ga: Ga = {A, E2}. נגדיר את 3 שיש או, G אמ"ם היא קיימת כבר ב- E2ב-

הקוד' במסלול כל אשר v ל – uמסלול מ- נמצאים בתוך.

משאירים את הקשתות הרגילות )כמו גרף הרעיון:מושרה(, ומוסיפים "קיצור דרך" עבור קוד' שכל

.Bהמסלול שלהם היה ב- , כלומר בזמן O(n^ω) ניתן לבנות ב- Ga את הערה:

פולינומי כפי קבוע כפל מטריצות בוליאניות..Ga רקורסיבית על )(APBPנפעיל את

Page 26: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

סיכום ביניים – מה עשינו עד עכשיו?

< -∞Cgb(u, v), אם קיבלנו B קוד' ב- 2עבור כל •.Cgb(u, v) = C(u, v)אזי בהכרח

.A, Cga(u, v) = C (u, v) קוד' ב- 2עבור כל •

אחלה בחלה, אז למה אנחנו עדיין פה?

כי נשארו עוד שלושה מקרים מיוחדים לבדוק, .B ו- Aה"תפר" בין קבוצות

Page 27: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

B ל- Aה"תפר" בין

שלא חישבנו:C(u, v)יש שלושה מקרים של -AxB з (u,v)-BxA з (u,v)

מסלולים שתחילתם בקבוצה אחת וסופם ז"א: בקבוצה אחרת.

-BxB з (u,v) -ושעבורם קיבלנו ,Cgb(u,v)∞- = .

קוד' שייתכן שיש ביניהם מסלול, שהקוד' 2 ז"א:.Aשלו ב-

Page 28: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

B ל- Aה"תפר" בין

אז בשביל לעבור על המקרים הללו, נבנה גרף כדלקמן:G’ = (V’, E’)מיוחד

V’ = B1 U A2 U A3 U A4 U B5 כאשר ,B1, B5 הם הם שכפולים של A2, A3, A4 ו- Bשכפולים של

A..V’| = 2.5n|נשים לב ש-

Ai בתוך u יהיה העותק של V, ui מתוך uעבור כל .w(ui) = w(u). בנוסף, Biאו

Page 29: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

B ל- Aה"תפר" בין (u1, v2 ), נוסיף את הקשת u з B, v з Aעבור כל •

המקורי( שכל G )ב- v ל – uאם"ם יש מסלול מ- .Bקוד' הפנימיים מ-

אם"ם(u2, v3) נוסיף את הקשת u, v з Aעבור כל • c(u,v) = w(v). אם"ם (u3, v4) נוסיף את הקשת u, v з Aעבור כל •

c(u,v) = w(u). השניים האחרונים אפשריים כיון שכבר הערה:

קודם, בקריאה הרקורסיבית על c(u, v)חישבנו את Ga ז"א ,c(u, v)!כבר ידוע לנו בשלב הזה

Page 30: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

B ל- Aה"תפר" בין

נוסיף את u з A, v з Bולסיום הבנייה, עבור כל • )ב- v ל- u אם"ם יש מסלול מ- (u4, v5)הקשת

G -המקורי( שכל קודקודיו הפנימיים מ B. את כל הקשתות הנ"ל ניתן ליצור ב- הערה:

O(n^ω) זמן, ולכן זהו גם הזמן הדרוש ליצירת G’.

Page 31: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

B ל- Aה"תפר" בין

ועכשיו הקסם:

לכל 4 חסום הם באורך ’Gכל המסלולים ב- נוכל כמובן לחשב t = 4היותר, ולכן אם נקבע

+ O(n ^ (2 )ע"י אלג' העזר שלנו( ב- APBPאת μ)).

הטענה היא שהמטריצה שהתקבלה, פותרת לנו את כל מקרי התפר שהזכרנו.

Page 32: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

למה זה עובד?

, שיש ביניהם מסלול:u з B, v з A קוד' 2ניקח

נקרא Aלקוד' הראשון על המסלול בתוך קבוצה x ולקודקוד בעל המשקל הפוקק נקרא ,y:ז"א ,

C(u, v) = w(y) ,נשים לב שבפרט .y з A 'הקוד( ממויינים לפי משקל, זוכרים?(.

Page 33: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

למה זה עובד?

, יש לנו שלושה קשתות:’Gע"פ הגדרת

(u1, x2( ,)x2, y3( ,)y3, v4) -שנמצאים ב E’.

מכאן, בהכרח:

Cg’(u1, v4) ≤ w(y3) = w(y) = c(u,v).

כמו כן:

Cg’(u1, v4) ≥ (u, v):ולכן ,

←C(u,v) = Cg’(u1, v4) ■

Page 34: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

למה זה עובד?

באופן דומה:

, אזי נקבל ש:v з B, u з Aעבור הכיוון הפוך, ז"א: •

Cg’(u2, v5) = C(u, v) .

, = -∞Cgb(u, v) שעבורם u,v з Bעבור שני קוד' •

.C(u, v) = Cg’(u1, v5)נקבל ש-

Page 35: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

סיבוכיות

אז ראינו את האלג' לפיתרון, אבל מה הסיבוכיות???

עיבוד רקורסיביות בחצי גודל +2פיתרון •:O(n ^ (2 + μ))שלוקח

•F(n) ≤ O(n ^ (2 + μ)) + 2F(n/2) .

זה יוצא )למי שזוכר בדידה...(:•

F(n) = O(n ^ (2 + μ)) ■

Page 36: All-Pairs Bottleneck Paths in Vertex Weighted Graphs

לסיכום

יש מספר מסקנות שימושיות, אם היה לנו עוד 1.זמן הייתי חופר גם עליהן...

כולם להתעורר2.

תודה על ההקשבה!!!3.

איחלתי לחייל הצלחה.4.

בברכה,5.

APBPצוות