הרצאה 8: עץ בינארי מאוזן, avl tree

49
שששש שששששש , ששששש ש' שש ש"ש1 ההההה8 : הה הההההה ההההה,AVL Tree

Upload: chase-lyons

Post on 02-Jan-2016

78 views

Category:

Documents


1 download

DESCRIPTION

הרצאה 8: עץ בינארי מאוזן, AVL Tree. הגדרה ומטרה. גובהו של עץ בינארי מוגדר להיות המסלול הארוך שניתן ללכת עליו מהשורש לאחד העלים. ראינו שפעולות בסיסיות בעץ חיפוש בינארי, כמו חיפוש, הכנסה והוצאת ערך תלוי בגובהו של העץ. ולכן. מטרה: להקטין ככל הניתן את גובהו של עץ חיפוש בינארי. AVL Tree. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

1מבנה נתונים , סמסטר א' תשס"ד

, 8הרצאה מאוזן: בינארי AVLעץTree

Page 2: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

2מבנה נתונים , סמסטר א' תשס"ד

הגדרה ומטרהללכת שניתן הארוך המסלול להיות מוגדר בינארי עץ של גובהו

. העלים לאחד מהשורש עליו

, , הכנסה חיפוש כמו בינארי חיפוש בעץ בסיסיות שפעולות ראינו . העץ של בגובהו תלוי ערך והוצאת

ולכן

עץ: של גובהו את הניתן ככל להקטין מטרהבינארי חיפוש

Page 3: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

3מבנה נתונים , סמסטר א' תשס"ד

AVL TreeAVL Tree . על לו ניתן שמו מאוזן בינארי חיפוש עץ של סוג הוא

: ממציאיו שם

Adelson-Velskii and Landis

:AVL Treeהגדרת

בינארי 1. חיפוש עץ הוא העץ

לכל 2. הוא צומת מכל היוצאים העץ תתי של הגבהים הבדל1היותר

הוא 3. עץ תת .AVL Treeכל

Page 4: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

4מבנה נתונים , סמסטר א' תשס"ד

דוגמאות להגדרה

AVLלא AVL

Page 5: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

5מבנה נתונים , סמסטר א' תשס"ד

AVLגובהו של עץ

צמתים הוא מאוזן אםn בעל T נאמר שעץ בינארי הגדרה:•

הוא עץ מאוזן AVL עץ טענה )ללא הוכחה(:•

)(log)( nOTh

Page 6: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

6מבנה נתונים , סמסטר א' תשס"ד

AVLפקטור האיזון של צומת ב-

עץ לתחזק מנת , AVLעל נוסיף איזון על תמיד שישמור כךשיקרא חדש "ארגומנט האיזון" , פקטור את שיכיל העץ לצמתי

של השמאלי העץ לתת הימני העץ תת בין הגובה הפרשי על המידעהצומת.

ב – • גבוה הימני העץ תת , " iאם כבד נסמן אזי השמאלי העץ מתת(i+ימני" )

ב – • גבוה השמאלי העץ תת , " iאם כבד נסמן אזי הימני העץ מתת-(iשמאלי" )

