חזרה חלקית על תרגול 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
jj+1
if M[i,j]=1
// vi can’t be a super-sink
ii+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
jj+1
if M[i,j]=1
// vi can’t be a super-sink
ii+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-‫)שאלות במסמך ה‬