במבני נתונים 7 תרגיל בית

Transcription

במבני נתונים 7 תרגיל בית
‫אוניברסיטת ת"א‬
‫סמסטר א'‪ ,‬תשע"ד‬
‫תרגיל בית ‪ 7‬במבני נתונים‬
‫תזכורת‪ :‬על כל התשובות להיות מנומקות‪.‬‬
‫שאלה ‪1‬‬
‫תזכורת להגדרה של עץ בינומי‪ :‬עץ מדרגה ‪ 0‬צומת בודד ללא ילדים (רק שורש)‪ .‬עץ מדרגה ‪ :k‬שורש של עץ מדרגה‬
‫‪ k-1‬תלוי על שורש של עץ מדרגה ‪ k-1‬אחר (כמו שהראנו בתרגול)‪.‬‬
‫בהינתן ההגדרה הנ"ל‪ ,‬הוכיחו את התכונות הבאות של עצים בינומיים מדרגה ‪:k‬‬
‫א‪.‬‬
‫ב‪.‬‬
‫ג‪.‬‬
‫ד‪.‬‬
‫בעץ יש ‪ 2k‬צמתים‪.‬‬
‫לעץ עומק ‪( k‬עומק = מספר הקשתות במסלול הארוך ביותר משורש לעלה)‪.‬‬
‫לשורש של העץ ‪ k‬ילדים‪ ,‬שהם שורשים של עצים בדרגות ‪.0,…,k-1‬‬
‫(‪ k‬מעל ‪ ,d‬מקדם בינומי)‪.‬‬
‫מספר הצמתים בעומק ‪ d‬בעץ הוא‬
‫שאלה ‪2‬‬
‫הציגו מימוש בעל סיבוכיות זמן ריצה אסימפטוטי (כפונקציה של גודל הערימה) טובה ככל שתוכלו עבור הפעולה‬
‫)‪ ,split(r‬שנגדיר על ערימה בינומית כלהלן‪:‬‬
‫הפעולה מתבצעת על ערימה בינומית בעלת ‪ n‬איברים‪.‬‬
‫הנתון הוא מספר שלם ‪.1≤r≤n-1‬‬
‫התוצאה היא חלוקה של הערימה הנתונה לשתי ערימות בינומיות בגדלים ‪ r‬ו‪.(n-r)-‬‬
‫איברי הערימה המקורית המתחלקים שרירותית בין שתי הערימות החדשות‪.‬‬
‫שאלה ‪3‬‬
‫ענו על השאלה הבא עבור כל סוג ערימה‪ .‬נוסיף לערימה פעולה )‪ ,whereToInsert(x‬שמקבלת עדיפות ‪ ,x‬ומחזירה‬
‫באיזה אינדקס במערך בערימה בינארית או באיזה דרגה של עץ הוא יוכנס אם הוא היה מוכנס‪ .‬אין לשנות את‬
‫הערימה‪ ,‬רק להחזיר מה היה קורה אילו הערך היה מוכנס‪.‬‬
‫א‪ .‬ערימה בינארית (מקום במערך שבו היה יושב הערך בתום פעולת ההכנסה)‪.‬‬
‫ב‪ .‬ערימה בינומית (דרגת העץ אליו היה מוכנס בתום פעולת ההכנסה)‪.‬‬
‫ג‪ .‬ערימת פיבונצ'י (דרגת העץ אליו היה מוכנס בתום פעולת ההכנסה)‪.‬‬
‫שאלה ‪4‬‬
‫השאלה מתייחסת לערימה בינומית עצלה‪.‬‬
‫בכיתה ראיתם מימוש חליפי ל‪ .successive linking-‬עוברים על כל העצים‪ :‬שמים את העץ בתא שלו לפי הדרגה‪.‬‬
‫אם אין שם עץ‪ ,‬העץ עובר לרשימה הסופית כמו שהוא‪ .‬אם יש שם עץ‪ ,‬מבצעים ‪ linking‬ואז מעבירים את התוצר‬
‫לרשימה הסופית‪.‬‬
‫נכניס לערמה בינומית עם מימוש חליפי זה של ‪( successive-linking‬ומימוש שאר הפעולות כפי שהוגדר בכתה) את‬
‫האיברים ‪ 1,2,3,4,….,n‬ואז נבצע שתי פעולות ‪ delete-min‬בזו אחר זו‪.‬‬
‫א‪ .‬מהי סיבוכיות הזמן של כל אחת מפעולות ‪ delete-min‬אלו? מהי סיבוכיות הזמן של כל אחת מפעולות אלו‬
‫אם ‪ successive-linking‬ממומש בדרך המקורית?‬
‫ב‪ .‬הוכח חסם על ה‪ amortized-time-‬של ‪ delete-min‬עם המימוש של ‪ successive-linking‬החלופי‪ ,‬ו‪-‬‬
‫‪ findmin, insert, meld‬ממומשות כפי שתואר בכיתה‪.‬‬