All-Pairs Bottleneck Paths in Vertex Weighted Graphs
description
Transcript of 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
הערות – לפני שנתחיל
לשאול שאלות תוך כדי זה בסדר, לפי המקרא •הבא:
"מעניין באמת מה התשובה, כי שאלה מעניינת:1.לי אין מושג"
"הא הא! אני יודע מה התשובה!"שאלה טובה: 2.
"בואו נסתכל על השקף הבא..."שאלה מצויינת: 3.
אם יש מינוח/סימון לא ברור, תרגישו חופשי •1לשאול, אלא אם כן זה מקרה
הערות – לפני שנתחיל
הנחה היא שהקוד' תמיד ממויינים לפי משקל, •.W(Vi) ≤ W(Vi+1)ז"א
זה לא פוגע בסיבוכיות, כי בכל מקרה •הסיבוכיות המינ' היא ריבועית, ומיון לוקח
O(Vlog(V)).
יעזור בהמשך...•
? )הגדרות(APBPמה זה
היא w: V → R, כאשר G = (V, E, w)נתון גרף מכוון •.הקודקודיםפונ' משקולות על
capacity )המשקל הפוקק(, או ה- bottleneckה- •)קיבולת( של מסלול, הוא המשקל הנמוך ביותר
על אותו מסלול.את C(u, v) נסמן ב- u,vעבור שני קודקודים •
. v ל – uהקיבולת המקסימאלית על מסלול בין המסלולים בין כלאם נעבור על במילים אחרות: •
u -ל v ונבדוק מה הקיבולת של כל מסלול, אזי ,C(u,v) .יהיה הערך הכי גדול מבין הקיבולות
? )הגדרות(APBPמה זה
כמובן שאפשר להבין למה זה מעניין – בעיות •זרימה למיניהם...
וריאנטים מרכזיים:2יש •–Open-APBP : כאשר לא מתחשבים במשקולות של
(.W(u), W(v)קודקודי הקצה )לא מתחשבים ב- –Closed-APBP : ,מתחשבים במשקולות הקצה
.Ct(u, v) = W(v) או Ct(u, v) = W(u)כלומר ייתכן ו-
הבעיות שקולות 2 אחת מתוצאות המאמר:)סיבוכית(.
התוצאה המרכזית )"החלק החכם"(
Open-APBPאלגוריתם שמחשב מטריצת •.O(n ^ (2 + μ)) בזמן Closed-APBPומטריצת
, כאשר הוכח ש – μ + 2נשים לב שהחזקה היא •0.575> μ נובע מהקבוע של כפל מטריצות(
בוליאנות(לכן סה"כ האלג' פועל בסיבוכיות:•
O(n ^ 2.575) הגנרי μבכל מקרה אנחנו נשתמש בסימון •
עבור סיבוכיות האלגוריתם שלנו
מה בעצם באנו להוכיח? )פורמלי(
יש אלג' שפותר את במילים אחרות:APBP בגרף מכוון בסדר גודל זמן שלוקח
n Xלבצע כפל מטריצות בוליאניות בגודל n.
סקיצת ההוכחה
)מטריצת עדים MWBMM לחישובAמוצאים אלג' O(n ^ (2 + μ))מקסימאליים לכפל מטריצות בוליאניות( בזמן -
-Closed פותר את בעיית A', שע"י שימוש ב- Aבונים את APBP בגרפים מכוונים עבור אורך מסלול קבוע t תכנות(
דינאמי(
יוצרים אלג' "הפרד ומשול" רקורסיבי לפיתרון הבעיה הכללית, ' לפתרון שלבים בדרך Aכאשר נעשה שימוש ב-
MWBMMחישוב למעשה קיבלנו את החלק הזה ב"מתנה", שכן נתון לנו האלג'
הבא בתור קופסא שחורה:
Kowaluk & Lingas
מטריצות 2מטריצת עדים מקסימאלית )מע"מ( עבור כפל .O(n ^ (2 + μ)) ניתנת לחישוב בזמן - n X nבוליאניות
סקיצת ההוכחה
)מטריצת עדים MWBMM לחישובAמוצאים אלג' O(n ^ (2 + μ))מקסימאליים לכפל מטריצות בוליאניות( בזמן -
בגרפים APBP פותר את בעיית A', שע"י שימוש ב- Aבונים את )תכנות דינאמי(tמכוונים עבור אורך מסלול קבוע
יוצרים אלג' "הפרד ומשול" רקורסיבי לפיתרון הבעיה הכללית, ' לפתרון שלבים בדרך Aכאשר נעשה שימוש ב-
. רוצים u,v ושני קודקודים t נתון לנו אורך הבעיה:למצוא את המשקל הפוקק המקסימאלי על כל
, כאשר מסתכלים רק על v ל- uהמסלולים בין 1 )כל קשת מוסיפה tמסלולים שאורכם עד
לאורך המסלול – נזכור שהקשתות לא ממושקלות(.
.Ps, Qs ניעזר ב- הפתרון:
Ps(u,v) = 1 -אם יש מסלול מ u – ל v באורך s -לכל היותר, שבו ל v המשקל המינימאלי
(.0)אחרת
Qs(u,v) = 1 -אם יש מסלול מ u – ל v המשקל u לכל היותר, שבו ל- sבאורך
(.0המינימאלי )אחרת
? כן!!!(1תכנות דינאמי )אלג'
sנבנה את המטריצות מלמטה למעלה עבור כל הרעיון: , וזה לא "קשה" כי בכל שלב מתחשבים רק t ל - 0בין
בקצוות של מסלול מסוים, ובנוסף אפשר להיעזר התוצאות של השלב הקודם )שחישבנו כבר(.
בנייהנתון:
•A מטריצת שכנויות של – G•B :מטריצה בוליאנית שבה –
B(u,v) = 1 אם"ם w(u) >= w(v)
P0 = Q0 = I: 0מדרגה
: 1מדרגה •P1 = A ^ B.•Q1 = A ^ Bt.
בנייה )המשך(
: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.
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^μ).
הרעיון המרכזי
שהראינו מקודם, ניתן 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).
הוכחת הטענה המרכזית
:0תנאי
אם"ם v ל- u מ- tאין מסלול באורך חסום
Ws(u, v) = 0 עבור כל s.ז"א בכל המטריצות ,
-< במקרה זה תקף התנאי המיוחד שלנו, ו-
W(0) = Ct(u, v).
הוכחת הטענה המרכזית
: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|כאשר:
הוכחת הטענה המרכזית
)המשך(: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* .■
הוכחת הטענה המרכזית
:2כיוון
Ct(u, v), נראה שאכן *wנניח שהאלג' שלנו מחזיר = w*.
שעבורוy כלשהו, אזי קיים קוד' *wנניח שקיבלנו
W(y) = w* מסלולים: 2, וכן בהכרח יש שני
P1 = (u…y), P2 = (y…v) כך שאורך המסלול ,. tהכולל הוא לכל היותר
הוכחת הטענה המרכזית
)המשך(:2כיוון
המשקל y בהכרח ל- Ps, Qsבנוסף, ע"פ הגדרת .P, ולכן בכל P2 וגם ב- P1הנמוך ביותר ב-
■. *Ct(u, v) ≤ wמכאן ש-
סקיצת ההוכחה
)מטריצת עדים MWBMM לחישובAמוצאים אלג' O(n ^ (2 + μ))מקסימאליים לכפל מטריצות בוליאניות( בזמן -
בגרפים APBP פותר את בעיית A', שע"י שימוש ב- Aבונים את )תכנות דינאמי(tמכוונים עבור אורך מסלול קבוע
יוצרים אלג' "הפרד ומשול" רקורסיבי לפיתרון הבעיה הכללית, ' לפתרון שלבים בדרך Aכאשר נעשה שימוש ב-
APBPהנחות –
הנחות:
- V = {1..n} כאשר ,w(i) ≤ w(i+1) ז"א: הקודקודים .ממויינים לפי משקל.
-N 2 הוא חזקה של
הערה:
ההנחות הנ"ל לא משפיעות על סיבוכיות הזמן 2שלנו.
Uber Algorihm of Doom APBP-
APBP(V, E, w) לשני קבוצות:Vמחלקים את 1.
A = 1…n/2B = V\A המשלים של( A)
, ז"א B: הגרף המושרה ע"י Gb. נגדיר את 2. Aמעיפים קשתות שנוגעות בקוד' מ-
.Gb רקורסיבית על )(APBPנפעיל את
Uber Algorihm of Doom APBP-
קשת (u, v), כאשר Ga: Ga = {A, E2}. נגדיר את 3 שיש או, G אמ"ם היא קיימת כבר ב- E2ב-
הקוד' במסלול כל אשר v ל – uמסלול מ- נמצאים בתוך.
משאירים את הקשתות הרגילות )כמו גרף הרעיון:מושרה(, ומוסיפים "קיצור דרך" עבור קוד' שכל
.Bהמסלול שלהם היה ב- , כלומר בזמן O(n^ω) ניתן לבנות ב- Ga את הערה:
פולינומי כפי קבוע כפל מטריצות בוליאניות..Ga רקורסיבית על )(APBPנפעיל את
סיכום ביניים – מה עשינו עד עכשיו?
< -∞Cgb(u, v), אם קיבלנו B קוד' ב- 2עבור כל •.Cgb(u, v) = C(u, v)אזי בהכרח
.A, Cga(u, v) = C (u, v) קוד' ב- 2עבור כל •
אחלה בחלה, אז למה אנחנו עדיין פה?
כי נשארו עוד שלושה מקרים מיוחדים לבדוק, .B ו- Aה"תפר" בין קבוצות
B ל- Aה"תפר" בין
שלא חישבנו:C(u, v)יש שלושה מקרים של -AxB з (u,v)-BxA з (u,v)
מסלולים שתחילתם בקבוצה אחת וסופם ז"א: בקבוצה אחרת.
-BxB з (u,v) -ושעבורם קיבלנו ,Cgb(u,v)∞- = .
קוד' שייתכן שיש ביניהם מסלול, שהקוד' 2 ז"א:.Aשלו ב-
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או
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)!כבר ידוע לנו בשלב הזה
B ל- Aה"תפר" בין
נוסיף את u з A, v з Bולסיום הבנייה, עבור כל • )ב- v ל- u אם"ם יש מסלול מ- (u4, v5)הקשת
G -המקורי( שכל קודקודיו הפנימיים מ B. את כל הקשתות הנ"ל ניתן ליצור ב- הערה:
O(n^ω) זמן, ולכן זהו גם הזמן הדרוש ליצירת G’.
B ל- Aה"תפר" בין
ועכשיו הקסם:
לכל 4 חסום הם באורך ’Gכל המסלולים ב- נוכל כמובן לחשב t = 4היותר, ולכן אם נקבע
+ O(n ^ (2 )ע"י אלג' העזר שלנו( ב- APBPאת μ)).
הטענה היא שהמטריצה שהתקבלה, פותרת לנו את כל מקרי התפר שהזכרנו.
למה זה עובד?
, שיש ביניהם מסלול:u з B, v з A קוד' 2ניקח
נקרא Aלקוד' הראשון על המסלול בתוך קבוצה x ולקודקוד בעל המשקל הפוקק נקרא ,y:ז"א ,
C(u, v) = w(y) ,נשים לב שבפרט .y з A 'הקוד( ממויינים לפי משקל, זוכרים?(.
למה זה עובד?
, יש לנו שלושה קשתות:’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) ■
למה זה עובד?
באופן דומה:
, אזי נקבל ש:v з B, u з Aעבור הכיוון הפוך, ז"א: •
Cg’(u2, v5) = C(u, v) .
, = -∞Cgb(u, v) שעבורם u,v з Bעבור שני קוד' •
.C(u, v) = Cg’(u1, v5)נקבל ש-
סיבוכיות
אז ראינו את האלג' לפיתרון, אבל מה הסיבוכיות???
עיבוד רקורסיביות בחצי גודל +2פיתרון •:O(n ^ (2 + μ))שלוקח
•F(n) ≤ O(n ^ (2 + μ)) + 2F(n/2) .
זה יוצא )למי שזוכר בדידה...(:•
F(n) = O(n ^ (2 + μ)) ■
לסיכום
יש מספר מסקנות שימושיות, אם היה לנו עוד 1.זמן הייתי חופר גם עליהן...
כולם להתעורר2.
תודה על ההקשבה!!!3.
איחלתי לחייל הצלחה.4.
בברכה,5.
APBPצוות