שאלה - Algorithms
Download
Report
Transcript שאלה - Algorithms
APSP - 7 תרגול
b
c
a
d
e
1
שאלה – 1מספר זוגי של קשתות אדומות
תרגיל :נתון גרף מכוון ) ,G (V , Eפונקציית משקל
, w : E Rוכל קשת בגרף צבועה בכחול או באדום.
בנוסף ,ידוע שאין מעגלים שליליים בגרף .תארו אלג'
למציאת המק"בים בין כל זוג קודקודים בגרף ,מבין
המסלולים שמכילים מספר זוגי של קשתות אדומות.
e
5
1
a
8
f
3
2
b
1
d
4
9
5
c
– דוגמא1 שאלה
e
1
5
1
d
4
9
a
8
f
3
5
c
b
a ~ e : a e f a e 19
b ~ a : b a 3
e ~ b : e f a e f c b 24
3
שאלה – 1פתרון 1#
בדומה לפתרון של שבוע שעבר ,נבנה גרף חדש ,בו כל
קודקוד מוכפל לשניים ,וקשתות מוכפלות גם כן.
על הגרף החדש נריץ
את האלגוריתם של
.Johnson
4
ue
uo
u
ve
vo
v
ue
uo
u
ve
vo
v
שאלה – 1פתרון 1#
סיבוכיות:
הרצת Johnsonעל גרף עם | 2 | Vקודקודים
ו 2 | E | -קשתות:
)| O(|V | log | V | | V || E
2
5
שאלה – 1פתרון 2#
•נשנה את האלגוריתם של : Floyd-Warshall
0
1
n
•באלג' בונים סדרה של מטריצות , D , D ,...,D
כך שהמטריצה Dk מתאימה למק"בים מבין
המסלולים שעוברים רק דרך קודקודים מהקבוצה
}.{1,...,k
k
D
נבנה באופן הבא:
•איבר במטריצה
k 1
k 1
di , j min di , j , di,k dk , j
קיים מסלול קל יותר שעובר דרך .k
6
k 1
k
שימוש ב k -אינו עוזר לנו.
שאלה – 1פתרון 2#
נשנה את האלג' של FWכך שיבנה שתי סדרות של
מטריצות:
◦ , E 0 , E 1 ,...,E n עבור המק"בים מבין המסלולים
המכילים מספר זוגי של קשתות אדומות.
◦ , O0 , O1 ,...,On עבור המק"בים מבין המסלולים
המכילים מספר אי-זוגי של קשתות אדומות.
◦ (המטריצות E k , Ok מתאימות למק"בים מבין המסלולים
שעוברים רק דרך קודקודים מהקבוצה }) .{1,...,k
7
2# – פתרון1 שאלה
: חישוב המטריצות
ei,kj1
k 1 k 1
k
ei , j minei ,k ek , j
k 1
k 1
oi ,k ok , j
oi,kj1
k 1 k 1
k
oi , j minoi ,k ek , j
k 1
k 1
ei ,k ok , j
8
שאלה – 1סיבוכיות
חישוב איבר בודד O(1) -
חישוב מטריצה שלמה O(| V |2 ) -
חישוב כל המטריצות O(| V |3 ) -
9
?עצרו! מה שכחנו
! פעמייםk -אנו מתעלמים ממסלולים שעוברים ב
ei,kj1
k 1 k 1
k
ei , j minei ,k ek , j
k 1
k 1
o
o
i ,k
k, j
k 1
k 1
k 1
oi ,k ok ,k ek , j
k 1
k 1
k 1
e
o
o
k ,k
k, j
i ,k
10
וגם
k 1
oi , j
k 1 k 1
k
oi , j minoi ,k ek , j
k 1
k 1
ei ,k ok , j
k 1
k 1
k 1
oi ,k ok ,k ok , j
k 1
k 1
k 1
e
o
e
k ,k
k, j
i ,k
11
הערת ביניים (סגור טרנזיטיבי)
• Transitive closureשל גרף הוא ייצוג של הגעתיות
) .(reachabilityלרוב זה ייוצג ע"י מטריצה Aכך ש:
קיים מסלול מ i -ל j -בגרף.
ai , j 1
• האלגוריתם של Stephen Warshallמוגדר על
גרף לא ממושקל ,ונועד לחשב סגור טרזיטיבי.
• Robert Floydשם לב שבקלות ניתן לשנות את
האלגוריתם של Warshallכך שיחשב מק"בים.
12
המשך הערת ביניים
? עושהWarshall • מה האלגוריתם של
"במקום" לחשב (על גרף ממושקל) את
k
k 1
k 1
k 1
di , j min di , j , di,k dk , j
הוא מחשב (על גרף בוליאני) את
k
k 1
k 1
k 1
di, j di, j , di,k dk , j
13
שאלה 2
תרגיל :נתון גרף מכוון ) G (V , Eומספר שלם
} .m {1,2,...,V 1תארו אלג' אשר בודק לכל זוג
קודקודים v, u Vהאם קיים הילוך באורך mמu -
ל( v -ההילוך לא חייב להיות פשוט ויכול לעבור
דרך קשת יותר מפעם אחת).
מה הפתרון עבור ? m 1
14
– דוגמא2 שאלה
נסתכל על הילוכים
: עבורb - לa -מ
m 1
m2
m3
m4
b
c
a
d
e
a d eb
a d c eb
15
שאלה – 2פתרון
תהי Aמטריצת השכנויות של הגרף:
1, (i, j ) E
ai , j
אחרת
0,
0 0 1 0
0 1 0 0
0 0 0 1
0 1 0 1
1 0 0 0
16
0
1
0
0
1
b
c
a
e
d
שאלה – 2פתרון
נחשב את A mביחס לכפל בוליאני של מטריצות.
מכפלה בוליאנית של מטריצות A B Cמוגדרת כך:
ci , j ai ,k bk , j
1
n
k 1
2
0 0 1 0 0 1 0 1 0
1 0 1 1 0 1 0 1 1
0 1 0 0 1 0 1 0 1
17
C
B
A
3
שאלה – 2הוכחת נכונות
• נוכיח שהאלגוריתם נכון באינדוקציה על . m
•בסיס האינדוקציה :כאשר , m 1נקבל . A Amאכן,
קיים הילוך באורך 1אם"ם קיימת קשת בין שני הקודקודים.
•צעד האינדוקציה :נניח שהאלג' נכון עבור m 1ונוכיח
שהוא נכון עבור . mנרצה להוכיח שקיים הילוך באורך m
מקודקוד iלקודקוד jאם"ם . aim, j 1
18
שאלה – 2הוכחת הכיוון הראשון
נניח שקיים הילוך באורך mמ i -ל j -ונוכיח
שמתקיים : aim, j 1
◦
◦
◦
◦
נסמן את הקשת האחרונה במסלול הנ"ל כ .(l , j ) -כלומר,
קיים הילוך באורך m 1מ i -ל.l -
לפי הנחת האינדוקציה ,מתקיים .aim,l1 1
מקיום הקשת ) (l , jנובע .al , j 1
m1
מהנקודות הקודמת ,מתקיים , ai,l al , j 1ולכן
.a aim,k1 ak , j 1
n
k 1
19
m
i, j
שאלה – 2הוכחת הכיוון השני
נניח שמתקיים
מ i -ל: j -
aim, j 1
ונוכיח שקיים הילוך באורך m
◦ מההנחה ,קיים lשעבורו מתקיים . aim,l1 al , j 1כלומרaim,l1 1 ,
וגם ( .al , j 1אחרת .) aim, j 0
◦ מהנחת האינדוקציה ,קיים הילוך באורך m 1מ i -ל. l -
◦ מהגדרת מטריצת השכנויות ,קיימת בגרף קשת ) .(l , j
◦ אם נחבר את הקשת וההילוך הנ"ל ,נקבל הילוך באורך mמi -
ל. j -
20
שאלה – 2זמן ריצה
מחשבים m 1מטריצות ,כל אחת עם Vתאים.
חישוב של תא לוקח OV זמן.
3
סך הכל ,סיבוכיות זמן הריצה של האלג' הינה .O V m
2
21
שאלה – 2שיפור זמן ריצה
בדומה למה שראינו בשיעור ,במקום שבכל שלב נכפיל
את המטריצה הנוכחית ב , A -נכפיל אותה בעצמה.
נחשב את הסידרה , A, A2 , A4 ,..., Ak Amולאחר מכן נוכל
להשתמש בה לחישוב . A m
לדוגמא – . A43 A A2 A8 A32
אחרי השיפור ,מבצעים ) O(logmפעולות כפל.
3
זמן הריצה יורד ל.O V log m -
22
שאלה – 2.1כפל לא בוליאני
מה יקרה אם נשתמש באלגוריתם מהשאלה הקודמת ,אך
1
עם כפל סטנדרטי של מטריצות?
דהיינו
ci , j ai ,k bk , j
n
2
k 1
0 0 1 0 0 1 0 1 0
1 1 1 1 1 1 1 2 2
0 1 0 0 1 0 1 1 1
23
C
B
A
3
שאלה – 2.1פתרון
m
m
A
a
שאלה :מה משמעות הערך בתא i , jשל המטריצה ?
1
טענה :זהו מספר ההילוכים באורך mמ i -ל. j -
2
0 0 1 0 0 1 0 1 0
1 1 1 1 1 1 1 2 2
0 1 0 0 1 0 1 1 1
24
C
B
A
3
שאלה – 2.1הוכחה
נוכיח את הטענה באינדוקציה על : m
◦ בסיס האינדוקציה :במקרה של m 1בין כל זוג קודקודים יש לכל היותר
הילוך אחד ,והוא קיים אם ורק אם קיימת קשת מתאימה .לכן ,הטענה
מתקיימת.
◦ נניח שהטענה נכונה עבור m 1ונוכיח אותה עבור .mנבחן איבר של
המטריצה:
n
aim, j aim,k1 ak , j
k 1
◦ מהנחת האינדוקציה aim,k1 ,הינו מספר ההילוכים באורך m 1מ i -ל.k -
כלומר ,האיבר ה- k -י בסכום הינו מספר ההילוכים באורך mמ i -לj -
שהצומת הלפני-אחרון בהם הינו .k
25
חידת הכנה ( )2לתכנות דינאמי
עידו עומד מול בניין בן 100קומות .יש לו 2מנורות
זהות שמכילות ג'יני כל אחת .אם הוא זורק מנורה
מהקומה הנכונה ,היא נפתחת ,הג'יני יוצא לחופשי,
והוא יכול להביע משאלה.
אם הוא זורק מנורה מקומה נמוכה מדי ,לא קורה לה
כלום ,והוא יכול לזרוק אותה שוב .אם הוא זורק מנורה
מקומה גבוהה מדי ,המנורה נשברת (ואי אפשר
להשתמש בה שוב) ,והג'יני מתעצבן ולא מקיים
משאלות.
לכמה זריקות זקוק עידו לפני שיוכל לבקש משאלה?
27