Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

עצי חיפוש - מימוש למבנה הנתונים "מילון"

Liknende presentasjoner


Presentasjon om: "עצי חיפוש - מימוש למבנה הנתונים "מילון""— Utskrift av presentasjonen:

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

2 amirrub@cs - אמיר רובינשטיין
עצי AVL עצי AVL (וגם עצי B+) הם דוגמאות לעצי חיפוש מאוזנים. סימונים: hL(v) – גובה תת העץ השמאלי של v. hR(v) – גובה תת העץ הימני של v. - hR(v) hL(v) BF(v) = עץ AVL: עץ חיפוש בינארי בו כל צומת v מקיים: |BF(v)| ≤ 1 עץ כזה מקיים h=O(logn) (הוכחה בהרצאות בעזרת עצי פיבונאצ'י), ולכן לפי הגדרה הינו עץ מאוזן. בעץ AVL פעולות כמו find, insert, delete דורשות זמן O(logn) במקרה הגרוע. בעיה: פעולות כמו insert, delete עשויות להפר את איזון העץ. פתרון: גלגול – פעולה המתבצעת על צומת שהופר בו גורם האיזון ומחזירה אותו לתחום המותר. סיבוכיות גלגול על צומת בודד O(1). הדגמה: - אמיר רובינשטיין

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

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

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

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

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

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

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

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

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

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


Laste ned ppt "עצי חיפוש - מימוש למבנה הנתונים "מילון""

Liknende presentasjoner


Annonser fra Google