Presentation is loading. Please wait.

Presentation is loading. Please wait.

עצים מאוזנים הגדרה: משפחת עצים תקרא מאוזנת אם ,h(T) = O(log n) באשר T הוא עץ במשפחה, n הוא מספר הצמתים ב-T ו-h(T) הוא הגובה של T עצי (Adelson-Velsky,

Similar presentations


Presentation on theme: "עצים מאוזנים הגדרה: משפחת עצים תקרא מאוזנת אם ,h(T) = O(log n) באשר T הוא עץ במשפחה, n הוא מספר הצמתים ב-T ו-h(T) הוא הגובה של T עצי (Adelson-Velsky,"— Presentation transcript:

1 עצים מאוזנים הגדרה: משפחת עצים תקרא מאוזנת אם ,h(T) = O(log n) באשר T הוא עץ במשפחה, n הוא מספר הצמתים ב-T ו-h(T) הוא הגובה של T עצי (Adelson-Velsky, Landis) AVL הגדרה: עץ AVL הוא עץ חיפוש בינרי שבו לכל צומת v התכונה : | h(v  left) – h(v  right) |  1 דוגמאות דוגמאות נגד * * בצומת בו מופר האיזון

2 מטרה: מציאת חסם לגובה של עץ AVL
כמובן, נרצה לבטא את הגובה כפונקציה של מספר הצמתים מהלך האנליזה: נגדיר את סדרת עצי פיבונצ'יFibonacci trees) ) F1,…,Fh,… נראה שקיים קבוע a כך שמספר הצמתים |Fh| בעץ Fh מקיים |Fh|>ah. נראה שמספר הצמתים |T|n= של עץ AVL כלשהו בגובה h ≤ |Fh|. מסקנה: לכל עץ AVL עם n צמתים מתקיים: n≥|Fh|>ah. לכן גובה עץ AVL חסום מלעיל ע"י logan. cs,Technion

3 חסם לגובה עץ AVL נגדיר באינדוקציה את משפחת עצי פיבונצ'יFibonacci trees) ): F F F F Fi+1 Fi-1 Fi טענה 2: . |Fh| = 1 + |Fh-1| + |Fh-2| טענה 1: לכל h, לעץ Fh גובה h. הוכחה: נכון עבור F0 ועבור F1. נמשיך באינדוקציה. מתקיים לפי הגדרת עץ פיבונצ'י: height(Fi+1) = height(Fi) + 1 = i cs,Technion

4 חסם לגובה עץ AVL (המשך) F0 F1 טענה 3: יהי T עץ AVL בעל גובה h. אזי .|T|  |Fh| הוכחה: באינדוקציה על h. נכון עבור h=0 ועבור h=1. יהי T עץ AVL בעל גובה h. יהי L תת-העץ השמאלי ו-R תת-העץ הימני כמצויר. R L T תתי העצים R ו- L הם עצי AVL בגובה קטן מהגובה של T. אחד מהם (נאמר R) בגובה h-1 והשני בגובה h-1 או h-2. לפי הנחת האינדוקציה:  |Fh-1| |R|.  min{|Fh-1 |, |Fh-2|} = |Fh-2| |L|. לכן, מהגדרת T מתקיים: |T| = 1 + |R| + |L|  1 + |Fh-1| + |Fh-2| = |Fh| cs,Technion

5 מספרי פיבונצ'י סדרת פיבונצ'י ni מוגדרת ברקורסיה באופן הבא : ni+1 = ni + ni-1 n0 = 0, n1=1 n2=1, n3=2, n4=3, n5=5, n6=8 תנאי התחלה: טענה 4: מתקיים באשר ( נקרא יחס הזהב). הערה: מכיוון שמתקיים נובע גם עבור i גדול. cs,Technion

6 על מספרי פיבונצ'י סיפור הארנבים (תרגיל בספרו משנת 1202):
פיבונאצ'י סיפור הארנבים (תרגיל בספרו משנת 1202): יש זוג ארנבים צעירים כעבור חודש מתבגרים כעבור חודש ממליטים זוג ארנבים וכו' כמה ארנבים יהיו בחודש i? cs,Technion

7 מספרי פיבונצ'י (המשך) הוכחת טענה 4: נתונה המשוואה הבאה.
הוכחת טענה 4: נתונה המשוואה הבאה. נניח פתרון מהצורה: נציב במשוואה ונקבל: משוואת ההפרשים ליניארית ולכן כל צרוף ליניארי של פתרונות מהווה פתרון: שימוש בתנאי השפה מוביל למציאת הקבועים: לפיכך פתרון המשוואה (כולל תנאי ההתחלה) הוא: cs,Technion

8 על מספרי פיבונצ'י - 2 cs,Technion

9 יחס ומלבן הזהב cs,Technion

10 לחובבי המתמטיקה נוסחאות שונות למספרי פיבונצ'י cs,Technion

11 ניתוח גובה עץ AVL טענה 5: לעץ פיבונאצ'י Fi יש |Fi| = ni צמתים כאשר ni הוא מספר פיבונצ'י ה-i. n3=2, n4=3, n5=5, n6=8 לדוגמא: F F F F3 הוכחה: באינדוקציה על i בסיס האינדוקציה: ראינו בתרשים הנחת האינדוקציה: נניח נכונות לכל i j ≤ צעד האינדוקציה: מטענה 2, הנחת האינדוקציה והגדרת מספרי פיבונצ'י,

12 ניתוח גובה עץ AVL (סיום)
טענה 6: יהי T עץ AVLבן n צמתים וגובה h, אזי h=O(log n) . לאור טענה 3 מתקיים: לאור טענות 5, 4 מתקיים: כלומר לקיחת לוגריתם משני צדי המשוואה: cs,Technion

13 איזון בעץ AVL זמן החיפוש בעץ AVL הוא O(log n). נצטרך לדאוג שלאחר הכנסה או הוצאה, העץ הנותר יהיה עץ AVL. 12 8 15 6 10 24 14 11 29 4 20 13 19 בזמן הוצאה קיימת הפרת איזון דומה. למשל בהוצאת 29. 18 לאחר הוספת האיבר 18 נתקבל עץ שאינו עץ AVL. אבל נתן לשנות את תת העץ שבו הופר האיזון בצורה הבאה: תיקון כזה נקרא גלגול. 20 19 cs,Technion

14 איזון בעץ AVL (המשך) עבור צומת v בעץ בינרי נסמן:
hL(v) גובה תת העץ השמאלי של v. hR(v) גובה תת העץ הימני של v. גורם האיזון (Balance Factor) מחושב כהפרש הגבהים:BF(v) = hL(v) – hR(v) בעץ AVL תקין: 1≤|BF(v)| 8 6 10 12 15 24 20 29 11 14 13 19 -1 +1 1+ 2+ 2- לדוגמא: מצד שמאל של כל צומת מסומן גורם האיזון. 18 אחרי ההכנסה של 18 גורם האיזון מופר על מסלול ההכנסה. cs,Technion

15 אבחנות הצמתים היחידים שאולי הופר בהם האיזון הם הצמתים לאורך מסלול הכנסה/הוצאה. אם עבור צומת v במסלול הנ"ל גובה העץ ששורשו v לא השתנה אזי גורמי האיזון בצמתים שמעליו במסלול לא השתנו. אם גורם האיזון הופך ל-2 או ל 2-, אזי יש לבצע גלגול על מנת שהעץ יחזור להיות עץ AVL. גורם האיזון לא יכול להיות גדול מ-2 בערכו המוחלט כי בכל הכנסה/הוצאה הוא משתנה ב-1 לכל היותר. גלגול– פעולה המתבצעת על צומת שהופר בו האיזון על מנת להחזירו לתחום המותר [1 … 1-]. 8 6 10 12 15 24 20 29 11 14 13 19 -1 +1 cs,Technion

16 סוגי הגלגולים סוג הגלגול, כלומר הדרך לתקן חוסר איזון בצומת, תלוי בצורה בה האיזון מופר. נתן לסווג חוסר איזון בארבע קטגוריות שונות המכסות את כל המקרים. +2 +1 1- גלגול LL גלגול LR גלגול RR 2- 1+ גלגול RL בשורש v בבן השמאלי vL הגלגול המתאים BF(v)=2 BF(vL) =1 BF(vL) = -1 בבן הימני vR LL LR BF(v)= -2 BF(vR) = -1 BF(vR) = 1 RR RL cs,Technion

17 גלגול LL +1 B +2 לפני הכנסת v : גובה העץ הוא 2+ h.
הוכנס צומת v שהגדיל את גובה AL ל-1+h . A +1 מצד ימין של הצמתים מסומנים גורמי האיזון שהשתנו. גלגול LL : יעביר את A לשורש BR h AL AR v v אחרי הגלגול: גובה העץ לאחר הגלגול הוא 2+ h, כמו לפני ההכנסה. השורש מאוזן. שינינו (1)O מצביעים ולכן זמן הגלגול (1)O. h AR AL BR B A

18 גלגול LR C לפני הכנסת איבר v : A B
AL CR BL BR h-1 h +1 +2 -1 A B C v לפני הכנסת איבר v : הוכנס איבר ל-BL שגרם לו להעלות את גובהו ל-h. גלגול LR: גובה העץ אחרי הגלגול הוא 2+h , כמו לפני ההכנסה. שינינו (1)O מצביעים ולכן זמן הגלגול (1)O. AL CR BL BR h-1 h -1 v C B A

19 דוגמא להכנסת ערך x לעץ AVL
8 6 10 4 12 15 24 20 29 11 14 13 19 18 +1 הוסף 18: לאחר גלגול LL: 8 6 10 4 12 15 24 19 29 11 14 13 18 20 cs,Technion

20 דוגמא להכנסת ערך x לעץ AVL
10 6 13 4 15 20 24 14 17 2 -1 7 12 11 הוסף 11 : לאחר גלגול LR: 10 6 13 4 15 20 24 14 17 7 12 11

21 דוגמא להכנסת ערך x לעץ AVL
8 6 10 11 19 13 25 29 23 17 12 15 -2 1 הוסף 15 (נחוץ גלגול RL) 8 6 10 13 19 11 25 29 23 17 12 15 -1 לאחר גלגול RL:

22 אלגוריתם להכנסת ערך x לעץ AVL
הכנס את x כמו לעץ חיפוש בינרי. יהי v העלה שהוסף. h(v) = 0 כל עוד v  root בצע: 4.p = parent(v) 5. אם h(p)  h(v) +1 סיים. h(p) = h(v) +1 7. אם ב- p הופר האיזון, בצע גלגול וסיים. 8. אחרת v = p איך נחשב את parent(v) ? למשל, נוציא אותו ממחסנית בה נמצאים כל הצמתים על המסלול מהשורש ועד v. cs,Technion

23 זמן ההכנסה לעץ AVL כיוון שהצומת בו עושים גלגול לא משנה את גובהו, מבצעים רק גלגול אחד. מציאת המקום הדרוש להכנסה (h)O הוספת הצומת (1)O מציאת המקום בו מופר האיזון (אם מופר) (h)O תיקון האיזון (1)O סה"כ O(h) = O(log n) cs,Technion

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

25 דוגמא להוצאה מעץ AVL -2 -1 5 5 3 8 6 10 9 7 12 11 4 2 -2 2 8 1 * 4 6
-2 -1 5 גלגול RL 5 3 8 6 10 9 7 12 11 4 2 -2 2 8 1 * 4 6 10 3 7 9 12 11 גלגול RR 5 3 8 6 10 9 7 12 11 4 2 cs,Technion

26 דוגמא: הוצאה מעץ פיבונצ'י
בהוצאה יתכן גלגול בכל צומת על המסלול בין הצומת המוצא ובין השורש. לדוגמא כאשר מוציאים עלה ראשון מעץ פיבונצ'י - Fi. A * C B תרגיל לבית: מהי סדרת הגלגולים המתבצעת כאשר מוציאים עלה ראשון מעץ פיבונצ'י - Fi. cs,Technion

27 עצי AVL מאפשרים חיפוש, הכנסה, הוצאה בזמן O(log n)
מציאת המקום הדרוש להוצאה (h)O מציאת המקום בו מופר האיזון (אם מופר) (h)O תיקון האיזון (h)O (לכל היותר פעם בכל רמה) סה"כ O(h) = O(log n) עצי AVL מאפשרים חיפוש, הכנסה, הוצאה בזמן O(log n) ראו הדגמה באתר cs,Technion


Download ppt "עצים מאוזנים הגדרה: משפחת עצים תקרא מאוזנת אם ,h(T) = O(log n) באשר T הוא עץ במשפחה, n הוא מספר הצמתים ב-T ו-h(T) הוא הגובה של T עצי (Adelson-Velsky,"

Similar presentations


Ads by Google