Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Data Structures, CS, TAU, RB-Tree1 עץ אדום-שחור  עץ חיפוש בינארי  בכל צומת ביט אינפורמציה נוסף - צבע  עץ “כמעט מאוזן”  (O(log n במקרה גרוע ביותר.

Similar presentations


Presentation on theme: "1 Data Structures, CS, TAU, RB-Tree1 עץ אדום-שחור  עץ חיפוש בינארי  בכל צומת ביט אינפורמציה נוסף - צבע  עץ “כמעט מאוזן”  (O(log n במקרה גרוע ביותר."— Presentation transcript:

1 1 Data Structures, CS, TAU, RB-Tree1 עץ אדום-שחור  עץ חיפוש בינארי  בכל צומת ביט אינפורמציה נוסף - צבע  עץ “כמעט מאוזן”  (O(log n במקרה גרוע ביותר  צביעה מבטיחה שאין מסלול ארוך פי שניים מאחר  מבנה – כל צומת מכיל: parent left right color key (CLR chapter 14)

2 2 Data Structures, CS, TAU, RB-Tree2 1. כל צומת אדום או שחור 2. כל עלה (NIL) הוא שחור 3. אם צומת אדום  שני ילדיו שחורים 4. כל מסלול פשוט מצומת לעלה מכיל מספר זהה של צמתים שחורים גובה שחור: מס’ הצמתים השחורים מצומת לעלה (לא כולל הצומת). סימון: BH(T) תכונות (צבעים: מנגנון חשבונאות)

3 3 Data Structures, CS, TAU, RB-Tree3 * מס’ ליד צומת הוא גובה שחור של אותו צומת NIL 3 77 10 NIL 71215 NIL 716 NIL 714 2 11 1 1 1 Lemma 14.1 (CLR): A red-black tree with n internal nodes has height at most 2lg(n+1) דוגמא לעץ אדום-שחור

4 4 Data Structures, CS, TAU, RB-Tree4 אינטואיציה:  רוב הצמתים שחורים  גובה שחור - אחיד: מבחינת שחורים עץ מאוזן  log  אדומים - רק תוספת (לכל היותר מכפילים כל מסלול) הוכחה: אינדוקציה (מוכח מלא בספר) הוכחת הלמה

5 5 Data Structures, CS, TAU, RB-Tree5 קטן         X Y Y X Right_Rotate(T,y) Left_Rotate(T,x) גדול קטן אמצע עומק של   עולה/יורד ב- 1 עומק של   אינו משתנה שמירת איזונים: רוטציות של עץ בינארי    

6 6 Data Structures, CS, TAU, RB-Tree6 7 11 918 1419 22 20 1217 x y 7 11 9 18 14 19 22 201217 x y Left_Rotate(T,x) Inorder doesn’t change! השפעת רוטציה על עומק העץ

7 7 Data Structures, CS, TAU, RB-Tree7 1. הכנסת X במקום המתאים (כמו בעץ בינארי) ובצבע אדום 2. ביצוע תיקונים מלמטה למעלה - אם יש שני אדומים רציפים ביצוע Insert

8 8 Data Structures, CS, TAU, RB-Tree8 תיקון צבעים ב-Insert  תיקון אם צומת אדום וגם אביו אדום  בתיקון: א) הצפת אדום האב כלפי מעלה (העברת הבעיה כלפי מעלה) ב) השכנת הבעיה במסגרת משפ’ הסבא ע”י התקזזות עם הדוד (עצירת הבעיה) או:  אם צומת אדום ואביו אדום  האח שחור

9 9 Data Structures, CS, TAU, RB-Tree9 דוד אדום – Case I החלף צבעים בין סבא לבניו x C B DA C    x y  D  B   A  new x C A DB   y  A    B C D

10 10 Data Structures, CS, TAU, RB-Tree10 דוד שחור – Case II Left_Rotate(A), Right_Rotate(B) + החלף צבעים B  C y Case II C B A    y C A B   x y y x A   B C Case III x y  כל התכונות נשמרות  בעיה עלתה למעלה (רק Case I)

11 11 Data Structures, CS, TAU, RB-Tree11 דוגמא ל-Insert 11 214 15 1 4 x y Case II 7 8 5 11 214 15 17 4 58 x y Case I :Node X was now inserted

12 12 Data Structures, CS, TAU, RB-Tree12 דוגמא ל-Insert (המשך) Case III x 11 2 14 15 1 4 y 7 8 5 x 2 14 15 1 4 8 5 7 11

13 13 Data Structures, CS, TAU, RB-Tree13 ביצוע Delete 1) מבצעים delete כמו בעץ חיפוש בינארי רגיל Y X Y - מושמט X - בנו 2) אם Y היה אדום  כל תכונות RB נשמרו. עצור. 3) אם Y היה שחור בצע RB_DELETE_FIXUP(X) 3א) אם X אדום צבע בשחור וסיים

14 14 Data Structures, CS, TAU, RB-Tree14 דוגמה Delete Fixup X - שחור X - מקום שמעליו בוצעה השמטה - נחשוב על X כעל מכיל שחור + שחור חסר (שחור כהה = חסר צמת!!!)  כל מסלול בעץ הוא חוקי מטרה: להיפטר מהשחור המיותר (= להוסיף שם צמת) יהי W אח של X ל- X יש אח כי X הוא שחור (כפול)!

