TECHNION ISRAEL INSTITUTE OF TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE הטכניון מכון טכנולוגי לישראל הפקולטה למדעי המחשב מבני נתונים 234218 1 מבחן מועד ב ' סמסטר אביב תשס"ו מרצה: אהוד ריבלין מתרגלים: איתן עזריאל, אמיר רובינשטיין, רומן סנדלר שם משפחה: שם פרטי: מס' סטודנט: משך המבחן: שלוש שעות. יש לענות על כל השאלות על טופס המבחן, במקומות המיועדים לכך. חובה להקפיד על ניסוח וכתב ברורים. תשובות לא קריאות כלל לא תיבדקנה. "לא 20% מהניקוד של שאלה או סעיף יינתנו אם התשובה היחידה בסעיף זה היא שימו לב: יודע/ת". מותר להשתמש בכל חומר עזר לא אלקטרוני. (חוברות התרגולים מותר להשתמש במשפטים ותוצאות המופיעים בחומר הרשמי של הקורס וההרצאות ופתרונות שפורסמו לתרגילי בית) ללא הסבר נוסף בתנאי שיצוין מפורשות באיזה משפט/תוצאה משתמשים. במבחן זה, סיבוכיות (זמן,זיכרון) מתייחסת תמיד למקרה הגרוע, אלא אם כן נאמר מפורשות אחרת. בטופס זה 9 עמודים ממוספרים, כולל דף זה. וודאו כי כולם ברשותכם. ב ה צ ל ח ה! 30 20 15 20 15 100 1
שאלה (30 1 נקודות) שימו לב: בשאלה זו שני חלקים שאינם קשורים זה לזה. חלק (15 1 נקודות) בכל אחד מהסעיפים הבאים יש להוכיח או להפריך את הטענה הרשומה. א. ניתן לשחזר עץ חיפוש בינארי שכל איבריו שונים זה מזה מתוצאת סיור preorder עליו. ב. ניתן לשחזר עץ חיפוש בינארי שכל איבריו שונים זה מזה מתוצאת סיור inorder עליו. ג. בהכנסת צומת חדש לעץ לפי האלגוריתם שנלמד בהרצאות, סיבוכיות הזמן של השלבים שלאחר AVL מציאת מקום ההכנסה הינה (1)O. 2
חלק 15) 2 נקודות) תזכורת: עץ בינארי מלא הוא עץ בינארי שבו לכל צומת פנימי יש 2 בנים. עץ בינארי כמעט שלם הוא עץ בינארי מלא שבו כל העלים באותו עומק, וחסרים בו (אולי) עלים מימין. א. בהינתן עץ בינארי כלשהו (לא עץ חיפוש) בעל n עלים, תארו שינויים שיש לבצע בעץ זה כדי להפוך אותו לעץ בינארי מלא, ייתכן שלא יכיל את כל צמתי העץ המקורי, שגם הוא בעל n עלים, וגובהו קטן או שווה לגובהו של העץ המקורי. ב. בהינתן עץ בינארי מלא (לא עץ חיפוש) בעל n עלים, תארו שינויים שיש לבצע בעץ זה כדי להפוך אותו לעץ בינארי כמעט שלם, המכיל את אותם צמתים, שגם הוא בעל n עלים, וגובהו קטן או שווה לגובהו של העץ המלא המקורי. ג. בסעיף זה מותר להשתמש בתוצאות הסעיפים הקודמים גם אם לא פתרתם אותם. הוכיחו או הפריכו את הטענה הבאה: גובהו של עץ בינארי כלשהו (לא עץ חיפוש) בעל n עלים הוא (n.ω(log 3
שאלה (20 2 נקודות) שאלה זו עוסקת ברשת מחשבים. נגדיר רשת מחשבים גלגלית בגודל n כרשת עם n מחשבים שיש בה מחשב מרכזי אחד ו (1n) מחשבים משניים. המחשבים המשניים מחוברים ביניהם במעגל וכל אחד מהם מחובר גם למחשב המרכזי. פרט לכך אין עוד חיבורים ברשת. לדוגמא, להלן ציורים סכמטיים של רשתות מחשבים גלגליות בגדלים 4 ו 7: א. מימוש מבנה הנתונים והסבר על ביצוע הפעולות: n=4 n=7 הנחות: 1) בשאלה זו, הקצאת זיכרון דינאמית לוקחת (1)O זמן, בלי קשר לכמות הזיכרון המוקצה. 2) המחשבים ברשת מזוהים ע"י האינדקסים 1 עד n. תארו מימוש למבנה נתונים המוגדר ע"י הפעולות הבאות, והסבירו כיצד מתבצעת כל פעולה: Init(n) אתחול רשת מחשבים בת n מחשבים ללא כל חיבורים..FALSE אם הם כבר היו מחוברים, יוחזר b. למחשב מספר a חיבור בין מחשב מספר Connect(a,b).FALSE אם לא היה חיבור יוחזר b. למחשב מספר a ניתוק החיבור בין מחשב מספר Disconnect(a,b) IsWheel() הפעולה תחזיר TRUE אם הרשת הנוכחית הינה גלגלית, FALSE אחרת. על שלוש הפעולות הראשונות לעבוד בסיבוכיות זמן (1)O, ואילו הפעולה IsWheel תרוץ בזמן.O(n) 4
ב. תארו מימוש למבנה נתונים המוגדר ע"י הפעולות הבאות, והסבירו כיצד מתבצעת כל פעולה: Init(n) אתחול רשת מחשבים גלגלית בת n מחשבים ללא כל חיבורים..FALSE אם הם כבר היו מחוברים, יוחזר b. למחשב מספר a חיבור בין מחשב מספר Connect(a,b) IsWheel() הפעולה תחזיר TRUE אם הרשת הנוכחית הינה גלגלית כשמחשב מס' 1 הוא המחשב המרכזי, FALSE אחרת. על סיבוכיות הזמן של Init להיות,O(n) של,O(log (n Connect ושל (1)O. IsWheel מימוש מבנה הנתונים והסבר על ביצוע הפעולות: 5
שאלה 15) 3 נקודות) נתונים n ילדים העומדים בטור זה אחר זה, בכניסה לגן החיות. אם נסמן אותם באינדקסים 1 עד n, אז ילד מספר 1 עומד ראשון, ילד מספר 2 עומד מאחוריו, והילד בעל אינדקס n עומד אחרון. לכל ילד גובה מסוים, ואם הוא מסתכל ישר הוא רואה את הילד הקרוב ביותר אליו מבין כל הילדים שעומדים לפניו בטור, שגובהו גדול או שווה לגובהו שלו עצמו. הקלט לבעיה הוא סדרה h 1, h 2,, h n כאשר h i הוא הגובה של ילד מספר i. הפלט הדרוש הוא סדרה y 1, y 2,, y n כאשר y i הוא האינדקס של הילד שאותו רואה ילד מספר i כאשר הוא מסתכל ישר. אם ילד מספר i לא רואה אף אחד, 0= i y. לדוגמא: h 1 =1.6, h 2 =1.7, h 3 =1.4, h 4 =1.2, h 5 =1.3, h 6 =1.6 עבור הקלט: y 1 =0, y 2 =0, y 3 =2, y 4 =3, y 5 =3, y 6 =2 יתקבל הפלט: תארו אלגוריתם לפתרון הבעיה שסיבוכיות הזמן שלו הינה,O(n) והוכיחו כי זו אכן סיבוכיותו. שימו לב: ניקוד חלקי יינתן לפתרונות שסיבוכיות הזמן שלהם היא (n.o(nlog תיאור האלגוריתם:.O( סיבוכיות הזמן של האלגוריתם: ) הוכחת סיבוכיות: 6
שאלה (20 4 נקודות) בבעיית הוקטור הפרבולי נתון מערך איברי המערך כך שיתקיים: A לכל n. A[] i Ai [ 1], 1< i 2 n לכל + 1 i. A[] i Ai [ + 1], n> 2 בגודל n של שלמים שונים (אין חסם על גודלם) וצריך לסדר מחדש את מערך שמסודר באופן הנ"ל נקרא וקטור פרבולי. לדוגמה, המערך הבא הינו וקטור פרבולי: 15 12 7 5 2 4 9 11 13 14 א. תנו חסם תחתון (במונחים של לסיבוכיות הזמן הדרושה לפתרון בעיית הוקטור הפרבולי, במודל (Ω מבוסס השוואות בלבד. Ω( חסם תחתון: ) הוכחה: ב. הציגו אלגוריתם אופטימלי (הן מבחינת סיבוכיות זמן והן מבחינת סיבוכיות הוקטור הפרבולי. ציינו מה סיבוכיות המקום של האלגוריתם שלכם. מקום) לפתרון בעיית.Θ( סיבוכיות המקום: תאור האלגוריתם: ) 7
ג. עבור קבוצה של n מספרים שלמים שונים זה מזה, מהו מספר הוקטורים הפרבוליים השונים המורכבים ממספרים אלו? Num = ד. בסעיף זה מותר להשתמש בתוצאת סעיף ג' (Num) גם אם לא פתרתם אותו. מצאו חסם תחתון מדויק (כלומר ללא שימוש בסימון Ω) למספר ההשוואות הנדרש להפיכת מערך של מספרים שלמים בגודל n לוקטור פרבולי, תחת מודל מבוסס השוואות בלבד. הסבירו קביעתכם. חסם תחתון מדויק: 8
3 n. Tn ( ) = On ( ) מקיימת Tn ( ) = 8 T( ) + logn 2 שאלה (15 5 נקודות) א. הוכיחו באמצעות אינדוקציה כי משוואת הרקורסיה הבאה הוכחה: ב. נניח כי ((n) f 1 (n)=o(g 1 ו ((n). f 2 (n)=o(g 2 הוכיחו או הפריכו את הטענות הבאות באופן פורמלי: min( f, f ) = n min( f ( n), f ( n)) 1 2 1 2 )) g min( f, f ) = O(min( g, כאשר 1 2 1 2 (i f ( f ( n)) = O( g ( g ( n))) 1 2 1 2 (ii 9