•( " " , מאוזן נסמן גובה באותו הם העץ תתי שני (0אם

תת: • גובה את המציין פקטור גם צומת לכל מוסיפים לרוב הערה. שלו השורש היא שהצומת העץ

ל – גדל צומת של האיזון גורם ל - )2אם רוטציה-( 2או לבצע יש אזי. שלו השורש שהיא העץ תת את לאזן כדי

Page 7: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

7מבנה נתונים , סמסטר א' תשס"ד

של הימני העץ שתת ב - pנניח העץ 2גבוה מתתבהתאם. הרוטציה את נבצע אזי השמאלי

: הבאים למצבים

מ – wאם :vגבוה לו שווה או

.1 p של השמאלי הבן להיות uיהפוך

.2v של הימני הבן להיות .pיהפוך

אחרת:

ל – • בודד ימני גלגול uבצע

ל – • בודד שמאלי גלגול .pבצע

רוטציה שמאלית

p

u

wv

Page 8: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

8מבנה נתונים , סמסטר א' תשס"ד

pu

u

p

u

v

pv

up

w – מ vגבוה

v – מ wגבוה

wvwv

ww

Page 9: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

9מבנה נתונים , סמסטר א' תשס"ד

דוגמא ראשונה לרוטציה שמאלית

50

30

70

80

40

20

10

35

45

25

78

85

Page 10: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

10מבנה נתונים , סמסטר א' תשס"ד

דוגמא ראשונה לרוטציה שמאלית

50

30

70

80

40

20

10

35

45

25

78

85

p

u

wv

+2

0

00

Page 11: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

11מבנה נתונים , סמסטר א' תשס"ד

דוגמא ראשונה לרוטציה שמאלית

50

30

80

70

40

20

10

35

45

25

78

85

p

u

w

v

-1

0+1

0

גלגול ל - שמאלי

p

Page 12: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

12מבנה נתונים , סמסטר א' תשס"ד

דוגמא שניה לרוטציה שמאלית

50

30

70

80

60

40

20

75

35

85

72

Page 13: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

13מבנה נתונים , סמסטר א' תשס"ד

דוגמא שניה לרוטציה שמאלית

50

30

70

80

60

40

20

75

35

85

72

p

u

wv

+2

-10

0-1

0

Page 14: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

14מבנה נתונים , סמסטר א' תשס"ד

דוגמא שניה לרוטציה שמאלית

50

30

70

75

60

40

20

35

80

p

v

u

+3

+20

-1

85

w0

72

0 ימני גלגולל - uבודד

Page 15: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

15מבנה נתונים , סמסטר א' תשס"ד

דוגמא שניה לרוטציה שמאלית

50

30

70

75

60

40

20

35

80

p

v

u

0

0

-1

85

w0

72

0

0

גלגול שמאלי

ל - pבודד

Page 16: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

16מבנה נתונים , סמסטר א' תשס"ד

של השמאלי העץ שתת ב – pנניח מתת 2גבוה . בהתאם הרוטציה את נבצע אזי הימני העץ

: הבאים למצבים

מ – wאם לו :vגבוה שווה או

.1 p של הימני הבן להיות uיהפוך

.2v של השמאלי הבן להיות .pיהפוך

אחרת:

ל – • בודד שמאלי גלגול uבצע

ל – • בודד ימני גלגול .pבצע

ימנית רוטציה

p

u

w v

Page 17: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

17מבנה נתונים , סמסטר א' תשס"ד

up

p

u

u

v

pv

u p

w – מ גבוהv

v – מ גבוהw

ww

ww

vv

Page 18: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

18מבנה נתונים , סמסטר א' תשס"ד

דוגמא ראשונה לרוטציה ימנית

50

30

70

80

60

40

20

10

25

9

Page 19: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

19מבנה נתונים , סמסטר א' תשס"ד

דוגמא ראשונה לרוטציה ימנית

50

30

70

80

60

40

20

10

25

9

p

u

w v

-2

0-1

0-1

0

Page 20: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

20מבנה נתונים , סמסטר א' תשס"ד

דוגמא ראשונה לרוטציה ימנית

50

30

70

80

60

40

20

10

25

9

p

u

w

v

0

0

0-1

0 0גלגול

ל - ימניp

Page 21: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

21מבנה נתונים , סמסטר א' תשס"ד

דוגמא שניה לרוטציה ימנית

50

30

70

80

60

40

20

10

22

28

25

Page 22: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

22מבנה נתונים , סמסטר א' תשס"ד

דוגמא שניה לרוטציה ימנית

50

30

70

80

60

40

20

10

22

28

25

p

u

w v

-2

0+1

00

0 0

Page 23: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

23מבנה נתונים , סמסטר א' תשס"ד

דוגמא שניה לרוטציה ימנית

50

30

70

80

60

40

25

10

28

20

p

u

w

v

-2

0-1

00

0

22

0

גלגול שמאלי

ל - uבודד

Page 24: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

24מבנה נתונים , סמסטר א' תשס"ד

דוגמא שניה לרוטציה ימנית

50

30

70

80

60

40

25

10

28

20

pu

w

v

0

0

00

0

22

ימני 00 גלגולל - pבודד

Page 25: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

25מבנה נתונים , סמסטר א' תשס"ד

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

: מספיק להסתכל על שני הגלגולים הפשוטים:הוכחה•

גלגול ימני:•

–u בן שמאלי של p לכן קטן ממנו, ולכן העברתו של ,p להיות בן תקינהuימני של

– v הוא צאצא שמאלי של p ואחרי הגלגול הוא נשאר בתת העץ ,.pהשמאלי של

נותרים כפי u ותת העץ השמאלי של pתת העץ הימני של –שהם.

גלגול שמאלי: הוכחה דומה לגלגול ימני•

חיפוש עץ נשאר גלגול אחרי העץבינארי

Page 26: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

26מבנה נתונים , סמסטר א' תשס"ד

אבחנה חשובה

הפרת איזון בעץ בזמן הכנסת או הוצאת איבר, תתכן רק בצמתים שהן על מסלול הכנסת או הוצאת האיבר

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

המוזזים הצמתים

Page 27: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

27מבנה נתונים , סמסטר א' תשס"ד

AVLהכנסת איבר לעץ את 1. , sהכנס במסלול שעברת הצמתים כל את והכנס לעץ

) ויהי ) החדש העלה כולל לא החדש xלמחסנית העלה: לעץ שנוסף

