מלמ - שאלת רקורסיה לבחינת סיום מועד א
Transcription
מלמ - שאלת רקורסיה לבחינת סיום מועד א
מכללת אורט בראודה ,המחלקה להנדסת תכנה א אביב תש"ע ,מועד א' - 61145מבנה נתונים מ' הערה מקדימה : הבחינות נבדקו בקפדנות וגם ברחמנות. מי שמערער שייקח בחשבון שהבחינה כולה תיבדק שוב ,והפעם בקפדנות יתרה ,שמשמעותה שנקודות יכולות גם לרדת. לכן ,השתדלו להגיש ערעור רק אם אתם בטוחים בנכונות פיתרונכם. שאלה 62 [ 1נקודות] .1תהי Hערמת מקסימום עם nמפתחות שונים זה מזה .תהי Aסדרת המפתחות שמתקבלת בסריקת preorderשל . Hרשום מספר מקסימלי עבורו הטענה הבאה עדיין נכונה: המפתח המינימלי בודאי לא נמצא בין __ _log n המפתחות הראשונים ב. A - כיוון שבסריקה הזו נדפיס לפי הסדר את השורש ונרד שמאלה – בטוח שהמפתח המינימלי הוא עלה .כיוון שגובה העץ הוא log nבדיוק אזי אילו יהיו ערכים שלא נמצאים בעלים עד העלה הראשון שנפגוש .2העץ הבא הוא עץ AVLאחרי שהורידו ממנו צומת ולפני הגילגולים .יש לתקן את העץ ,אם ישנם כמה שלבים יש לשרטט כל שלב בנפרד ,ולנמק מדוע התבצע גלגול מסוים ,ולהראות את התוצאה: 11 5 17 7 22 2 6 21 1 3 4 צריך לעשות גלגול RLעל 17 צריך לעשות גלגול RLעל 17 11 5 21 22 17 2 7 6 4 עמוד 1מתוך 6 3 1 - 61145מבנה נתונים מ' מכללת אורט בראודה ,המחלקה להנדסת תכנה [עמוד זה הושאר ריק במתכוון] צריך לעשות גלגול LLעל 11 5 11 7 21 22 2 17 3 6 4 עמוד 2מתוך 6 1 א אביב תש"ע ,מועד א' מכללת אורט בראודה ,המחלקה להנדסת תכנה - 61145מבנה נתונים מ' א אביב תש"ע ,מועד א' שאלה 43 [ 6נקודות] נגדיר מרחק בין שני צמתים בגרף לא מכוון כמספר הקשתות במסלול הקצר ביותר בין שני הצמתים .נגדיר קוטר של גרף לא מכוון להיות המקסימום ,על כל זוגות הצמתים בגרף ,של המרחק בין שני הצמתים. בסעיפים הבאים אנו דנים בעצים בינאריים .בכל צומת יש שני מצביעים לשני הבנים של הצומת ,מצביע לאב של הצומת ושדה אחד נוסף. א .תארו אלגוריתם אשר בהינתן עץ בינארי שלם מוצא את קוטר העץ .סיבוכיות הזמן הנדרשת היא ) O(log nבמקרה הגרוע ביותר ,כאשר nהוא מספר הצמתים בעץ (אפשר לכתוב .)pseudo-codeנמקו מדוע האלגוריתם עומד בסיבוכיות הנדרשת. תשובה לא מנומקת לא תתקבל .אין לחרוג מהמקום המוקצה לפתרון. בעץ בינארי שלם המרחק הכי רחוק משורש העץ הינו עלה והוא במרחק לוגרתימי בגודל הנתונים .לכן ,בכדי למצוא את הקוטר יש לרדת עד לעלה .עבור כל רמה יש לעלות ב – 1ואז להכפיל את התוצאה בשתיים – מרחק בן שני עלים שמחוברים רק על ידי השורש. הערות :מי שכתב שעושים סריקה (תחילית ,תוכית או סופית) לא עומדים כמובן בתנאי השאלה כי זה לינארי מי שכתב שעושים סריקה כו ויוצאים בעלה הראשון זה בסדר – מי שלא כתב את זה ,כמו בהערה למעלה – לא קיבל נקודות. ב .תארו אלגוריתם אשר בהינתן עץ בינארי כלשהו מוצא את קוטר העץ .סיבוכיות הזמן הנדרשת היא ) O(nבמקרה הגרוע ביותר ,כאשר nהוא מספר הצמתים בעץ וסיבוכיות המקום הנוסף היא )( O(1אפשר לכתוב .)pseudo-code נמקו מדוע האלגוריתם עומד בסיבוכיות הנדרשת. משתמשים במשתנה הנוסף – פעם "הולכים" לימין ומוצאים את העלה הכי רחוק .פעם לשמאל ומוצאים את העלה הכי רחוק. מסכמים את התוצאה של שני הערכים וזה יהיה קוטר העץ .כיוון שגרף התשתית של העץ הוא חסר מעגלים יש מסלול אחד בלבד בין שני העלים הרחוקים .מכיוון שתוספת המקום היא קבועה לא ניתן להשתמש ברקורסיה. לכן מודדים את גובה העץ באופן הבא – בכל מקום עושים את המקסימום בין שני הילדים (בשדה הנוסף) ומוסיפים .1 בשורש תת העץ מסכמים את שני השדות הנוספים של הילדים וזהו הקוטר . המרחק יהיה לינארי במקרה הגרוע גובה העץ – כיוון שזהו המקרה הגרוע ביותר. לגבי הסריקה של עץ האלגוריתם הוא כזה – יש משתנה שנקרא לו maxשהוא משתנה שיחזיר את הקוטר ,מאותחל ב.1- כיוון אי אפשר לעשות רקורסיה – הבעייה השניה היא סריקת העץ – משתמשים במשתנה הנוסף בשביל לדעת מאין באנו. בכל צומת בה עוברים בפעם הראשונה מסמנים -1בשדה הנוסף ,ואז נדע שירדנו שמאלה. כשמגיעים לצומת שהילד השמאלי שלה ריק מסמנים אותו ב – ,1אם הילד הימני ריק משאירים את התוצאה בצומת. כשחוזרים מצד שמאל וכתוב -1מחליפים בגובה עד כה שהוא (גובה הבן השמאלי )1 +ועוברים ימינה. כשחוזרים מצד ימין ,רואים שכתוב מספר> ,1אז יודעים שחזרנו מימין .הגובה מצד ימין יהיה (הגובה של הבן הימני .)1 + עכשיו מסכמים את הגובה שחושב מימין +הגובה שרשום משמאל – אם התוצאה גבוהה ממה שרשום ב – maxאזי מחליפים אותה עם .max בצומת ההיא שמים את המקסימום בין שני הצדדים (זה שרשום וזה שחושב) וממשיכים למעלה. עוצרים כשבאים מצד ימין וההורה הוא NULLואז יודעים שסיימנו. עמוד 3מתוך 6 מכללת אורט בראודה ,המחלקה להנדסת תכנה - 61145מבנה נתונים מ' א אביב תש"ע ,מועד א' שאלה 34 [ 4נקודות] בסעיפים הבאים יש להחליט האם הטענה המופיעה בסעיף היא נכונה או לא ,או לכתוב תשובה .יש גם להסביר בקצרה את הפתרון .פיתרון ללא הסבר נכון לא יתקבל!! .1נתון TRIEדחוס עבור רשימת מחרוזות .המסלול הימני ביותר עבור ה TRIEמשורטט בהמשך ,כאשר המספר משמאל לצומת מייצג את אורך המסלול מהשורש עד לאותו צומת .נניח ש vהיא המחרוזת הכי גדולה לקסיקוגרפית מכל המחרוזות בעץ .אנחנו מכניסים מחרוזת wשגדולה מ ,vושאורך הפרפיקס המשותף שלה ושל vהוא .31אחרי הכנסת wודחיסת העץ, מה יהיו מספר הקשתות במסלול הימני ביותר בעץ. 1 13 22 41 63 4 נימוק :כיוון שהמחרוזות האחרות משותפות במסלול קודם צריך לעשות הפרדה בין 22ל 41ושם יהפוך לשתי קשתות 22עד 31ואז מ 32ועד הסוף .אם נסתכל על המסלול הימני נראה שיש שם 4קשתות .6נניח שבנינו Btreeכאשר .m = 63מה יהיה מספר העלים של העץ המינימלי כאשר עומקו הוא ?4 216 נימוק:כיוון שהעץ הוא מינימלי אזי מספר הילדים של השורש יהיה .2כל היתר יהיו 32ילדים שזה .m/2 יש עוד 3פעמים 32 ילדים .סה"כ 2 25 25 25 :שזה יוצא . 216 עמוד 4מתוך 6 מכללת אורט בראודה ,המחלקה להנדסת תכנה א אביב תש"ע ,מועד א' - 61145מבנה נתונים מ' .3נניח שאנחנו מבצעים ערבול כפול .ונניח שגודל הטבלה שלנו היא . m = 2401הפונקציה rתהיה פונקצית הצעד .מה תהיה פונקצית צעד שתבטיח מציאת מקום בטבלה אם יש מקום ריק? א12 . ג49 . ב35 . ה98 . ד63 . נימוק :כיוון של 2411ו 12-אין מחלק משותף גדול מ .1 .4ע"פ ההגדרה הפורמלית של O, , נמקו מי מהתשובות הבאות נכונה: אn + 3 O(n2) . גn + 3 (n2) . בn + 3 (n2) . ה .ב ו-ג. ד .א ו-ב. נימוק :כיוון שההגדרה אומרת ש ) fO(gאמ"ם קיימים n0ו c-כך שלכל n>n0תמיד fcg .5מי מהפונקציות הבאות עולה הכי מהר ל -nים גדולים מאוד: אn22n(log n) . גn22n(log n)5 . בn23n(log n) . הn42n . דn23n(log n)2 . נימוק :כמובן ש 3nעולה הכי מהר והמכפלה הכי גדולה שלה היא ב ד. .6איזה ממבני הנתונים הבאים מממשים פעולת חיפוש (כמו במילון) לוגריתמית במקרה הגרוע לחיפוש. א .עץ חיפוש בינארי ב .עץ AVL ו .ג .ו -ד. ז .א ו -ד. ג .עץ B+ ה .ב ו-ג. ד .ערימה נימוק :ה – כיוון ששני העצים הללו הם היחידים שפעולת החיפוש היא לוגריתמית .עץ חיפוש בינארי יכול להיות באורך n ובערימה החיפוש יהיה לכל גודלה. .7כמה עצים שונים יש כאן בהנחה שהעצים הם עצים כלליים לא מסודרים. a a b א1 . a b ב2 . ג3 . a b ד4 . c ה5 . נימוק :בעצים לא מסודרים הסדר של הבנים לא חשוב עמוד 5מתוך 6 c b - 61145מבנה נתונים מ' מכללת אורט בראודה ,המחלקה להנדסת תכנה א אביב תש"ע ,מועד א' .8נניח שבונים טבלת ערבול בגודל bעם שרשראות עבור nמפתחות .נניח שפונקצית הערבול מפזרת באופן אחיד את המפתחות על פני הטבלה .אזי המקרה הגרוע ביותר לחיפוש מפתח בטבלה הינו ).O(n/b לא נכון נימוק :כיוון שהמקרה הגרוע ביותר הינו לינארי בגודל הקלט. .9בפונקציה הבאה a, bהם קבועים חיוביים. T(n) = 2T(n/2) + bn T(1) = a הפונקציה מתארת את המקרה הגרוע של מיון מהיר. לא נכון נימוק :כיוון שהמקרה הגרוע הוא כל פעם להוריד 1מ .n .11פתרו את הפונקציה ב – 9עד הסוף ע"פ שיטת ההצבה. = T(n) = 2T(n/2) + bn =2[2T(n/22) + bn/2] + bn = 22T(n/22) + 2bn = 22[2T(n/23) + bn/22] + 2bn = 23T(n/23) + 3bn = . . = 2k(n/2k) + kbn n/2k = 1 n = 2k k = log n )T(n) = na + log n b n = O(nlogn עמוד 6מתוך 6