15 15 Data Structures, CS, TAU, RB-Tree15 דוגמה Delete Fixup - מקרים הורד שחור מ- W ו- X והוסף ל- P(X)  X שחור בודד  W אדום  P(x שחור או אדום (נהפך לשחור או לדו-שחור) החלף צבעי P(X), W ו- Left_Rotate(P(X))  מוליך ל-Case 1,2,3,4  כל המסלולים לתתי עצים באותו גובה שחור Case 1 W אדום Case 2 W שחור + 2 בנים שחורים

16 16 Data Structures, CS, TAU, RB-Tree16 דוגמה Delete Fixup B B AD E C    E C    D A Case 1 x w new w x החלף צבעי P(X), W ו- Left_Rotate(P(X))  מוליך ל-Case 1,2,3,4  כל המסלולים לתתי עצים באותו גובה שחור Case 1 W אדום

17 17 Data Structures, CS, TAU, RB-Tree17 דוגמה Delete Fixup A E    Case 2 B D C AD E C    B x w c c, new x/black הורד שחור מ- W ו- X והוסף ל- P(X)  X שחור בודד  W אדום  P(x שחור או אדום (נהפך לשחור או לדו-שחור) Case 2 W שחור + 2 בנים שחורים

18 18 Data Structures, CS, TAU, RB-Tree18 דוגמה Delete Fixup B B AD E C    E C    D A Case 1 x w new w x A E    Case 2 B D C AD E C    B x w c c, new x/black

19 19 Data Structures, CS, TAU, RB-Tree19 דוגמה Delete Fixup - מקרים Case 4 W שחור + בן ימני אדום שנה צבעים ו- Left_Rotate(P(X))  מטפל בבעיה וגורם ללולאה להסתיים Case 3 W שחור + בן שמאלי אדום + בן ימני שחור החלף צבעים בין W ובנו השמאלי ובצע Right_Rotate  מצב 4

20 20 Data Structures, CS, TAU, RB-Tree20 דוגמה Delete Fixup A E    Case 3 B D C A E    B D C  x w c x new w c Case 3 W שחור + בן שמאלי אדום + בן ימני שחור החלף צבעים בין W ובנו השמאלי ובצע Right_Rotate  מצב 4

21 21 Data Structures, CS, TAU, RB-Tree21 דוגמה Delete Fixup A    B D Case 4 C E E    A D B C x w cc ‘c‘c W שחור + בן ימני אדום שנה צבעים ו- Left_Rotate(P(X))  מטפל בבעיה וגורם ללולאה להסתיים

22 22 Data Structures, CS, TAU, RB-Tree22 דוגמה Delete Fixup A E    Case 3 B D C A E    B D C  x w c x new w c A    B D Case 4 C E E    A D B C x w cc ‘c‘c

23 23 Data Structures, CS, TAU, RB-Tree23 Demo http://www.seanet.com/users/arsen/avltree.html

24 24 Data Structures, CS, TAU, RB-Tree24 AVL TREE Similar to RB-tree (but different) Counts the height of each sub-tree explicitly PROPERTY: For sub-tree T: –| Height (Right(T)) – Height (Left(T)) | <= 1 H H-1

25 25 Data Structures, CS, TAU, RB-Tree25 AVL - cont n(h): the minimum number of internal nodes of an AVL tree of height h n=1, 2 easy. For n>2 an AVL at height h contains: –root –1 sub-tree of height h-1 –1 sub-tree of height h-2  n(h) = 1 + n(h-1) + n(h-2)  n(h) > 2h(n-2)

26 26 Data Structures, CS, TAU, RB-Tree26 AVL – principle of operation Principles: –Insert + delete as in binary search tree. –After operation: the balance principle may be violated. –From bottom to top: Update height Examine balance If balance is violated – violation by at most 1  correct by rotation. 4 cases of rotation: LL RR LR RL (two of them symmetric to each other)

27 27 Data Structures, CS, TAU, RB-Tree27 Demo דוגמה לשאלה : 1. התייחסו לעץ אדום שחור כפי שנלמד בכיתה ומתואר ב - Cormen ( כל ה -Nils נחשבים כעלים וצבעם הוא שחור ). יהי הגובה של צומת y מוגדר כאורך המסלול ( נספר בצמתים ) הארוך ביותר מעלה ל -y. הספירה לא כוללת את y ואת ה -nil הנידון. יהי x צומת שמושמט ( שימו לב : הכוונה לצומת המושמט ולא לערך המושמט ) בפעולת ה -delete ( כמו שנלמד בכיתה בעץ חיפוש בינארי ). הננו מעוניינים בגובהו של x לפני ההשמטה. אזי : א ) החסם העליון ההדוק ביותר על גובהו של x הינו 0 ( כלומר גובה 0). ב ) החסם העליון ההדוק ביותר על גובהו של x הינו 1 ( כלומר גובה 1). ג ) החסם העליון ההדוק ביותר על גובהו של x הינו 2 ( כלומר גובה 2). ד ) החסם העליון ההדוק ביותר על גובהו של x הינו 3 ( כלומר גובה 3). ה ) אין חסם עליון על גובהו של x.

28 28 Data Structures, CS, TAU, RB-Tree28 Demo Solution: –Binary search tree  deleted node (N) is either a leaf, or have one child. Leaf  depth 0. One child: –Child CANNOT be BLACK and none of its descendants can be black (otherwise: depth black of N is not well defined). –  Child is red. –Grandchild cannot be red (two reds in a row are not allowed) –Grandchild cannot be black –  NO GRANDCHILD –  DPETH <= 1.


Download ppt "1 Data Structures, CS, TAU, RB-Tree1 עץ אדום-שחור  עץ חיפוש בינארי  בכל צומת ביט אינפורמציה נוסף - צבע  עץ “כמעט מאוזן”  (O(log n במקרה גרוע ביותר."

Similar presentations


Ads by Google