של 2. האיזון פקטור , x = 0הגדר

עוד 3. :xכל , בצע השורש איננו

את 1. של Pמהמחסנית )pהוצא האבא ( xהוא בעץ

.2. סיים אם

הצב 3.

של 4. האיזון פקטור את pעדכן

.5- ב .pאם , וסיים רוטציה בצע האיזון הופר

הצב 6.

0)( xh

1)()( xhph

1)()( xhph

px אחת: רוטציה מתבצעת ההכנסה תהליך שבזמן לב שימו הערה

היותר לכל

Page 28: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

28מבנה נתונים , סמסטר א' תשס"ד

AVLדוגמא להכנסת איבר לעץ

50

30

70

80

60

40

20

10

25

-1

00

00

0

0

00

לפני העץההכנסה

3

1

00

2

01

0 0

Page 29: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

29מבנה נתונים , סמסטר א' תשס"ד

AVLדוגמא להכנסת איבר לעץ

50

30

70

80

60

40

20

10

28

25

x

האיבר הכנסת28

המחסנית תיאור: החיפוש אחרי

50 30 20 25

3- 1

1 0

0 00 0

2- 1

1 0

0 0 0 0

0 0

0 0

0 0

Page 30: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

30מבנה נתונים , סמסטר א' תשס"ד

AVLדוגמא להכנסת איבר לעץ

50

30

70

80

60

40

20

10

28

25

x

האיבר הכנסת28

המחסנית תיאורהוצאת :25אחרי

50 30 20

3- 1

1 0

0 00 0

2- 1

1 0

0 0 0 0

0 0

0 0

0 0

p

h(p) <> h(x)+1

Page 31: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

31מבנה נתונים , סמסטר א' תשס"ד

AVLדוגמא להכנסת איבר לעץ

50

30

70

80

60

40

20

10

28

25

x

האיבר הכנסת28

המחסנית תיאורהוצאת :25אחרי

50 30 20

3- 1

1 0

0 00 0

2- 1

1 0

0 0

0 0

1 +1

0 0

p h(p) = h(x)+1

פקטור עדכון וכןשל pהאיזון

Page 32: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

32מבנה נתונים , סמסטר א' תשס"ד

AVLדוגמא להכנסת איבר לעץ

50

30

70

80

60

40

20

10

28

25

x

האיבר הכנסת28

המחסנית תיאורהוצאת :20אחרי

50 30

3- 1

1 0

0 00 0

2- 1

1 0

0 0

0 0

1 +1

0 0

p

h(p) <> h(x)+1

Page 33: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

33מבנה נתונים , סמסטר א' תשס"ד

AVLדוגמא להכנסת איבר לעץ

50

30

70

80

60

40

20

10

28

25

x

האיבר הכנסת28

המחסנית תיאורהוצאת :20אחרי

50 30

3- 1

1 0

0 00 0

2- 1

2 +1

0 0

0 0

1 +1

0 0

p

h(p) = h(x)+1

של האיזון פקטור ועדכוןp

Page 34: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

34מבנה נתונים , סמסטר א' תשס"ד

AVLדוגמא להכנסת איבר לעץ

50

30

70

80

60

40

20

10

28

25

x

האיבר הכנסת28

המחסנית תיאורהוצאת :30אחרי

50

3- 1

1 0

0 00 0

2- 1

2 +1

0 0

0 0

1 +1

0 0

p

h(p) <> h(x)+1

Page 35: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

35מבנה נתונים , סמסטר א' תשס"ד

AVLדוגמא להכנסת איבר לעץ

50

30

70

80

60

40

20

10

28

25

x

האיבר הכנסת28

המחסנית תיאורהוצאת :30אחרי

50

3- 1

1 0

0 00 0

3- 2

2 +1

0 0

0 0

1 +1

0 0

p

h(p) = h(x)+1

של האיזון פקטור ועדכוןp

Page 36: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

36מבנה נתונים , סמסטר א' תשס"ד

AVLדוגמא להכנסת איבר לעץ

50

30

70

80

60

40

20

10

28

25

v

האיבר הכנסת28

המחסנית תיאורהוצאת :30אחרי

50

3- 1

1 0

0 00 0

3- 2

2 +1

0 0

0 0

1 +1

0 0

p

ב איזון הפרת -p

u

w

Page 37: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

37מבנה נתונים , סמסטר א' תשס"ד

30

40

25

10

28

20

p

u

w

v

- 2

0-1

00

0

22

0גלגול

שמאלי ל - uבודד

AVLדוגמא להכנסת איבר לעץ

50

70

80

60

האיבר הכנסת28

המחסנית תיאורהוצאת :30אחרי

50

3- 1

1 0

0 00 0

Page 38: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

38מבנה נתונים , סמסטר א' תשס"ד

30

40

25

10

28

20

pu

w

v0 2

22

ימני גלגולל - pבודד

AVLדוגמא להכנסת איבר לעץ

50

70

80

60

האיבר הכנסת28

המחסנית תיאורהוצאת :30אחרי

50

3- 1

1 0

0 00 00 10 1

0 0 0 0 0 0 0 0

Page 39: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

39מבנה נתונים , סמסטר א' תשס"ד

30

40

25

10

28

20

0 2

22

המחסנית ריקוןהעץ והחזרת

המאוזן

AVLדוגמא להכנסת איבר לעץ

50

70

80

60

האיבר הכנסת28

3- 1

1 0

0 00 00 10 1

0 0 0 0 0 0 0 0

Page 40: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

40מבנה נתונים , סמסטר א' תשס"ד

AVLהוצאת איבר מעץ את 1. , sהוצא במסלול שעברת הצמתים כל את והכנס מהעץ

של ) במקרה צורך יש אם המוצא האיבר כולל למחסנית ) בנים שני עם צומת ביטול

