Download presentation
Presentation is loading. Please wait.
1
חזרה חלקית על תרגול 12 גרף G=(V,E)
2 דרכים עיקריות לייצג גרף כמבנה נתונים: מטריצת סמיכויות מטריצה M בגודל |V|x|V| M[i,j]=1 אם יש קשת בין vi לvj בG, אחרת M[i,j]=0 רשימות סמיכויות מערך בגודל |V| התא הi מכיל רשימה משורשרת של השכנים של vi. כלומר, של כל הקודקודים vj כך ש (vi,vj)∈E
2
חזרה חלקית על תרגול 12
3
חזרה חלקית על תרגול 12
4
השלמה מתרגול 12 – שאלה 7 הגדרה: קודקוד בגרף מכוון נקרא super-sink אם דרגת היציאה שלו היא 0, ודרגת הכניסה שלו היא |V|-1 דוגמה:
5
השלמה מתרגול 12 – שאלה 7 נתון גרף מכוון G=(V,E) המיוצג בעזרת מטריצת סמיכויות. הציעו אלגוריתם שרץ בזמן O(|V|) המוצא האם קיים super-sink בגרף, ואם כן מחזיר אותו. רעיון: אם הקודקוד vi הוא super-sink, אז כל השורה שלו היא אפסים, וכל העמודה שלו (פרט לתא [i,i]) היא אחדות. i x x 1 x
6
השלמה מתרגול 12 – שאלה 7 פתרון:
זמן ריצה: הלולאה לוקחת לכל היותר (n+n) צעדים, ובדיקת כל השורה והעמודה לוקח 2n צעדים. סה"כ T(n)=O(n).
7
השלמה מתרגול 12 – שאלה 7 הדגמת פתרון: 8 7 6 5 4 3 2 1
8
השלמה מתרגול 12 – שאלה 7 הדגמת פתרון: 8 7 6 5 4 3 2 1
9
השלמה מתרגול 12 – שאלה 7 הדגמת פתרון: 8 7 6 5 4 3 2 1
10
השלמה מתרגול 12 – שאלה 7 הדגמת פתרון: 8 7 6 5 4 3 2 1
11
השלמה מתרגול 12 – שאלה 7 הדגמת פתרון: 8 7 6 5 4 3 2 1
12
השלמה מתרגול 12 – שאלה 7 הדגמת פתרון: 8 7 6 5 4 3 2 1
13
השלמה מתרגול 12 – שאלה 7 הדגמת פתרון: 8 7 6 5 4 3 2 1
14
השלמה מתרגול 12 – שאלה 7 הדגמת פתרון: 8 7 6 5 4 3 2 1
15
השלמה מתרגול 12 – שאלה 7 הדגמת פתרון: 8 7 6 5 4 3 2 1
16
השלמה מתרגול 12 – שאלה 7 הדגמת פתרון: 8 7 6 5 4 3 2 1
17
השלמה מתרגול 12 – שאלה 7 הדגמת פתרון: 8 7 6 5 4 3 2 1
18
השלמה מתרגול 12 – שאלה 7 הדגמת פתרון: 8 7 6 5 4 3 2 1
19
השלמה מתרגול 12 – שאלה 7 הדגמת פתרון: למה?
8 7 6 5 4 3 2 1 למה? v6 מועמד יחיד להיות super-sink.
20
השלמה מתרגול 12 – שאלה 7 הדגמת פתרון: v6 אכן super-sink 8 7 6 5 4 3 2
v6 אכן super-sink
21
השלמה מתרגול 12 – שאלה 7 פתרון:
זמן ריצה: הלולאה לוקחת לכל היותר (n+n) צעדים, ובדיקת כל השורה והעמודה לוקח 2n צעדים. סה"כ T(n)=O(n).
22
Topological Sort Amortized Analysis
תרגול 13 Topological Sort Amortized Analysis
23
מיון טופולוגי Topological-Sort
Ordering of vertices in a directed acyclic graph (DAG) G=(V,E) such that if there is a path from v to u in G, then v appears before u in the ordering. There could be many solutions, for example: call DFS to compute f[v] As the visit in each vertex is finished (blackened), insert it to the head of a linked list Return the linked list of the vertices Time Complexity: O(|V|+|E|)
24
מיון טופולוגי הדגמה: מיון: מיון אחר: v1 v4 v2 v3 v6 v5 v1 v2 v4 v5 v3
25
שאלה 1 נתונות 2 רשימות הציעו 2 אלגוריתמים, לבניית מערכת עבור
רשימה A של קורסים נדרשים לתואר רשימה B של קדימויות, המכילה זוגות סדורים (x,y), שמציין שקורס x קדם של קורס y. הקדימויות הן ללא מעגלים. הציעו 2 אלגוריתמים, לבניית מערכת עבור סטודנט עצלן שרוצה ללמוד רק קורס אחד בסמסטר סטודנט חרוץ שרוצה לסיים את כל הקורסים מוקדם ככל האפשר, ומוכן ללמוד את כל הקורסים שאפשר במקביל.
26
שאלה 1 דוגמה: { Alg, Eng, Ds1, Ds2, Mat, Ph1, Ph2 } = A
= B { (Alg, Ds2), (Ds1, Ds2), (Mat, Ds1), (Ph1, Ph2) }
27
שאלה 1 פתרון לסטודנט עצלן: נסתכל על הרשימות כגרף מכוון, כאשר הקורסים הינם הקודקודים והקדימויות הינם הצלעות. נמיין את הגרף טופולוגית, ואז נעבור עליו לפי הסדר, וכל קורס יהיה בסמסטר.
28
שאלה 1 פתרון לסטודנט עצלן, דוגמה: Mat Alg Ds1 Ds2 Ph1 Ph2 Eng 1 2 3 4
5 6 7
29
שאלה 1 אלגוריתם חלופי למיון טופולוגי:
נעבור על הקודקודים ונשמור את דרגת הכניסה שלהם – O(|V|+|E|) ניצור רשימה של כל הקודקודים עם דרגת כניסה 0 – O(|V|) בלולאה: עוברים על כל הקודקודים בדרגת כניסה 0, מכניסים אותם לרשימת המיון הטופולוגי, ומורידים 1 מכל השכנים שלהם, תוך כדי יצירת רשימה חדשה של קודקודים עם דרגה 0 O(d(v)) לכל קודקוד, לכן סה"כ לכל הלולאה – O(|V|+|E|)
30
שאלה 1 אלגוריתם חלופי למיון טופולוגי, הדגמה: תוצאה:
31
שאלה 1 אלגוריתם חלופי למיון טופולוגי, הדגמה: תוצאה: סיבוב 0:
Eng Mat Alg 1 Ds1 2 Ds2 Ph1 Ph2 1 סיבוב 0: קודקודים עם דרגת כניסה 0: Eng Alg Mat Ph1 תוצאה:
32
שאלה 1 אלגוריתם חלופי למיון טופולוגי, הדגמה: תוצאה: סיבוב 1:
Eng Mat Alg Ds1 1 Ds2 Ph1 Ph2 סיבוב 1: קודקודים עם דרגת כניסה 0: Ds1 Ph2 תוצאה: Eng Alg Mat Ph1
33
שאלה 1 אלגוריתם חלופי למיון טופולוגי, הדגמה: תוצאה: סיבוב 2:
Eng Mat Alg Ds1 Ds2 Ph1 Ph2 סיבוב 2: קודקודים עם דרגת כניסה 0: Ds2 תוצאה: Eng Alg Mat Ph1 Ds1 Ph2
34
שאלה 1 אלגוריתם חלופי למיון טופולוגי, הדגמה: תוצאה: Eng Mat Alg Ds1
Eng Mat Alg Ds1 Ds2 Ph1 Ph2 תוצאה: Eng Alg Mat Ph1 Ds1 Ph2 Ds2
35
שאלה 1 פתרון לסטודנט החרוץ: נבצע את המיון הטופולוגי הנ"ל, כך שאת כל הקודקודים עם דרגת כניסה 0 בסיבוב הi- נכניס לסמסטר הi+1.
36
שאלה 2 נתון DAG (directed acyclic graph - גרף מכוון ללא מעגלים), בו כל הצלעות ממושקלות. הציעו אלגוריתם בזמן O(|V|+|E|) למציאת המשקל של המסלול עם המשקל המקסימלי. דוגמה: 1 6 3 5 2 10 המשקל המקסימלי של מסלול כלשהו בגרף הוא 13 4 8
37
A[i] = max{A[j]+w(vj,vi) : (vj,vi)E }
שאלה 2 נתון DAG (directed acyclic graph - גרף מכוון ללא מעגלים), בו כל הצלעות ממושקלות. הציעו אלגוריתם בזמן O(|V|+|E|) למציאת המשקל של המסלול עם המשקל המקסימלי. רעיון הפתרון: נמיין את הגרף טופולוגית, ואז בכל קודקוד, המשקל המקסימלי של מסלול עד אליו הוא המקסימום של {המשקל המקסימלי של מסלול עד קודקוד עם קשת אליו + משקל הקשת} A[i] = max{A[j]+w(vj,vi) : (vj,vi)E }
38
שאלה 2 פתרון: נמיין את G טופולוגית – O(|V|+|E|). נסמן את המיון כ{v1,…,vn} לכל קודקוד v נבנה רשימה של in-vertices, כלומר קודקודים u כך ש(u,v)∈E – O(|V|+|E|) נגדיר מערך A בגודל |V|, כך שבסיום יתקיים A[i] = משקל המסלול הכבד ביותר המסתיים בvi עבור i מ1 עד n נחשב A[i]=max{A[j]+w(vj,vi)|(vj,vi)∈E} (נשים לב שכיוון שמיינו טופולוגית, כל הA[j] הרלוונטיים כבר חושבו כאשר נרצה לחשב את A[i]) נחזיר את max{A[1],…,A[n]} – O(|V|)
39
שאלה 2 הדגמת פתרון: v2 1 v1 6 A 3 5 v5 2 10 1 v4 v3 2 1 3 5 4 8 v6 4 4 5 7 v1 v2 v3 v4 v5 v6 1 2 4 5 10 3 8 6 6 13 כיצד ניתן לשנות את האלגוריתם כך שגם יחזיר את המסלול הכבד ביותר?
40
שאלות נוספות נתון גרף מכוון G=(V,E) המיוצג בעזרת רשימות סמיכויות. הציעו אלגוריתם שרץ בזמן O(|V|) המוצא מועמד יחיד v להיות super-sink – כלומר, או ש v הוא super-sink, או שאין super-sink. הוכיחו או הפריכו: אם G=(V,E) הוא DAG, ו v הוא super-sink בG, אז בכל מיון טופולוגי של G, v נמצא אחרון. הוכיחו או הפריכו: אם G=(V,E) הוא DAG, ולv1 יש יותר צלעות נכנסות ופחות צלעות יוצאות מv2, אז v1 בא אחרי v2 בכל מיון טופולוגי של G. נכון או לא נכון: אם לG=(V,E) יש מיון טופולוגי {v1,…,vn} אז קיימת סריקת DFS שמחזירה את המיון הזה. נכון או לא נכון: אותה שאלה עם האלגוריתם החלופי למציאת מיון טופולוגי.
41
ניתוח פחת –Amortized Analysis
הכוונה למציאת זמן הריצה הממוצע לפעולה עבור סדרת הפעולות הגרועה ביותר. בניתוח פחת אין שימוש בהסתברות. בניתוח פחת נרצה להראות שבכל סדרה אפשרית של פעולות, בממוצע כל פעולה היא מהירה, גם אם חלק מהפעולות הן איטיות. 2 שיטות אפשריות לניתוח פחת: ניתוח הסכימה: מוצאים חסם עליון על הסכום האפשרי לn פעולות, T(n), ומחלקים את החסם בn. שיטת התשלומים: מגדירים "תשלום" לכל פעולה. פעולות זולות המופיעות יותר מקבלות תשלום עודף, כך שכאשר מגיעה פעולה יקרה, כבר חסכנו מספיק על מנת להפעיל אותה.
42
שאלה 3 מה סיבוכיות זמן ריצה של מונה? נתון: מונה ביטים A – מערך ביטים באורך m. צריך לנתח בניתוח פחת, את מס' ה-bit flips, בשיטת הסכימה והתשלומים. הניחו כי הערך ההתחלתי של המונה הוא 0. increment(A[0…m-1]) i 0 while i < m and A[i] = 1 A[i]0 ii + 1 if i < m A[i]1
43
שאלה 3 - דוגמה 5 1 1 6 1 1 2 7 1 1 3 8 1 1 4 9 1 1 increment(A[0…m-1]) i 0 while i < m and A[i] = 1 A[i]0 ii + 1 if i < m A[i]1
44
שאלה 3 - פתרון מה סיבוכיות זמן ריצה של מונה? נתון: מונה ביטים A – מערך ביטים באורך m. צריך לנתח בניתוח פחת, את מס' ה-bit flips, בשיטת הסכימה והתשלומים. הניחו כי הערך ההתחלתי של המונה הוא 0. שיטת הסכימה נניח כי ביצענו nפעולות increment A[0] flips every increment for n flips. A[1] flips every 2nd time for <= n/2 flips. A[2] flips every 4th time for <= n/4 flips. A[i] flips every 2ith time for <= n/2^i flips. Number of flips <= n +n/2+n/4+...=2n = O(n) Therefore amortized cost of each operation is 2 = O(1)
45
שאלה 3 - פתרון מה סיבוכיות זמן ריצה של מונה? נתון: מונה ביטים A – מערך ביטים באורך m. צריך לנתח בניתוח פחת, את מס' ה-bit flips, בשיטת הסכימה והתשלומים. הניחו כי הערך ההתחלתי של המונה הוא 0. שיטת התשלומים נניח כי ביצענו nפעולות increment Increment עושה flip בדיוק לביט אחד מ-0 ל-1. נצרף 2 אסימונים לביט ששינינו מ-0 ל1. יישאר אסימון אחד "ספייר" כדי לשנות ביט זה בחזרה מ-1 ל-0. כל flip משולם עם אסימון – מס' האסימונים סה"כ <= 2n. כל פעולה עולה לנו O(1) בממוצע.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.