חזרה חלקית על תרגול 12 • גרף ) G=(V,E • – V קודקודי הגרף • – E צלעות הגרף • 2 דרכים עיקריות לייצג גרף.
Download
Report
Transcript חזרה חלקית על תרגול 12 • גרף ) G=(V,E • – V קודקודי הגרף • – E צלעות הגרף • 2 דרכים עיקריות לייצג גרף.
חזרה חלקית על תרגול 12
• גרף )G=(V,E
• – Vקודקודי הגרף
• – Eצלעות הגרף
• 2דרכים עיקריות לייצג גרף כמבנה נתונים:
.1מטריצת סמיכויות
•
•
מטריצה Mבגודל ||V|x|V
M[i,j]=1אם יש קשת בין viל vjב ,Gאחרת M[i,j]=0
.2רשימות סמיכויות
•
•
מערך בגודל ||V
התא ה iמכיל רשימה משורשרת של השכנים של .vi
כלומר ,של כל הקודקודים vjכך ש (vi,vj)∈E
חזרה חלקית על תרגול 12
חזרה חלקית על תרגול 12
השלמה מתרגול – 12שאלה 7
• הגדרה :קודקוד בגרף מכוון נקרא super-sinkאם
דרגת היציאה שלו היא ,0ודרגת הכניסה שלו היא
|V|-1
• דוגמה:
השלמה מתרגול – 12שאלה 7
• נתון גרף מכוון ) G=(V,Eהמיוצג בעזרת מטריצת
סמיכויות .הציעו אלגוריתם שרץ בזמן )|O(|V
המוצא האם קיים super-sinkבגרף ,ואם כן מחזיר
אותו.
רעיון :אם הקודקוד viהוא ,super-sinkאז כל השורה
שלו היא אפסים ,וכל העמודה שלו (פרט לתא ])[i,i
i
היא אחדות.
xx1x
xx1x
i 0000
xx1x
7 – שאלה12 השלמה מתרגול
SuperSink(M,n)
1. i=0, j=0, n=|V|.
2. while (j<n)
if j=i or M[i,j]=0 // v j can’t be a super-sink
jj+1
if M[i,j]=1
// vi can’t be a super-sink
ii+1
3. check row i – it should be all zeros, // vi is a candidate
4. check column i – it should be all ones, except M[i,i].
5. if both conditions hold, then i is a super-sink.
6. otherwise, there is no super-sink.
:• פתרון
,( צעדיםn+n) הלולאה לוקחת לכל היותר:• זמן ריצה
סה"כ. צעדים2n ובדיקת כל השורה והעמודה לוקח
.T(n)=O(n)
השלמה מתרגול – 12שאלה 7
• הדגמת פתרון:
8
7
6
5
4
3
2
1
1
2
3
4
5
6
7
8
השלמה מתרגול – 12שאלה 7
• הדגמת פתרון:
8
7
6
5
4
3
2
0
1
1
2
3
4
5
6
7
8
השלמה מתרגול – 12שאלה 7
• הדגמת פתרון:
8
7
6
5
4
3
2
1
0
1
1
2
3
4
5
6
7
8
השלמה מתרגול – 12שאלה 7
• הדגמת פתרון:
8
7
6
5
4
3
2
1
0
0
1
1
2
3
4
5
6
7
8
השלמה מתרגול – 12שאלה 7
• הדגמת פתרון:
8
7
6
5
4
0
3
2
1
0
0
1
1
2
3
4
5
6
7
8
השלמה מתרגול – 12שאלה 7
• הדגמת פתרון:
8
7
6
5
4
0
0
3
2
1
0
0
1
1
2
3
4
5
6
7
8
השלמה מתרגול – 12שאלה 7
• הדגמת פתרון:
8
7
6
5
4
1
0
0
3
2
1
0
0
1
1
2
3
4
5
6
7
8
השלמה מתרגול – 12שאלה 7
• הדגמת פתרון:
8
7
6
5
4
1
0
0
1
3
2
1
0
0
1
1
2
3
4
5
6
7
8
השלמה מתרגול – 12שאלה 7
• הדגמת פתרון:
8
7
6
5
4
1
0
0
3
2
1
0
0
1
1
2
1
3
1
4
5
6
7
8
השלמה מתרגול – 12שאלה 7
• הדגמת פתרון:
8
7
6
5
4
1
0
0
3
2
1
0
0
1
1
2
1
3
1
4
1
5
6
7
8
השלמה מתרגול – 12שאלה 7
• הדגמת פתרון:
8
7
6
5
4
1
0
0
3
2
1
0
0
1
1
2
1
3
1
4
1
5
6
7
8
השלמה מתרגול – 12שאלה 7
• הדגמת פתרון:
8
7
0
6
5
4
1
0
0
3
2
1
0
0
1
1
2
1
3
1
4
1
5
6
7
8
השלמה מתרגול – 12שאלה 7
• הדגמת פתרון:
8
7
0
0
6
5
4
1
0
0
3
2
1
0
0
1
1
2
1
3
1
4
1
5
6
7
8
v6מועמד יחיד להיות .super-sinkלמה?
השלמה מתרגול – 12שאלה 7
• הדגמת פתרון:
8
7
0
0
6
5
4
1
1
0
0
3
2
1
0
1
1
0
2
1
3
1
4
1
5
0
0
0
0
0
0
6
1
7
1
8
v6אכן super-sink
7 – שאלה12 השלמה מתרגול
SuperSink(M,n)
1. i=0, j=0, n=|V|.
2. while (j<n)
if j=i or M[i,j]=0 // v j can’t be a super-sink
jj+1
if M[i,j]=1
// vi can’t be a super-sink
ii+1
3. check row i – it should be all zeros, // vi is a candidate
4. check column i – it should be all ones, except M[i,i].
5. if both conditions hold, then i is a super-sink.
6. otherwise, there is no super-sink.
:• פתרון
,( צעדיםn+n) הלולאה לוקחת לכל היותר:• זמן ריצה
סה"כ. צעדים2n ובדיקת כל השורה והעמודה לוקח
.T(n)=O(n)
13 תרגול
Topological Sort
Amortized Analysis
מיון טופולוגי
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:
Topological call DFS to compute f[v]
As the visit in each vertex is finished
-Sort
(blackened), insert it to the head of a linked
list
Return the linked list of the vertices
1.
2.
3.
Time Complexity: O(|V|+|E|)
מיון טופולוגי
v2
הדגמה:
v5
v1
v4
v3
v6
מיון:
מיון אחר:
v6
v3
v5
v4
v2
v1
6
5
4
3
2
1
v6
v5
v4
v3
v2
v1
6
5
4
3
2
1
שאלה 1
• נתונות 2רשימות
.1רשימה Aשל קורסים נדרשים לתואר
.2רשימה Bשל קדימויות ,המכילה זוגות סדורים ),(x,y
שמציין שקורס xקדם של קורס .yהקדימויות הן ללא
מעגלים.
• הציעו 2אלגוריתמים ,לבניית מערכת עבור
– סטודנט עצלן שרוצה ללמוד רק קורס אחד בסמסטר
– סטודנט חרוץ שרוצה לסיים את כל הקורסים מוקדם
ככל האפשר ,ומוכן ללמוד את כל הקורסים שאפשר
במקביל.
1 שאלה
:דוגמה
{ Alg, Eng, Ds1, Ds2, Mat, Ph1, Ph2 } = A
{ (Alg, Ds2), (Ds1, Ds2), (Mat, Ds1), (Ph1, Ph2) } = B
Optional output for student no. 1:
Semester 1: Eng
Semester 2: Mat
Semester 3: Alg
Semester 4: Ds1
Semester 5: Ds2
Semester 6: Ph1
Semester 7: Ph2
Optional output for student no. 2:
Semester 1: Eng, Mat, Ph1, Alg
Semester 2: Ds1, Ph2
Semester 3: Ds2
שאלה 1
פתרון לסטודנט עצלן:
נסתכל על הרשימות כגרף מכוון ,כאשר הקורסים
הינם הקודקודים והקדימויות הינם הצלעות.
נמיין את הגרף טופולוגית ,ואז נעבור עליו לפי הסדר,
וכל קורס יהיה בסמסטר.
שאלה 1
פתרון לסטודנט עצלן ,דוגמה:
Ph2
Ph1
Ds2
Ds1
Alg
Mat
Eng
7
6
5
4
3
2
1
שאלה 1
אלגוריתם חלופי למיון טופולוגי:
.1נעבור על הקודקודים ונשמור את דרגת הכניסה
שלהם – )|O(|V|+|E
.2ניצור רשימה של כל הקודקודים עם דרגת כניסה – 0
)|O(|V
.3בלולאה:
– עוברים על כל הקודקודים בדרגת כניסה ,0מכניסים
אותם לרשימת המיון הטופולוגי ,ומורידים 1מכל השכנים
שלהם ,תוך כדי יצירת רשימה חדשה של קודקודים עם
דרגה 0
•
)) O(d(vלכל קודקוד ,לכן סה"כ לכל הלולאה – )|O(|V|+|E
שאלה 1
אלגוריתם חלופי למיון טופולוגי ,הדגמה:
תוצאה:
שאלה 1
אלגוריתם חלופי למיון טופולוגי ,הדגמה:
סיבוב :0
קודקודים עם דרגת כניסה :0
תוצאה:
Ph1
Mat
Alg
Eng
שאלה 1
אלגוריתם חלופי למיון טופולוגי ,הדגמה:
סיבוב :1
קודקודים עם דרגת כניסה :0
תוצאה:
Ph2
Ph1
Mat
Ds1
Alg
Eng
שאלה 1
אלגוריתם חלופי למיון טופולוגי ,הדגמה:
סיבוב :2
קודקודים עם דרגת כניסה :0
תוצאה:
Ph2
Ds1
Ds2
Ph1
Mat
Alg
Eng
שאלה 1
אלגוריתם חלופי למיון טופולוגי ,הדגמה:
תוצאה:
Ds2
Ph2
Ds1
Ph1
Mat
Alg
Eng
שאלה 1
פתרון לסטודנט החרוץ:
נבצע את המיון הטופולוגי הנ"ל ,כך שאת כל
הקודקודים עם דרגת כניסה 0בסיבוב ה i-נכניס
לסמסטר ה.i+1
שאלה 2
• נתון - directed acyclic graph( DAGגרף מכוון
ללא מעגלים) ,בו כל הצלעות ממושקלות .הציעו
אלגוריתם בזמן )| O(|V|+|Eלמציאת המשקל של
המסלול עם המשקל המקסימלי.
1
דוגמה:
6
המשקל המקסימלי של
מסלול כלשהו בגרף הוא 13
3
2
5
10
4
8
שאלה 2
• נתון - directed acyclic graph( DAGגרף מכוון
ללא מעגלים) ,בו כל הצלעות ממושקלות .הציעו
אלגוריתם בזמן )| O(|V|+|Eלמציאת המשקל של
המסלול עם המשקל המקסימלי.
• רעיון הפתרון :נמיין את הגרף טופולוגית ,ואז בכל
קודקוד ,המשקל המקסימלי של מסלול עד אליו
הוא המקסימום של {המשקל המקסימלי של מסלול
עד קודקוד עם קשת אליו +משקל הקשת}
} A[i] = max{A[j]+w(vj,vi) : (vj,vj)E
שאלה 2
פתרון:
.1
.2
.3
.4
.5
נמיין את Gטופולוגית – )| .O(|V|+|Eנסמן את המיון
כ }{v1,…,vn
לכל קודקוד vנבנה רשימה של ,in-verticesכלומר
קודקודים uכך ש O(|V|+|E|) – (u,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
נחזיר את }]O(|V|) – max{A[1],…,A[n
שאלה 2
הדגמת פתרון:
v2
6
A
0
1
5
4
7
13
1
1
v1
3
5
2
v5
v4
2
3
10
v3
4
4
v6
5
8
6
10
6
v6
4
v5
8
2
v4
3
5
v3
v2
1
v1
כיצד ניתן לשנות את האלגוריתם כך שגם יחזיר את המסלול הכבד ביותר?
שאלות נוספות
•
•
•
•
•
נתון גרף מכוון ) G=(V,Eהמיוצג בעזרת רשימות סמיכויות.
הציעו אלגוריתם שרץ בזמן )| O(|Vהמוצא מועמד יחיד v
להיות – super-sinkכלומר ,או ש vהוא ,super-sinkאו
שאין .super-sink
הוכיחו או הפריכו :אם ) G=(V,Eהוא ,DAGו vהוא
super-sinkב ,Gאז בכל מיון טופולוגי של v ,Gנמצא אחרון.
הוכיחו או הפריכו :אם ) G=(V,Eהוא ,DAGול v1יש יותר
צלעות נכנסות ופחות צלעות יוצאות מ ,v2אז v1בא אחרי v2
בכל מיון טופולוגי של .G
נכון או לא נכון :אם ל) G=(V,Eיש מיון טופולוגי } {v1,…,vnאז
קיימת סריקת DFSשמחזירה את המיון הזה.
נכון או לא נכון :אותה שאלה עם האלגוריתם החלופי
למציאת מיון טופולוגי.
ניתוח פחת – Amortized Analysis
הכוונה למציאת זמן הריצה הממוצע לפעולה עבור סדרת
הפעולות הגרועה ביותר .בניתוח פחת אין שימוש בהסתברות.
בניתוח פחת נרצה להראות שבכל סדרה אפשרית של פעולות,
בממוצע כל פעולה היא מהירה ,גם אם חלק מהפעולות הן
איטיות.
2שיטות אפשריות לניתוח פחת:
.1ניתוח הסכימה :מוצאים חסם עליון על הסכום האפשרי לn
פעולות ,T(n) ,ומחלקים את החסם ב.n
.2שיטת התשלומים :מגדירים "תשלום" לכל פעולה .פעולות
זולות המופיעות יותר מקבלות תשלום עודף ,כך שכאשר
מגיעה פעולה יקרה ,כבר חסכנו מספיק על מנת להפעיל
אותה.
Amortized Analysis – ניתוח פחת
)DOCX-)שאלות במסמך ה