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

Post on 15-Jan-2016

248 views 0 download

Transcript of AVL עצים מאוזנים הגדרה: משפחת עצים תקרא מאוזנת אם,h(T) = O(log...

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/