Download presentation
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.