View
248
Download
0
Embed Size (px)
Citation preview
AVL
מאוזנים עציםבאשר h(T) = O(log n) ,אםמאוזנת משפחת עצים תקרא :הגדרה
T ,הוא עץ במשפחה n -הוא מספר הצמתים ב T-ו h(T) הוא הגובה Adelson-Velsky, Landis (AVL(עצי T של
: התכונהv הוא עץ חיפוש בינרי שבו לכל צומת AVL עץ :הגדרה
|h(v left) – h(v right) | 1 דוגמאות
דוגמאות נגד
***
* בצומת בו מופר האיזון
cs,Technion
13AVL
בעץ AVLאיזון. נצטרך לדאוג שלאחר הכנסה O(log n) הוא AVLזמן החיפוש בעץ
.AVLאו הוצאה, העץ הנותר יהיה עץ
8
6 10
4
12
1524
20 291114
1319
. 29בזמן הוצאה קיימת הפרת איזון דומה. למשל בהוצאת
18
נתקבל עץ שאינו עץ 18לאחר הוספת האיבר AVL אבל נתן לשנות את תת העץ שבו הופר .
האיזון בצורה הבאה:
.גלגולתיקון כזה נקרא
20
19
18
19
18 20
cs,Technion
14AVL
בעץ (AVLאיזון המשך ) בעץ בינרי נסמן:vעבור צומת
hL(v) גובה תת העץ השמאלי שלv.
hR(v) גובה תת העץ הימני שלv.
מחושב כהפרש ) Balance Factor (גורם האיזון BF(v) = hL(v) – hR(v)הגבהים:
18
גורם האיזון מופר על מסלול ההכנסה.18אחרי ההכנסה של
מצד שמאל של כל צומת מסומן גורם האיזון.
לדוגמא:8
6 10
12
15
24
20 2911
14
13
19
0
-1
0
0
0
-1
-1
-1
+1 +1
+1
01+
2+
2+
2-
2-
|BF(v)|≥1 תקין: AVLבעץ
cs,Technion
15AVL
אבחנותהצמתים היחידים שאולי הופר בהם האיזון הם הצמתים לאורך מסלול הכנסה/הוצאה.1.
לא השתנה אזי גורמי האיזון בצמתים v במסלול הנ"ל גובה העץ ששורשו vאם עבור צומת 2.שמעליו במסלול לא השתנו.
.AVL-, אזי יש לבצע גלגול על מנת שהעץ יחזור להיות עץ 2 או ל 2אם גורם האיזון הופך ל-3.
בערכו המוחלט כי בכל הכנסה/הוצאה הוא משתנה 2גורם האיזון לא יכול להיות גדול מ-4. לכל היותר.1ב-
– פעולה המתבצעת על צומת שהופר בו האיזון על מנת להחזירו גלגול 5. -[.1 … 1לתחום המותר ]
8
6 10
12
15
24
20 291114
13
19
0
-1
0
0
0
-1
-1
-1
+1 +1
+1
0
cs,Technion
16AVL
הגלגולים סוגי , , האיזון בה בצורה תלוי בצומת איזון חוסר לתקן הדרך כלומר הגלגול סוגכל. את המכסות שונות קטגוריות בארבע איזון חוסר לסווג נתן מופר
המקרים.
השמאלי vבשורש המתאים vLבבן הגלגול
BF(v)=2
BF(v)=2BF(vL) =1
BF(vL) = -1
הימני vRבבן
LL
LR
BF(v)= -2
BF(v)= -2
BF(vR) = -1
BF(vR) = 1
RR
RL
+2
+1
+2
1-
LLגלגול LRגלגול RRגלגול
2-
1+
2-
1-
RLגלגול
17AVL
LLגלגול .h+ 2: גובה העץ הוא vלפני הכנסת
. h+1 ל-AL שהגדיל את גובה vהוכנס צומת
AL
BR
+1
0
AR
h
+1
+2
מצד ימין של הצמתים מסומנים גורמי האיזון שהשתנו.
לשורשA : יעביר את LLגלגול
B
A
v
v
:אחרי הגלגול
, h+ 2גובה העץ לאחר הגלגול הוא כמו לפני ההכנסה. השורש מאוזן.
מצביעים ולכן זמן הגלגול O)1שינינו ()1(O.
h
0
AR
AL
BR
0B
A
18AVL
איבר הכנסת : vלפני
שגרם לו BLהוכנס איבר ל-.hלהעלות את גובהו ל-
:LRגלגול
LRגלגול
AL
CR
0
BL BR
h-1
h0
+1 +2
-1
+1
A
B
C
v
גובה העץ אחרי הגלגול , כמו לפני h+2הוא
ההכנסה.
מצביעים O)1שינינו (.O)1ולכן זמן הגלגול (
AL CR
0
BL BR
h-1h
0
h
-1
v
C
B
A
cs,Technion
19AVL
ערך להכנסת AVLלעץ xדוגמא
8
6 10
4
12
15
24
20 291114
13
19
18
+1
:18הוסף
:LLלאחר גלגול
8
6 10
4
12
15
24
19 291114
13
18 20
0
20AVL ערך להכנסת AVLלעץ xדוגמא
:11הוסף
10
6 13
4
15
2024
14
17
2
-1
7 12
11
:LRלאחר גלגול
10
6
13
4
15
2024
14
177
12
11
21AVL ערך להכנסת AVLלעץ xדוגמא
)RL (נחוץ גלגול 15הוסף
86 10
11
1913 25
29231712
15
-2
1
:RLלאחר גלגול
86 10
13
1911
252923
1712
15
-1
0
cs,Technion
22AVL
ערך להכנסת AVLלעץ xאלגוריתם
העלה שהוסף.v כמו לעץ חיפוש בינרי. יהי xהכנס את 1.
.2h(v) = 0
בצע:v root כל עוד 3.
4.p = parent(v)
סיים.h(p) h(v) +1. אם 5
6. h(p) = h(v) +1
הופר האיזון, בצע גלגול וסיים.p. אם ב- 7
v = p. אחרת 8
? parent(v)איך נחשב את
.vלמשל, נוציא אותו ממחסנית בה נמצאים כל הצמתים על המסלול מהשורש ועד
cs,Technion
23AVL
ההכנסה AVLעץ לזמן
כיוון שהצומת בו עושים גלגול לא משנה את גובהו, מבצעים רק גלגול אחד.
h(Oמציאת המקום הדרוש להכנסה (
O)1הוספת הצומת (
מציאת המקום בו מופר האיזון
h(O(אם מופר) (
O)1תיקון האיזון (
O(h) = O(log n)סה"כ
cs,Technion
24AVL
הוצאה אלגוריתם כפי שהפעולה מתבצעת בעץ חיפוש בינרי.vהוצא צומת •
לאורך המסלול vתקן את גורמי האיזון בצורה הבאה. לכל צומת •
החל מלמטה ועד לשורש בצע:
BF(v)עדכן את•
, בצע גלגול והמשך כלפי מעלה. BF(v)| = 2|אם •
לא השתנה, סיים. vאם גובה תת העץ ששורשו •
תקין, המשך כלפי מעלה. BF(v)אם גובה תת העץ השתנה ו-•
בהוצאה יתכן יותר מגלגול אחד.
cs,Technion
25AVL
מעץ להוצאה AVLדוגמא5
2 8
6 10
97 12
11
4*
3
-2
1
RLגלגול
5
3 8
6 10
97 12
11
42
RRגלגול 5
3
8
6
10
9
7
12
1142
0
-2
-1
0
0
0
cs,Technion
26AVL מעץ הוצאהדוגמא: פיבונצ'י
A
C*
B
בהוצאה יתכן גלגול בכל צומת על המסלול בין הצומת המוצא ובין
השורש.
לדוגמא כאשר מוציאים עלה ראשון .Fiמעץ פיבונצ'י -
כאשר : מהי סדרת הגלגולים המתבצעת תרגיל לבית.Fiמוציאים עלה ראשון מעץ פיבונצ'י -
cs,Technion
27AVL
מעץ ההוצאה AVLזמן
h(Oמציאת המקום הדרוש להוצאה (
מציאת המקום בו מופר האיזון
h(O(אם מופר) (
h(Oתיקון האיזון (
(לכל היותר פעם בכל רמה)
O(h) = O(log n)סה"כ
O(log n) מאפשרים חיפוש, הכנסה, הוצאה בזמן AVLעצי
ראו הדגמה באתר
http://www.compapp.dcu.ie/~aileen/balance/