מבני נתונים ואלגוריתמים - מחברת קורס/שיעורי בית 5/שאלות

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי


שימו לב:

*נא להגיש רק את שאלות 1-5.
  • שאר השאלות הן לצורך חזרה למבחן בלבד. אין צורך להגיש את התשובות להן.


1[עריכה]

אנא הוכח שבכל עץ חיפוש בינרי המכיל מפתחות שונים זה מזה, יש לפחות עלה אחד כך שאורך המסלול משורש העץ לעלה הוא .



כדאי לדעת:

שים לב להשלכה - סיבוכיות חיפוש בעץ במקרה הגרוע היא .


2[עריכה]

א'[עריכה]

הגדרה:

נאמר שעץ הוא דחוס אם כל צומת בגובה הוא ראשו של תת-עץ בעל איברים.

אנא הוכח שזמן חיפוש איבר בעץ דחוס הוא אופטימאלי (מבחינת סדר גדילה) במקרה הגרוע ביותר.


ב'[עריכה]

באפליקציה מסויימת מחזיקים מפתחות קבוצה בעץ דחוס. ידוע שבאפליקציה זו, מחפשים מפתחות בעץ בתדירות הפוכה לגודלם היחסי בקבוצה (לדוגמה, את שלושת המפתחות הקטנים בקבוצה מחפשים הרבה יותר פעמים מאשר את שלושת המפתחות הגדולים ביותר בקבוצה).

נניח שמספר המפתחות בקבוצה הוא . אנא שנה את מבנה עץ החיפוש הבינרי, ובפרט את פעולת Member, כך שMember(t, x) יעבוד בזמן אם אכן איבר בקבוצה, והוא האיבר ה הקטן ביותר.

שים לב שתשובתך אמורה להיות נכונה לכל .


3[עריכה]

נתון עץ חיפוש בינרי שבו יש צומת שהמפתח בו וכן צומת שהמפתח בו . נניח .

  1. האם בהכרח הצומת של הוא צאצא של הצומת של ?
  2. רוצים לפתח שיטה לקבוע חד-חד משמעית האם הוא צאצא של הצומת של בזמן . נניח בנוסף שממשק הצומת הורחב, וכולל גם את In-Order-Num(nd) המחזיר את סדרו של nd במעבר in-order,‏ Post-Order-Num(nd) המחזיר את סדרו של nd במעבר post-order, וDescendants(nd), המחזיר את מספר הצאצאים הכולל בתת העץ של nd (כולל nd עצמו; לדוגמה אם לnd אין ילדים, אז מספר הצאצאים הוא 1).
    1. אנא הראה שאף פונקציה בנפרד איננה מספיקה לקבוע חד-משמעית יחס זה.
    2. אנא מצא שילוב פונקציות שיספיק לקביעה חד משמעית.


4[עריכה]

נתונה סידרה של מספרים גדולים או שווים ל1. תת-סידרה של X נקראת חברותית אם היא מכילה לפחות שני איברים עוקבים של X, ובדלנית אם היא איננה חברותית.




דוגמה:

נניח ש. אז:

  1. היא תת-סידרה חברותית.
  2. היא תת-סידרה בדלנית.
  3. היא תת-סידרה חברותית.
  4. היא תת-סידרה בדלנית.
  5. היא תת-סידרה בדלנית.


אנא כתוב אלגוריתם אשר מקבל סידרה ומדפיס תת-סידרה בדלנית שמכפלת איבריה גדולה ככל האפשר. (הנח שמכפלת איברי תת-סידרה ריקה היא 1.) קבע את Length(X) כ, ונתח את סיבוכיות האלגוריתם במונחי .




דוגמה:

נניח שהאלגוריתם מקבל כקלט את . במקרה זה, עליו להדפיס : זו תת-סידרה בדלנית של ,‏ ,‏ ואין תת-סידרה בדלנית אחרת שמכפלת איבריה גדולה מ35.

5[עריכה]

רשת החומוסיות מק-לאפה מתכננת להקים סניפים רבים לאורך רחוב איבן-גבירול בתל אביב. מציינים את מספרי הבתים ברחוב בהם יש מקום פנוי להקמת סניף חדש. הרשת שוקלת היכן להקים את הסניפים החדשים:

  1. מסקר שוק, הרשת מעריכה שבבית מספר רווחיה הצפויים יהיו ‏( הוא מספר חיובי כלשהו).
  2. הרשת אינה מוכנה להקים שני סניפים שמרחקם זה מזה הוא פחות מ‏ ( הוא מספר שלם חיובי כלשהו).



דוגמה:

אם והרשת בוחרת להקים סניף בבית מספר 135, אסור לה להקים סניף בבית מספר 143, שכן .


אנא כתוב אלגוריתם יעיל המקבל את המערך M (המכיל את מספרי הבתים), את המערך P (המכיל את הרווחים הצפויים), ואת המספר k (המציין את מגבלת המרחק), ומדפיס את מספרי הבתים שהקמת הסניפים בהם צפוייה למקסם את הרווחיות. אנא הוכח נכונות ונתח סיבוכיות.

6[עריכה]

בכיתה למדנו כבר על עצי חיפוש בינריים. שאלה זו עוסקת בווריאציה. עץ Foo-Bar מוגדר כך:

  1. כל צומת הוא אחד משני סוגים: צומת Foo או צומת Bar.
    1. צומת Bar מחזיק מפתח אחד ו(עד ל)2 ילדים (כמו הצמתים הרגילים שראינו).
    2. צומת Foo מחזיק 2 מפתחות ו(עד ל3 ילדים.
  2. העץ מקיים את את תכונת הFoo-Bar - לכל צומת x:
    1. כל מפתח בתת-עץ שמאלי של מפתח כלשהו, קטן או שווה לו.
    2. כל מפתח בתת-עץ ימני של מפתח כלשהו, גדול או שווה לו.
  3. כל המסלולים משורש העץ לעלה ריק (Nil) בעל אותו אורך בדיוק.



דוגמה: צומת Bar

צומת Bar.
צומת Bar.



דוגמה: צומת Foo

צומת Foo.
צומת Foo.



דוגמה: עץ Foo-Bar

להלן דוגמה לעץ Foo-Bar תקין. בעץ זה 3 צמתים (2 מסוג Bar, ו1 מסוג Foo). יש לו 4 מפתחות, וגבהו 2.

עץ Foo-Bar.
עץ Foo-Bar.


אנא הוכח שעץ Foo-Bar הוא לוגריתמי: אם יש בו מפתחות וגבהו הוא , אז .


שימו לב:

אל תתייחס לשאלה כיצד ליצור עץ כזה, או כיצד להכניס ולהוציא מפתחות ממנו - זה לא רלוונטי.