צומת 2. : xלכל הבאים הצעדים את בצע ההוצאה במסלול

.a של האיזון פקטור את תתי xעדכן גבהי הפרש לפיזה ברגע שלהם השורש שהוא העצים

.b של גובהו את המעודכנים xעדכן העצים תתי גבהי לפישלו

.c הוא האיזון פקטור מתאימה- 2או 2אם רוטציה בצע אזוהמשך .

.d – ש העץ תת גובה , xאם השתנה לא שלו השורש הואסיים

.e , תקין האיזון פקטור אך השתנה העץ תת גובה אםהמשך.

רוטציות: מספר יתכנו התהליך שבזמן לב שימו הערה

Page 41: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

41מבנה נתונים , סמסטר א' תשס"ד

AVLדוגמא להוצאת איבר מעץ

50

30

70

80

60

40

20

75

35

85

ההוצאה לפני העץ

44

48

10

1- 4

1+ 3

1- 1

0 0

1+ 2

1+ 1

0 0

0 0

1+ 2

0 1

0 00 0

0 0

Page 42: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

42מבנה נתונים , סמסטר א' תשס"ד

AVLדוגמא להוצאת איבר מעץ

50

70

80

60

40

20

75

35

85

האיבר 30הוצאת

44

48

10

המחסנית ההתחלתית:

