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

Preview:

DESCRIPTION

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

Citation preview

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

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

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

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

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

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

ולכן

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

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

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

: ממציאיו שם

Adelson-Velskii and Landis

:AVL Treeהגדרת

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

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

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

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

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

AVLלא AVL

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

AVLגובהו של עץ

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

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

)(log)( nOTh

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

אחרת:

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

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

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

p

u

wv

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

pu

u

p

u

v

pv

up

w – מ vגבוה

v – מ wגבוה

wvwv

ww

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

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

50

30

70

80

40

20

10

35

45

25

78

85

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

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

50

30

70

80

40

20

10

35

45

25

78

85

p

u

wv

+2

0

00

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

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

50

30

80

70

40

20

10

35

45

25

78

85

p

u

w

v

-1

0+1

0

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

p

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

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

50

30

70

80

60

40

20

75

35

85

72

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

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

50

30

70

80

60

40

20

75

35

85

72

p

u

wv

+2

-10

0-1

0

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

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

50

30

70

75

60

40

20

35

80

p

v

u

+3

+20

-1

85

w0

72

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

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

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

50

30

70

75

60

40

20

35

80

p

v

u

0

0

-1

85

w0

72

0

0

גלגול שמאלי

ל - pבודד

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

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

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

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

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

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

אחרת:

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

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

ימנית רוטציה

p

u

w v

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

up

p

u

u

v

pv

u p

w – מ גבוהv

v – מ גבוהw

ww

ww

vv

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

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

50

30

70

80

60

40

20

10

25

9

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

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

50

30

70

80

60

40

20

10

25

9

p

u

w v

-2

0-1

0-1

0

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

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

50

30

70

80

60

40

20

10

25

9

p

u

w

v

0

0

0-1

0 0גלגול

ל - ימניp

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

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

50

30

70

80

60

40

20

10

22

28

25

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

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

50

30

70

80

60

40

20

10

22

28

25

p

u

w v

-2

0+1

00

0 0

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

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

50

30

70

80

60

40

25

10

28

20

p

u

w

v

-2

0-1

00

0

22

0

גלגול שמאלי

ל - uבודד

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

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

50

30

70

80

60

40

25

10

28

20

pu

w

v

0

0

00

0

22

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

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

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

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

גלגול ימני:•

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

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

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

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

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

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

אבחנה חשובה

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

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

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

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 אחת: רוטציה מתבצעת ההכנסה תהליך שבזמן לב שימו הערה

היותר לכל

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

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

50

30

70

80

60

40

20

10

25

-1

00

00

0

0

00

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

3

1

00

2

01

0 0

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

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

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האיזון

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

7בהרצאה

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