16
AVL םםםם םםםםםםם םםםםם: אאאאא אאאא אאאא אאאאאא אא, h(T) = O(log n) אאאאT אאא אא אאאאאא,n אאא אאאא- אאאאאא אT - אh(T) אאא אאאאא אאT אאא) Adelson-Velsky, Landis ( AVL םםםםם: אאAVL אאא אא אאאאא אאאאא אאא אאא אאאאv אאאאאא: | h(v left) h(v right) | 1 אאאאאאא אאאאאאא אאא* * * * אאאאא אא אאאא אאאאאא

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

  • View
    248

  • Download
    0

Embed Size (px)

Citation preview

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

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 דוגמאות

דוגמאות נגד

***

* בצומת בו מופר האיזון

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

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

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

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בעץ

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

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

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

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גלגול

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

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

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

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

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

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

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

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

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

21AVL ערך להכנסת AVLלעץ xדוגמא

)RL (נחוץ גלגול 15הוסף

86 10

11

1913 25

29231712

15

-2

1

:RLלאחר גלגול

86 10

13

1911

252923

1712

15

-1

0

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

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למשל, נוציא אותו ממחסנית בה נמצאים כל הצמתים על המסלול מהשורש ועד

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

cs,Technion

23AVL

ההכנסה AVLעץ לזמן

כיוון שהצומת בו עושים גלגול לא משנה את גובהו, מבצעים רק גלגול אחד.

h(Oמציאת המקום הדרוש להכנסה (

O)1הוספת הצומת (

מציאת המקום בו מופר האיזון

h(O(אם מופר) (

O)1תיקון האיזון (

O(h) = O(log n)סה"כ

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

cs,Technion

24AVL

הוצאה אלגוריתם כפי שהפעולה מתבצעת בעץ חיפוש בינרי.vהוצא צומת •

לאורך המסלול vתקן את גורמי האיזון בצורה הבאה. לכל צומת •

החל מלמטה ועד לשורש בצע:

BF(v)עדכן את•

, בצע גלגול והמשך כלפי מעלה. BF(v)| = 2|אם •

לא השתנה, סיים. vאם גובה תת העץ ששורשו •

תקין, המשך כלפי מעלה. BF(v)אם גובה תת העץ השתנה ו-•

בהוצאה יתכן יותר מגלגול אחד.

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

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

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

cs,Technion

26AVL מעץ הוצאהדוגמא: פיבונצ'י

A

C*

B

בהוצאה יתכן גלגול בכל צומת על המסלול בין הצומת המוצא ובין

השורש.

לדוגמא כאשר מוציאים עלה ראשון .Fiמעץ פיבונצ'י -

כאשר : מהי סדרת הגלגולים המתבצעת תרגיל לבית.Fiמוציאים עלה ראשון מעץ פיבונצ'י -

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

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/