1 / 49

הרצאה 8: עץ בינארי מאוזן, AVL Tree

הרצאה 8: עץ בינארי מאוזן, AVL Tree. הגדרה ומטרה. גובהו של עץ בינארי מוגדר להיות המסלול הארוך שניתן ללכת עליו מהשורש לאחד העלים. ראינו שפעולות בסיסיות בעץ חיפוש בינארי, כמו חיפוש, הכנסה והוצאת ערך תלוי בגובהו של העץ. ולכן. מטרה: להקטין ככל הניתן את גובהו של עץ חיפוש בינארי. AVL Tree.

chase-lyons
Download Presentation

הרצאה 8: עץ בינארי מאוזן, AVL Tree

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. הרצאה 8: עץ בינארי מאוזן, AVL Tree מבנה נתונים , סמסטר א' תשס"ד

  2. הגדרה ומטרה גובהו של עץ בינארי מוגדר להיות המסלול הארוך שניתן ללכת עליו מהשורש לאחד העלים. ראינו שפעולות בסיסיות בעץ חיפוש בינארי, כמו חיפוש, הכנסה והוצאת ערך תלוי בגובהו של העץ. ולכן מטרה: להקטין ככל הניתן את גובהו של עץ חיפוש בינארי מבנה נתונים , סמסטר א' תשס"ד

  3. AVL Tree • AVL Tree הוא סוג של עץ חיפוש בינארי מאוזן. שמו ניתן לו על שם ממציאיו: • Adelson-Velskii and Landis • הגדרת AVL Tree : • העץ הוא עץ חיפוש בינארי • הבדל הגבהים של תתי העץ היוצאים מכל צומת הוא לכל היותר 1 • כל תת עץ הוא AVL Tree. מבנה נתונים , סמסטר א' תשס"ד

  4. דוגמאות להגדרה לא AVL AVL מבנה נתונים , סמסטר א' תשס"ד

  5. גובהו של עץ AVL • הגדרה: נאמר שעץ בינארי T בעל n צמתים הוא מאוזן אם • טענה (ללא הוכחה): עץ AVL הוא עץ מאוזן מבנה נתונים , סמסטר א' תשס"ד

  6. פקטור האיזון של צומת ב- AVL • על מנת לתחזק עץ AVL כך שישמור תמיד על איזון, נוסיף ארגומנט חדש שיקרא "פקטור האיזון" לצמתי העץ, שיכיל את המידע על הפרשי הגובה בין תת העץ הימני לתת העץ השמאלי של הצומת. • אם תת העץ הימני גבוה ב – i מתת העץ השמאלי, אזי נסמן "כבד ימני" (+i) • אם תת העץ השמאלי גבוה ב – i מתת העץ הימני, אזי נסמן "כבד שמאלי" (i-) • אם שני תתי העץ הם באותו גובה, נסמן "מאוזן" (0) • הערה: לרוב מוסיפים לכל צומת גם פקטור המציין את גובה תת העץ שהצומת היא השורש שלו. אם גורם האיזון של צומת גדל ל – 2 או ל - (2-) אזי יש לבצע רוטציה כדי לאזן את תת העץ שהיא השורש שלו. מבנה נתונים , סמסטר א' תשס"ד

  7. רוטציה שמאלית • נניח שתת העץ הימני של p גבוה ב - 2 מתת העץ השמאלי. אזי נבצע את הרוטציה בהתאם למצבים הבאים: • אם w גבוה מ – v או שווה לו: • p יהפוך להיות הבן השמאלי של u • v יהפוך להיות הבן הימני של p . • אחרת: • בצע גלגול ימני בודד ל – u • בצע גלגול שמאלי בודד ל – p. גלגול שמאלי p u גלגול ימני שמאלי v w מבנה נתונים , סמסטר א' תשס"ד

  8. p v u v u p u p p u גלגול שמאלי w v w v w גבוה מ – v גלגול ימני שמאלי w w v גבוה מ – w מבנה נתונים , סמסטר א' תשס"ד

  9. דוגמא ראשונה לרוטציה שמאלית 50 30 70 20 40 80 10 25 35 45 78 85 מבנה נתונים , סמסטר א' תשס"ד

  10. דוגמא ראשונה לרוטציה שמאלית 50 +2 p 30 70 0 u 20 40 80 0 0 w 10 25 35 45 v 78 85 מבנה נתונים , סמסטר א' תשס"ד

  11. דוגמא ראשונה לרוטציה שמאלית 50 -1 u 30 80 0 גלגול שמאלי ל - p +1 w 20 40 p 85 70 0 10 25 35 45 v 78 מבנה נתונים , סמסטר א' תשס"ד

  12. דוגמא שניה לרוטציה שמאלית 50 30 70 20 40 60 80 35 75 85 72 מבנה נתונים , סמסטר א' תשס"ד

  13. דוגמא שניה לרוטציה שמאלית 50 +2 30 70 p 0 -1 u 20 40 60 80 -1 0 35 v 75 85 w 0 72 מבנה נתונים , סמסטר א' תשס"ד

  14. דוגמא שניה לרוטציה שמאלית 50 +3 30 70 p 0 +2 v 20 40 60 75 גלגול ימני בודד ל - u -1 0 35 72 80 u 0 85 w מבנה נתונים , סמסטר א' תשס"ד

  15. דוגמא שניה לרוטציה שמאלית 50 0 v 30 75 0 -1 20 40 80 u גלגול שמאלי בודד ל - p 70 p 0 0 0 35 72 85 w 60 מבנה נתונים , סמסטר א' תשס"ד

  16. רוטציה ימנית • נניח שתת העץ השמאלי של p גבוה ב – 2 מתת העץ הימני. אזי נבצע את הרוטציה בהתאם למצבים הבאים: • אם w גבוה מ – v או שווה לו : • p יהפוך להיות הבן הימני של u • v יהפוך להיות הבן השמאלי של p . • אחרת: • בצע גלגול שמאלי בודד ל – u • בצע גלגול ימני בודד ל – p. גלגול ימני p u גלגול שמאלי ימני v w מבנה נתונים , סמסטר א' תשס"ד

  17. p p p v v u u u p u גלגול ימני w w v v w גבוה מ – v גלגול שמאלי ימני w w v גבוה מ – w מבנה נתונים , סמסטר א' תשס"ד

  18. דוגמא ראשונה לרוטציה ימנית 50 30 70 20 40 60 80 10 25 9 מבנה נתונים , סמסטר א' תשס"ד

  19. דוגמא ראשונה לרוטציה ימנית 50 -2 p 30 70 -1 0 u 20 40 60 80 -1 0 w 10 25 v 0 9 מבנה נתונים , סמסטר א' תשס"ד

  20. דוגמא ראשונה לרוטציה ימנית 50 0 u 20 70 -1 0 w p 10 30 גלגול ימני ל - p 60 80 0 0 0 v 9 25 40 מבנה נתונים , סמסטר א' תשס"ד

  21. דוגמא שניה לרוטציה ימנית 50 30 70 20 40 60 80 10 25 22 28 מבנה נתונים , סמסטר א' תשס"ד

  22. דוגמא שניה לרוטציה ימנית 50 -2 30 70 p +1 0 u 20 40 60 80 0 0 w 10 25 v 0 0 22 28 מבנה נתונים , סמסטר א' תשס"ד

  23. דוגמא שניה לרוטציה ימנית 50 -2 30 70 p -1 0 v 25 40 60 80 גלגול שמאלי בודד ל - u 0 0 u 28 20 0 0 w 10 22 מבנה נתונים , סמסטר א' תשס"ד

  24. דוגמא שניה לרוטציה ימנית 50 0 v 25 70 0 0 u 20 30 60 80 p גלגול ימני בודד ל - p 0 0 0 0 w 10 22 28 40 מבנה נתונים , סמסטר א' תשס"ד

  25. הוכחת נכונותם של הגלגולים • טענה: רוטציות בעץ משמרות את היותו עץ חיפוש בינארי • הוכחה: מספיק להסתכל על שני הגלגולים הפשוטים: • גלגול ימני: • u בן שמאלי של p, לכן קטן ממנו, ולכן העברתו של p להיות בן ימני של u תקינה • v הוא צאצא שמאלי של p, ואחרי הגלגול הוא נשאר בתת העץ השמאלי של p. • תת העץ הימני של p ותת העץ השמאלי של u נותרים כפי שהם. • גלגול שמאלי: הוכחה דומה לגלגול ימני העץ אחרי גלגול נשאר עץ חיפוש בינארי מבנה נתונים , סמסטר א' תשס"ד

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

  27. הכנסת איבר לעץ AVL • הכנס את s לעץ, והכנס את כל הצמתים שעברת במסלול למחסנית (לא כולל העלה החדש) ויהי x העלה החדש שנוסף לעץ: • הגדר פקטור האיזון של x = 0, • כל עוד x איננו השורש, בצע: • הוצא את p מהמחסנית (P הוא האבא של x בעץ) • אם סיים. • הצב • עדכן את פקטור האיזון של p • אם ב-p הופר האיזון, בצע רוטציה וסיים. • הצב הערה: שימו לב שבזמן תהליך ההכנסה מתבצעת רוטציה אחת לכל היותר מבנה נתונים , סמסטר א' תשס"ד

  28. דוגמא להכנסת איבר לעץ AVL 3 0 50 -1 2 1 0 30 70 1 0 0 0 0 0 0 0 20 40 60 80 0 0 0 0 10 25 העץ לפני ההכנסה מבנה נתונים , סמסטר א' תשס"ד

  29. דוגמא להכנסת איבר לעץ AVL 3 -1 תיאור המחסנית אחרי החיפוש: 50 30 20 25 50 2 -1 1 0 30 70 1 0 0 0 0 0 0 0 20 40 60 80 0 0 0 0 0 0 10 25 0 0 28 x הכנסת האיבר 28 מבנה נתונים , סמסטר א' תשס"ד

  30. דוגמא להכנסת איבר לעץ AVL 3 -1 תיאור המחסנית אחרי הוצאת 25: 50 30 20 50 2 -1 1 0 30 70 1 0 0 0 0 0 0 0 20 40 60 80 0 0 0 0 0 0 p 10 25 h(p) <> h(x)+1 0 0 28 x הכנסת האיבר 28 מבנה נתונים , סמסטר א' תשס"ד

  31. דוגמא להכנסת איבר לעץ AVL 3 -1 תיאור המחסנית אחרי הוצאת 25: 50 30 20 50 2 -1 1 0 30 70 1 0 0 0 0 0 0 0 20 40 60 80 1 +1 0 0 p 10 25 h(p) = h(x)+1 וכן עדכון פקטור האיזון של p 0 0 28 x הכנסת האיבר 28 מבנה נתונים , סמסטר א' תשס"ד

  32. דוגמא להכנסת איבר לעץ AVL 3 -1 תיאור המחסנית אחרי הוצאת 20: 50 30 50 2 -1 1 0 30 70 1 0 0 0 0 0 0 0 p 20 40 60 80 0 0 1 +1 x 10 25 h(p) <> h(x)+1 0 0 28 הכנסת האיבר 28 מבנה נתונים , סמסטר א' תשס"ד

  33. דוגמא להכנסת איבר לעץ AVL 3 -1 תיאור המחסנית אחרי הוצאת 20: 50 30 50 2 -1 1 0 30 70 2 +1 0 0 0 0 0 0 p 20 40 60 80 0 0 1 +1 x 10 25 h(p) = h(x)+1 ועדכון פקטור האיזון של p 0 0 28 הכנסת האיבר 28 מבנה נתונים , סמסטר א' תשס"ד

  34. דוגמא להכנסת איבר לעץ AVL 3 -1 תיאור המחסנית אחרי הוצאת 30: 50 50 2 -1 1 0 30 p 70 2 +1 0 0 0 0 0 0 x 20 40 60 80 0 0 1 +1 10 25 h(p) <> h(x)+1 0 0 28 הכנסת האיבר 28 מבנה נתונים , סמסטר א' תשס"ד

  35. דוגמא להכנסת איבר לעץ AVL 3 -1 תיאור המחסנית אחרי הוצאת 30: 50 50 3 -2 1 0 30 p 70 2 +1 0 0 0 0 0 0 x 20 40 60 80 0 0 1 +1 10 25 h(p) = h(x)+1 ועדכון פקטור האיזון של p 0 0 28 הכנסת האיבר 28 מבנה נתונים , סמסטר א' תשס"ד

  36. דוגמא להכנסת איבר לעץ AVL 3 -1 תיאור המחסנית אחרי הוצאת 30: 50 50 3 -2 1 0 30 p 70 2 +1 0 0 0 0 0 0 20 u 40 60 80 0 0 1 +1 v w 10 25 הפרת איזון ב - p 0 0 28 הכנסת האיבר 28 מבנה נתונים , סמסטר א' תשס"ד

  37. דוגמא להכנסת איבר לעץ AVL 3 -1 תיאור המחסנית אחרי הוצאת 30: 50 50 -2 1 0 30 p 70 -1 0 0 0 0 0 v 25 40 60 80 0 0 u 28 20 גלגול שמאלי בודד ל - u 0 0 w 10 22 הכנסת האיבר 28 מבנה נתונים , סמסטר א' תשס"ד

  38. דוגמא להכנסת איבר לעץ AVL 3 -1 תיאור המחסנית אחרי הוצאת 30: 50 50 02 1 0 v 25 70 01 01 0 0 0 0 u 20 30 p 60 80 00 00 00 00 גלגול ימני בודד ל - p w 10 22 28 40 הכנסת האיבר 28 מבנה נתונים , סמסטר א' תשס"ד

  39. דוגמא להכנסת איבר לעץ AVL 3 -1 50 02 1 0 25 70 01 01 0 0 0 0 20 30 60 80 00 00 00 00 10 22 28 40 ריקון המחסנית והחזרת העץ המאוזן הכנסת האיבר 28 מבנה נתונים , סמסטר א' תשס"ד

  40. הוצאת איבר מעץ AVL • הוצא את s מהעץ, והכנס את כל הצמתים שעברת במסלול למחסנית (כולל האיבר המוצא אם יש צורך במקרה של ביטול צומת עם שני בנים) • לכל צומת x במסלול ההוצאה בצע את הצעדים הבאים: • עדכן את פקטור האיזון של x לפי הפרש גבהי תתי העצים שהוא השורש שלהם ברגע זה • עדכן את גובהו של x לפי גבהי תתי העצים המעודכנים שלו • אם פקטור האיזון הוא 2 או 2- אז בצע רוטציה מתאימה והמשך . • אם גובה תת העץ ש – x הוא השורש שלו לא השתנה, סיים • אם גובה תת העץ השתנה אך פקטור האיזון תקין, המשך. הערה: שימו לב שבזמן התהליך יתכנו מספר רוטציות מבנה נתונים , סמסטר א' תשס"ד

  41. דוגמא להוצאת איבר מעץ AVL 1- 4 50 1+ 2 1+ 3 70 30 0 0 0 1 1- 1 1+ 2 60 80 20 40 0 0 0 0 1+ 1 0 0 0 0 10 35 44 75 85 0 0 48 העץ לפני ההוצאה מבנה נתונים , סמסטר א' תשס"ד

  42. דוגמא להוצאת איבר מעץ AVL 1- 4 50 המחסנית ההתחלתית: 40 "30" 50 1+ 2 1+ 3 30 70 70 0 0 0 1 1- 1 1+ 2 60 60 80 80 20 20 40 40 0 0 0 0 1+ 1 0 0 0 0 10 10 35 44 44 75 75 85 85 0 0 48 48 הוצאת האיבר 30 מבנה נתונים , סמסטר א' תשס"ד

  43. דוגמא להוצאת איבר מעץ AVL 1- 4 50 המחסנית אחרי הוצאת 40: "30" 50 1+ 2 1+ 3 70 35 0 0 0 1 1- 1 2+ 2 x 60 80 20 40 0 0 1+ 1 0 0 0 0 u 10 44 75 85 עדכון פקטור האיזון של x הפרת איזון ב - x 0 0 48 w הוצאת האיבר 30 מבנה נתונים , סמסטר א' תשס"ד

  44. דוגמא להוצאת איבר מעץ AVL 1- 4 50 המחסנית אחרי הוצאת 40: "30" 50 1+ 2 1+ 3 70 35 0 0 0 1 1- 1 0 1 60 80 20 44 0 0 0 0 0 0 0 0 0 0 x 10 40 48 75 85 רוטציה שמאלית ל – x גובה תת העץ של x השתנה הוצאת האיבר 30 מבנה נתונים , סמסטר א' תשס"ד

  45. דוגמא להוצאת איבר מעץ AVL 1- 4 1+ 3 50 המחסנית אחרי הוצאת "30": 50 1+ 2 0 2 70 x 35 0 0 0 1 1- 1 0 1 60 80 20 44 0 0 0 0 0 0 0 0 0 0 אין צורך ברוטציה, אבל גובה תת העץ ש – x מצביע עליו השתנה מזה שנשמר במחסנית 10 40 48 75 85 הוצאת האיבר 30 מבנה נתונים , סמסטר א' תשס"ד

  46. דוגמא להוצאת איבר מעץ AVL 0 3 x 50 המחסנית אחרי הוצאת 50: ריקה 1+ 2 0 2 70 35 0 0 0 1 1- 1 0 1 60 80 20 44 0 0 0 0 0 0 0 0 0 0 עדכון פקטור האיזון של x: תקין 10 40 48 75 85 הוצאת האיבר 30 מבנה נתונים , סמסטר א' תשס"ד

  47. דוגמא להוצאת איבר מעץ AVL 0 3 50 1+ 2 0 2 70 35 0 1 0 0 0 1 1- 1 60 80 20 44 0 0 0 0 0 0 0 0 0 0 10 40 48 75 85 העץ המאוזן אחרי הוצאת האיבר 30 מבנה נתונים , סמסטר א' תשס"ד

  48. דוגמא http://www.seanet.com/users/arsen/avltree.html הערה: שימו לב שבדוגמא זו, כאשר מורידים צומת מהעץ, המחליף הוא הקודם לערך ולא העוקב, כפי שלמדנו בהרצאה 7 מבנה נתונים , סמסטר א' תשס"ד

  49. זמני ריצה של הכנסה והוצאת איבר מעץ AVL ? מבנה נתונים , סמסטר א' תשס"ד

More Related