40" 30 "5030

70

80

60

40

20

75

85

44

48

10

1- 4

1+ 3

1- 1

0 0

1+ 2

1+ 1

0 0

0 0

1+ 2

0 1

0 00 0

0 0

Page 43: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

43מבנה נתונים , סמסטר א' תשס"ד

AVLדוגמא להוצאת איבר מעץ

50

35

70

80

60

40

20

75

85

האיבר 30הוצאת

44

48

10

המחסנית הוצאת אחרי

40:

"30 "50 x

פקטור עדכוןשל xהאיזון

ב - איזון xהפרת

2+ 2

u

w

1- 4

1+ 3

1- 1

0 0 1+ 1

0 0

1+ 2

0 1

0 00 0

0 0

Page 44: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

44מבנה נתונים , סמסטר א' תשס"ד

AVLדוגמא להוצאת איבר מעץ

50

35

70

80

60

44

20

75

85

האיבר 30הוצאת

40

48

10

המחסנית הוצאת אחרי

40:

"30 "50

רוטציה ל – שמאלית

x

העץ תת גובההשתנה xשל

0 1

x

1- 4

1+ 3

1- 1

0 0 0 00 0

1+ 2

0 1

0 00 0

0 0

Page 45: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

45מבנה נתונים , סמסטר א' תשס"ד

AVLדוגמא להוצאת איבר מעץ

50

35

70

80

60

44

20

75

85

האיבר 30הוצאת

40

48

10

המחסנית הוצאת אחרי

"30:"

500 1

x0 2

צורך איןאבל, ברוטציההעץ תת גובה

מצביע xש – השתנה עליושנשמר מזה

במחסנית

1- 41+ 3

1- 1

0 0 0 00 0

1+ 2

0 1

0 00 0

0 0

Page 46: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

46מבנה נתונים , סמסטר א' תשס"ד

AVLדוגמא להוצאת איבר מעץ

50

35

70

80

60

44

20

75

85

האיבר 30הוצאת

40

48

10

המחסנית הוצאת אחרי

ריקה: 500 1

x

0 2

פקטור עדכוןשל : xהאיזון

תקין

0 3

1- 1

0 0 0 00 0

1+ 2

0 1

0 00 0

0 0

Page 47: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

47מבנה נתונים , סמסטר א' תשס"ד

AVLדוגמא להוצאת איבר מעץ

50

35

70

80

60

44

20

75

85

הוצאת אחרי המאוזן העץ30האיבר

40

48

10

0 1

0 2

0 3

1- 1

0 0 0 00 0

1+ 2

0 1

0 00 0

0 0

Page 48: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

48מבנה נתונים , סמסטר א' תשס"ד

דוגמא://http . . / / / .www seanet com users arsen avltree html

, , מהעץ: צומת מורידים כאשר זו שבדוגמא לב שימו הערה , שלמדנו כפי העוקב ולא לערך הקודם הוא המחליף

7בהרצאה

Page 49: הרצאה 8: עץ בינארי מאוזן,  AVL Tree

49מבנה נתונים , סמסטר א' תשס"ד