מבני נתונים ואלגוריתמים - מחברת קורס/מבחן סופי מועד א' סמסטר ב' 2007 - שאלות
הבהרה בנוגע לשימוש בלשון זכר: כדי למנוע סרבול מיותר, וכמקובל בשפה העברית, ננקטת לעתים לשון זכר בהתייחסות אל כלל הגולשות והגולשים ובמתן שמות לערכים. אנא קבלו זאת בהבנה.
הנחיות
|
שאלה 1
[עריכה](~20 נקודות)
בכיתה למדנו כבר על עצי חיפוש בינריים. שאלה זו עוסקת בווריאציה. עץ Foo-Bar מוגדר כך:
- כל צומת הוא אחד משני סוגים: צומת Foo או צומת Bar.
- צומת Bar מחזיק מפתח אחד ו(עד ל)2 ילדים (כמו הצמתים הרגילים שראינו).
- צומת Foo מחזיק 2 מפתחות ו(עד ל3 ילדים.
- העץ מקיים את את תכונת הFoo-Bar - לכל צומת
x
:- כל מפתח בתת-עץ שמאלי של מפתח כלשהו, קטן או שווה לו.
- כל מפתח בתת-עץ ימני של מפתח כלשהו, גדול או שווה לו.
- כל המסלולים משורש העץ לעלה ריק (
Nil
) בעל אותו אורך בדיוק.
דוגמה: צומת Bar |
דוגמה: צומת Foo |
דוגמה: עץ Foo-Bar להלן דוגמה לעץ Foo-Bar תקין. בעץ זה 3 צמתים (2 מסוג Bar, ו1 מסוג Foo). יש לו 4 מפתחות, וגבהו 2. |
אנא הוכח שעץ Foo-Bar הוא לוגריתמי: אם יש בו מפתחות וגבהו הוא , אז .
שימו לב: אל תתייחס לשאלה כיצד ליצור עץ כזה, או כיצד להכניס ולהוציא מפתחות ממנו - זה לא רלוונטי. |
שאלה 2
[עריכה](~15 נקודות)
נתון גרף מכוון וקשיר מצומת כלשהו. לכל קשת יש מחיר. רוצים למצוא את המסלול הזול ביותר מs
לכל צומת u
כלשהו, אך תחת העדפה למסלולים שארכם (כלומר, מספר קשתותיהם) זוגי. מציין גודל קנס כלשהו. אם מסלול כלשהו מ ל הוא אי-זוגי, יש להוסיף למחיר מסלול זה קנס בגובה .
אנא תאר אלגוריתם המקבל כקלט את הגרף, טבלת עלויות לקשתות, וגודל הקנס, ומוצא את מחיר המסלול הזול ביותר (במובן שאותו הסברנו כרגע) לכל צומת . אנא הוכח נכונות ונתח סיבוכיות.
שאלה 3
[עריכה](~20 נקודות)
בשאלה זו עליך להוכיח חסם תחתון על , מספר עצי החיפוש הבינריים השונים בעלי מפתחות שונים זה מזה.
דוגמה: נניח שעץ החיפוש מכיל את המפתחות . יש 2 עצים מתאימים: נניח שעץ החיפוש מכיל את המפתחות . יש 5 עצים מתאימים: |
מהדוגמה נוכל להסיק כי
, , .
אנא הוכח ש, כלומר שמספר עצי החיפוש הבינריים גדל בצורה אקספוננציאלית.
שאלה 4
[עריכה](~35 נקודות)
רשת החומוסיות מק-לאפה מתכננת להקים סניפים רבים לאורך רחוב איבן-גבירול בתל אביב. מציינים את מספרי הבתים ברחוב בהם יש מקום פנוי להקמת סניף חדש. הרשת שוקלת היכן להקים את הסניפים החדשים:
- מסקר שוק, הרשת מעריכה שבבית מספר רווחיה הצפויים יהיו ( הוא מספר חיובי כלשהו).
- הרשת אינה מוכנה להקים שני סניפים שמרחקם זה מזה הוא פחות מ ( הוא מספר שלם חיובי כלשהו).
דוגמה: אם והרשת בוחרת להקים סניף בבית מספר 135, אסור לה להקים סניף בבית מספר 143, שכן . |
אנא כתוב אלגוריתם יעיל המקבל את המערך M
(המכיל את מספרי הבתים), את המערך P
(המכיל את הרווחים הצפויים), ואת המספר k
(המציין את מגבלת המרחק), ומדפיס את מספרי הבתים שהקמת הסניפים בהם צפוייה למקסם את הרווחיות. אנא הוכח נכונות ונתח סיבוכיות.
שאלה 5
[עריכה](~20 נקודות)
במסיבה כלשהי יש אנשים; חלקם לחץ ידיים זה עם זה. כעת יש להושיב אותם משני צידי שולחן. אנא הוכח שאפשר להושיב אותם באופן כזה כך שכל אחד יושב מול לפחות חצי מהאנשים שאתם לחץ יד.
דוגמה: נניח שבמסיבה יש שלשה אנשים: 1, 2, ו3, ורק 1 ו2 לחצו ידיים זה עם זה. אכן אפשר להושיב את 1 ו3 בצד אחד של השולחן, ואת 2 בצד השני. |