Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

- אמיר רובינשטיין 1 עצי חיפוש - מימוש למבנה הנתונים "מילון" עץ עץ חיפושעץ בינאריעץ מאוזן AVL עץ טרנארי 2-3 מבנה הנתונים מילון: Find(x) Insert(x)

Liknende presentasjoner


Presentasjon om: "- אמיר רובינשטיין 1 עצי חיפוש - מימוש למבנה הנתונים "מילון" עץ עץ חיפושעץ בינאריעץ מאוזן AVL עץ טרנארי 2-3 מבנה הנתונים מילון: Find(x) Insert(x)"— Utskrift av presentasjonen:

1 - אמיר רובינשטיין 1 עצי חיפוש - מימוש למבנה הנתונים "מילון" עץ עץ חיפושעץ בינאריעץ מאוזן AVL עץ טרנארי 2-3 מבנה הנתונים מילון: Find(x) Insert(x) Delete(x) ניתן לממש מילון ע"י עץ חיפוש, ואז סיבוכיות הפעולות הנ"ל היא )גובה העץO(. - עץ חיפוש לא מאוזן מאפשר ביצוע הפעולות בזמן: O(logn) בממוצע O(n) במקרה הגרוע - עץ חיפוש מאוזן מאפשר זאת ב- O(logn) במקרה הגרוע.

2 - אמיר רובינשטיין 2 עצי AVL עצי AVL (וגם עצי B+) הם דוגמאות לעצי חיפוש מאוזנים. סימונים: h L (v) – גובה תת העץ השמאלי של v. h R (v) – גובה תת העץ הימני של v. - h R (v) h L (v) BF(v) = עץ AVL: עץ חיפוש בינארי בו כל צומת v מקיים: |BF(v)| ≤ 1 עץ כזה מקיים h=O(logn) (הוכחה בהרצאות בעזרת עצי פיבונאצ'י), ולכן לפי הגדרה הינו עץ מאוזן. בעץ AVL פעולות כמו find, insert, delete דורשות זמן O(logn) במקרה הגרוע. בעיה: פעולות כמו insert, delete עשויות להפר את איזון העץ. פתרון: גלגול – פעולה המתבצעת על צומת שהופר בו גורם האיזון ומחזירה אותו לתחום המותר. סיבוכיות גלגול על צומת בודד O(1). הדגמה:http://nova.umuc.edu/~jarc/idsv/http://nova.umuc.edu/~jarc/idsv/

3 - אמיר רובינשטיין 3 דוגמא לעץ AVL

4 - אמיר רובינשטיין 4 אבחנות: 1.לאחר הכנסה או הוצאה, גורם האיזון לא יכול להיות גדול מ-2 בערכו המוחלט. 2.אם גורם האיזון של צומת הופך ל-2 או ל- -2, אז יש לבצע על צומת זה גלגול מתאים כדי שהעץ יחזור להיות עץ AVL תקין. 3.הצמתים היחידים שאולי הופר בהם גורם האיזון הם הצמתים לאורך מסלול ההכנסה/הוצאה (מהעלה שנוסף/הוסר ועד לשורש). 4.אם עבור צומת במסלול הנ"ל, גובה העץ שמתחתיו לא השתנה, אז גורמי האיזון בצמתים שמעליו במסלול לא השתנו.

5 - אמיר רובינשטיין 5 אלגוריתם לתיקון גורמי האיזון לאחר הכנסה/הוצאה: עבור מלמטה למעלה על הצמתים לאורך מסלול ההכנסה/הוצאה, ולכל צומת v: עדכן את BF(v). אם |BF(v)| = 2 - בצע גלגול מתאים והמשך כלפי מעלה. אם גובה תת העץ ש - v שורשו לא השתנה – סיים. אם גובה תת העץ השתנה ו - BF(v) תקין – המשך כלפי מעלה.

6 - אמיר רובינשטיין 6 בחירת הגלגול המתאים

7 - אמיר רובינשטיין 7 LL LR גלגול RL סימטרי לגלגול LR. בארבעת המקרים גובה תת העץ לא השתנה. לכן אין צורך להמשיך בתהליך האיזון כלפי מעלה (אבחנה 4). תיקון כל העץ לאחר הכנסה לוקח אם כן O(logn). גלגולים לאחר הכנסה: גלגול RR סימטרי לגלגול LL.

8 - אמיר רובינשטיין 8

9 9 LR LL גלגול RR סימטרי לגלגול LL. אם גובהו של B R הוא h נצטרך להמשיך בתהליך האיזון כלפי מעלה. תיקון כל העץ לאחר הוצאה לוקח אם כן O(logn). גלגולים לאחר הוצאה: גלגול RL סימטרי לגלגול LR. בכל מקרה נצטרך להמשיך בתהליך האיזון כלפי מעלה. תיקון כל העץ לאחר הוצאה לוקח אם כן O(logn).

10 - אמיר רובינשטיין 10

11 - אמיר רובינשטיין 11 הדגמות:

12 - אמיר רובינשטיין 12 תרגיל: נתונים שני עצי AVL, כל אחד בעל n צמתים. תארו אלגוריתם יעיל ככל האפשר למיזוג שני העצים לעץ AVL אחד. פתרון נאיבי: עוברים על כל אברי אחד העצים, ומכניסים אותם לעץ השני אחד אחד. סיבוכיות: מבצעים n פעולות ב- O(logn), לכן O(nlogn). פתרון יעיל: בצע סיור inorder על כל אחד מהעצים וכתוב את אבריו לתוך מערך. מזג את שני המערכים (שימו לב שהמערכים היו ממוינים). בנה מהמערך הממוזג עץ AVL באופן הבא:  בנה עץ כמעט שלם (או עץ שלם אם n חזקה שלמה של 2 פחות 1) בעל n צמתים (עדיין ללא ערכים בצמתים).  בצע סיור inorder ובמהלכו העתק לצמתים את הערכים מתוך המערך. עץ כמעט שלם O(n)


Laste ned ppt "- אמיר רובינשטיין 1 עצי חיפוש - מימוש למבנה הנתונים "מילון" עץ עץ חיפושעץ בינאריעץ מאוזן AVL עץ טרנארי 2-3 מבנה הנתונים מילון: Find(x) Insert(x)"

Liknende presentasjoner


Annonser fra Google