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

Transcription

במבני נתונים 2 תרגיל בית
‫אוניברסיטת ת"א‬
‫סמסטר א'‪ ,‬תשע"ד‬
‫תרגיל בית ‪ 2‬במבני נתונים‬
‫תזכורת‪ :‬על כל התשובות להיות מנומקות‪.‬‬
‫שאלה ‪1‬‬
‫נתון לנו מבנה נתונים‪ ,‬ובו פעולה בודדת – )(‪ .func‬נתון לנו‪ ,‬שזמן הריצה ‪ amortized‬של פעולת ‪ func‬הוא )‪.O(1‬‬
‫הראו חסם עליון הדוק ככל שתוכלו לזמן הריצה של פעולת ‪ func‬במקרה הגרוע ביותר‪ ,‬כפונקציה של מספר הקריאות‬
‫לפעולה עד כה‪.‬‬
‫שאלה ‪2‬‬
‫בהרצאה ראינו מימוש של מחסנית בתוך מערך עם הכפלות‪ ,‬שמאפשר זמן ‪ amortized‬קבוע לפעולה‪.‬‬
‫א‪ .‬נשנה את המבנה‪ ,‬כך שכשהמערך מתמלא נכפיל את גודלו פי (‪ ,)α+1‬במקום להכפיל פי ‪ .2‬הראו שזמן הריצה‬
‫‪.‬‬
‫‪ amortized‬לפעולה הוא כעת‬
‫ב‪ .‬נשנה את המבנה‪ ,‬כך שכשהמערך מתמלא‪ ,‬נקצה מערך גדול ב‪( β-‬קבוע) תאים‪ ,‬ונעתיק אליו את תוכן המערך‪.‬‬
‫כלומר‪ ,‬במקום להגדיל כפלית פי ‪ ,2‬אנחנו מגדילים חיבורית ב‪ .β -‬הראו‪ ,‬שזמן הריצה ‪ amortized‬לפעולה הוא‬
‫כמו זמן הריצה הגרוע ביותר לפעולה‪ .‬במילים אחרות‪ ,‬הראו שסדרה של ‪ n‬פעולות דורשת )‪ Θ(n2‬זמן‪.‬‬
‫שאלה ‪3‬‬
‫‪ .1‬בכדי לשפר את יעילות המונה נשתמש בספרות ‪( 0, +1, -1‬במקום רק ב‪ 0-‬ו‪ .)1-‬ערכו של מספר המיוצג ע"י‬
‫מוגדר להיות‪:‬‬
‫סדרת הספרות‬
‫‪‬‬
‫למשל ‪ 1 0 -1‬הינו ייצוג של‬
‫‪.‬‬
‫פעולת ‪ increment‬של מספר בייצוג כזה מתבצעת באופן דומה לביצועה במערכת המספרים הרגילה‪.‬‬
‫מוסיפים ‪ 1‬לספרה הימנית ביותר‪ .‬אם ערכה הפך ל‪ ,2-‬הוא משתנה ל‪ 0-‬וגוררים את העודף לספרה הבאה‬
‫משמאל‪ Decrement .‬מתבצע בצורה דומה‪ :‬מורידים ‪ 1‬מהספרה הימנית ביותר‪ ,‬אם ערכה הפך ל‪,(-2)-‬‬
‫הופכים אותו ל‪ ,0-‬וגוררים את החוסר )‪ (-1‬לספרה שמשאל‪ .‬דוגמא‪ :‬המספר ‪ 1 0 -1‬פחות ‪ ,1‬נקבל ‪.1 -1 0‬‬
‫כעת נוסיף לו ‪ 1‬ונקבל ‪ .1 -1 1‬שימו‪-‬לב שקיבלנו שתי צורות שונות לייצוג של ‪ ,1 0 -1 :3‬ו‪.1 -1 1 -‬‬
‫נגדיר את עלות הפעולה להיות מספר הספרות המשתנות כאשר מבצעים את הפעולה‪ .‬הוכיחו‪ ,‬כי בייצוג‬
‫שכזה העלות של סדרה של ‪ n‬פעולות ‪ increment‬ו‪ decrement-‬כאשר מתחילים ממונה שערכו ‪ 0‬היא‬
‫)‪.O(n‬‬
‫שאלה ‪4‬‬
‫‪ .1‬נתונה הפעולה הבאה ‪ . op‬מתחילים עם ‪ i=0‬ומפעילים את ‪ n op‬פעמים‪ ,‬מה היא העלות ‪amortized‬‬
‫לפעולת ‪ op‬בסדרה?‬
‫)(‪op‬‬
‫‪i=i+1‬‬
‫‪if (i = 2k for an integer k) then‬‬
‫‪for j = 0 to 2*i‬‬
‫‪do some work in constant time‬‬
‫‪end for‬‬
‫‪end if‬‬