שאלת מבחן במבני נתונים - אוניברסיטת בר-אילן 2012 - ערימות

השאלה מתייחסת לעץ חיפוש בינארי (בינארי בדרגה בעל מקבילית בעץ אבותיו. תנועת רשימה.

א) Build
– בנייה הממנה מרשימה בזמן הקטעים בתוך .

ב) Max
– החזרת ערך קסטימלי בתוך .

ג) Min
– החזרת ערך מינימלי בתוך .

ד) delete-max
– מחיקת ערך קסטימלי בתוך .

ה) delete-min
– מחיקת ערך מינימלי בתוך .

הסברו בקצרה כיצד תתבעו כל פעולה.
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
אוניברסיטת בר-אילןמועד ב2012סמסטר ב
ערימותערימה בינאריתתור עדיפויותסיבוכיות זמן
שקלו להשתמש בשני מבני נתונים נפרדים, אחד הממוטב למציאת המינימום והשני למציאת המקסימום. חשבו כיצד לסנכרן ביניהם בעת פעולות מחיקה.
ניתן לממש את מבנה הנתונים הנדרש באמצעות שילוב של ערימת מינימום וערימת מקסימום. שתי הערימות יכילו את אותה קבוצת איברים מהרשימה . התכונה המרכזית היא שכל איבר בערימה אחת יחזיק מצביע לאיבר התואם לו בערימה השנייה. הצלבה זו מאפשרת לבצע מחיקות מסונכרנות ביעילות.

א) Build(S,L) – בניית המבנה מרשימה
בגודל :
1. ניצור שני מערכים בגודל
, אחד עבור כל ערימה. עבור כל ערך ברשימה , ניצור צומת מתאים בכל מערך.
2. נאכלס את המצביעים: כל צומת במערך הראשון יצביע על הצומת התואם לו במערך השני, ולהיפך. שלב זה לוקח
.
3. נפעיל את אלגוריתם הבנייה הלינארי (Floyd's algorithm) כדי להפוך את המערך הראשון לערימת מינימום בזמן
.
4. באופן דומה, נהפוך את המערך השני לערימת מקסימום בזמן
.
הסיבוכיות הכוללת של פעולת הבנייה היא
.

ב) Max(S) – החזרת הערך המקסימלי:
הערך המקסימלי במבנה הוא תמיד שורש ערימת המקסימום. ניתן לגשת אליו ולהחזירו בזמן קבוע,
.

ג) Min(S) – החזרת הערך המינימלי:
הערך המינימלי במבנה הוא תמיד שורש ערימת המינימום. ניתן לגשת אליו ולהחזירו בזמן קבוע,
.

ד) delete-max(S) – מחיקת הערך המקסימלי:
1. נזהה את הערך המקסימלי, שנמצא בשורש ערימת המקסימום. נקרא לצומת זה
.
2. באמצעות המצביע מ-
, נמצא את הצומת התואם לו בערימת המינימום. נקרא לצומת זה .
3. נבצע פעולת extract-max על ערימת המקסימום. פעולה זו מסירה את השורש ומארגנת מחדש את הערימה בזמן
.
4. נמחק את הצומת
מערימת המינימום. מכיוון שיש לנו מצביע ישיר לצומת, ניתן לבצע מחיקה של איבר כללי מערימה. הפעולה מתבצעת על ידי החלפת הצומת עם האיבר האחרון בערימה, הסרת האחרון, ולאחר מכן ביצוע sift-up או sift-down על האיבר שהועבר כדי לשמור על תכונת הערימה. פעולה זו לוקחת .
הסיבוכיות הכוללת של מחיקת המקסימום היא
.

ה) delete-min(S) – מחיקת הערך המינימלי:
התהליך סימטרי לחלוטין למחיקת המקסימום:

1. נזהה את הערך המינימלי בשורש ערימת המינימום,
.
2. נשתמש במצביע כדי למצוא את הצומת התואם
בערימת המקסימום.
3. נבצע extract-min על ערימת המינימום בזמן
.
4. נמחק את
מערימת המקסימום באמצעות המצביע הישיר בזמן .
הסיבוכיות הכוללת של מחיקת המינימלי היא
.