שאלת מבחן באלגוריתמים - האוניברסיטה הפתוחה 2021 - סיבוכיות

השאלה עוסקת במימושים שונים לתור-קדימויות עם מפתחות, במסגרת הפעלת האלגוריתם של Dijkstra או של Prim. שני מימושים: רשימה דו-כיוונית לא ממוינת, ערימה-בינארית, וערימת-פיבונאצ'י (שזמני-הריצה שלה amortized). לכל אורך התשובה השמיטו את הסימנים האסימפטוטיים . נסמן , .

(א) השלימו את זמני-הריצה של כל פעולה בכל מימוש.

(ב) רשמו את זמן-הריצה הכולל של Dijkstra/Prim בכל מימוש (בניית התור שליפת-מינימום הקטנת-מפתח), וקבעו לאילו צפיפויות עדיף כל מימוש.
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
האוניברסיטה הפתוחהמועד 77 · 2021 · סמסטר א
סיבוכיותניתוח אלגוריתמיםדייקסטרהגרפים
הזמן הכולל הוא . הציבו את ערכי הטבלה, והשוו מול מול לפי .
(א) טבלת זמני-הריצה (לכל פעולה):

פעולהרשימה לא ממוינתערימה בינאריתערימת פיבונאצ'י
בניית התור
שליפת מינימום
הקטנת מפתח


(ערימת-פיבונאצ'י: שליפת-מינימום ו-decrease-key הם זמנים amortized.)

(ב) זמן ריצה כולל :
  • רשימה: .
  • ערימה-בינארית: (עבור ).
  • ערימת-פיבונאצ'י: .


מתי כל מימוש עדיף:
  • רשימה מול ערימה-בינארית: רשימה () עדיפה על בינארית () כאשר , כלומר בגרפים צפופים מאוד: (וכזכור ). לגרפים דלילים-בינוניים הבינארית עדיפה.
  • ערימת-פיבונאצ'י מול רשימה: פיבונאצ'י () עדיפה לכל צפיפות, שכן תמיד וגם , ולכן .
  • (בונוס — פיבונאצ'י מול בינארית: פיבונאצ'י לעולם אינה גרועה יותר אסימפטוטית, ועדיפה ממש כאשר .)