2-3 trees עצי 3-2 ועצי דרגות Chapter 19: B trees (381 – 397) Chapter 15: Augmenting data structures (281 – 290) חומר קריאה לשיעור זה Lecture5 of Geiger.

Slides:



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

מבוא למדעי המחשב לתעשייה וניהול
1 Formal Specifications for Complex Systems (236368) Tutorial #4 Refinement in Z: data refinement; operations refinement; their combinations.
1 Trees CLRS: chapter A hierarchical combinatorial structure הגדרה רקורסיבית: 1. צומת בודד. זהו גם שורש העץ. 2. אם n הוא צומת ו T 1 ….T K הינם עצים,
גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות.
מיון (Sorting) קלט : מערך בן n מספרים. פלט : מערך ובו המספרים אותם מאוחסנים בסדר עולה
פונקציונל פונקציה מספר פונקציונל דוגמאות לא פונקציונל פונקציונל.
פעולות מילון Insert, Delete, Search Binary Search Tree, AVL, 2-3 Tree, Skip List O(log n) האם יש מבנה עם סבוכיות (1)O? לא למפתח כלשהו.
1 Data Structures, CS, TAU, RB-Tree1 עץ אדום-שחור  עץ חיפוש בינארי  בכל צומת ביט אינפורמציה נוסף - צבע  עץ “כמעט מאוזן”  (O(log n במקרה גרוע ביותר.
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
עצים ועצי חיפוש חומר קריאה לשיעור זה Chapter 5.5– Trees (91 – 97)
תרגול 8 עצי B+ אינדקס משני.
A. Frank File Organization קובץ ישיר מתקדם Advanced Direct File.
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
שאלות חזרה לבחינה. שאלה דיסקים אופטיים מסוג WORM (write-once-read-many) משמשים חברות לצורך איחסון כמויות גדולות של מידע באופן קבוע ומבלי שניתן לשנותו.
עבודה סמינריונית Prelude to Ukkonen algorithm ON-LINE CONSTRUCTION OF SUFFIX TREES מגישים : עיד מוחמד טיבי פיראס.
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
Map-Reduce Input: a collection of scientific articles on different topics, each marked with a field of science –Mathematics, Computer Science, Biology,
1 Trees CLRS: chapter A hierarchical combinatorial structure הגדרה רקורסיבית: 1. צומת בודד. זהו גם שורש העץ. 2. אם n הוא צומת ו T 1 ….T K הינם עצים,
A. Frank File Organization Indexed-Sequential File Introduction Thanks to Tamar Barnes.
2 Suffix Tree: Definition Suffix tree T על מחרוזת S שגודלה n, הוא עץ מכוון עם בדיוק n עלים ממוספרים מ -1 עד n. לכל צומת פנימית ( חוץ מהשורש ) יש לפחות.
1 Data Structures, CS, TAU, Splay Tree Splay Tree  מימוש של עץ חיפוש בינארי  מטרה לדאוג ל- Amortized Time  פעולה בודדת יכולה לקחת O(N)  אבל כל רצף.
1 Formal Specifications for Complex Systems (236368) Tutorial #5 Refinement in Z: data refinement; operations refinement; their combinations.
בהסתברות לפחות למצא בעיה במודל PAC עבור בהסתברות ε הפונקציה f טועה מודל ONLINE 1. אחרי כל טעות הפונקציה משתפרת 2. מספר הטעיות קטן.
Data Structures, CS, TAU, Splay Tree 1 Splay Tree - עץ חיפוש בינארי - מטרה לדאוג ל - Amortized Time - פעולה בודדת יכולה לקחת O(N) - אבל כל רצף M פעולות.
חישוב ואופטימיזציה של שאילתות חלק 1
תורת הקבוצות חלק ב'. קבוצה בת מניה הגדרה: קבוצה אינסופית X היא ניתנת למניה אם יש התאמה חד-חד ערכית בין X לבין .
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
1 חישוב ואופטימיזציה של שאילתות חלק 2 Query Evaluation and Optimization Part 2.
קובץ רב-אינדקס Multi-Indexed File
ערמות ; מבני נתונים 09 מבוסס על מצגות של ליאור שפירא, חיים קפלן, דני פלדמן וחברים.
מודל ONLINE לומדמורה 1. כל ניתן לחישוב בזמן פולינומיאלי 2. אחרי מספר פולינומיאלי של טעיות ( ) הלומד לא טועה ז"א שווה ל- Littlestone 1988.
תרגול 7 עצי B
ערכים עצמיים בשיטות נומריות. משוואה אופינית X מציין וקטור עצמי מציינת ערך עצמי תואם לוקטור.
Sorting II: הפרד ומשול. Last week: in-place sorting Bubble Sort – O(n 2 ) comparisons –O(n) best case comparisons, O(n 2 ) exchanges Selection Sort -
שאלה 1 נתון כביש ישר עם תחנות דלק בנקודות , בנקודת המוצא נתונה מכונית עם תא דלק שמספיק ל-100 ק"מ. מחיר מילוי תא הדלק בתחנה.
1 ייצוג באמצעות עצים שונים מתוחכם רק לקבוצות גדולות (תקורה בפעולות ובתכנות!!!) עצי חיפוש בינאריים BINARY SEARCH TREES תחום סדור (> < =) תחום איברים גדול.
Data Structures, CS, TAU, Perfect Hashing 1 Perfect Hashing בעיה : נתונה קבוצה S של n מפתחות מתחום U השוואה ל - Hash : * טבלה קבועה (Hash רגיל - דינאמי.
תכנות תרגול 5 שבוע : הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.
1 Data Structures, CS, TAU, Perfect Hashing בעיה: נתונה קבוצה S של n מפתחות מתחום U השוואה ל- Hash : * טבלה קבועה (Hash רגיל - דינאמי) * רוצים זמן קבוע.
עצים מאוזנים הגדרה: משפחת עצים תקרא מאוזנת אם ,h(T) = O(log n) באשר T הוא עץ במשפחה, n הוא מספר הצמתים ב-T ו-h(T) הוא הגובה של T עצי (Adelson-Velsky,
מערכים עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר int grade1, grade2, …, grade20; int grade1, grade2, …, grade20;
עקרון ההכלה וההדחה.
יחס סדר חלקי.
1 חישוב ואופטימיזציה של שאילתות חלק 1 Query Evaluation and Optimization Part 1.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
Data Structures, CS, TAU, RB-Tree 1 עץ אדום-שחור - עץ חיפוש בינארי - בכל צומת ביט אינפורמציה נוסף - צבע « עץ “ כמעט מאוזן ” « (O(log n במקרה גרוע ביותר.
1 Data Structures, CS, TAU, RB-Tree1 עץ אדום-שחור  עץ חיפוש בינארי  בכל צומת ביט אינפורמציה נוסף - צבע  עץ “כמעט מאוזן”  (O(log n במקרה גרוע ביותר.
Tirgul 13: Trees 1. הגדרות עץ – מודל מופשט של מבנה היררכי. עץ מורכב מאוסף של צמתים (קודקודים) עם יחס אבא-בן. שורש בעץ – צומת ללא אבא. בכל עץ יש בדיוק.
עצים בינאריים - תזכורת דרגת צומת שורש עלה צומת פנימי מרחק בין 2 צמתים
1 - גמישות בבינאריות גמישות בעומק - עץ חיפוש בינארי: ממוצע O(log n) גרוע ביותר (O(n - היינו רוצים לשמור את העץ מאוזן תמיד Data Structures, CS, TAU
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
מבנה מחשבים תרגול מספר 3. טענה על עצים משפט: בעץ שדרגת כל קודקודיו חסומה ב-3, מספר העלים ≤ מספר הקודקודים הפנימיים + 2. הוכחה: באינדוקציה על n, מספר הקודקודים.
Lecture 13 Maximal Accurate Forests From Distance Matrix.
תרגול 4 21/3/2007 מבני נתונים 07b ליאור שפירא. תזכורת – B-trees  לכל צומת x יש השדות הבאים n[x] מס ' מפתחות ב -x המפתחות עצמם בסדר לא יורד כל צומת פנימי.
2-4 tree k=2 Each node has 2,3,or 4 children. Delete delete(14,T)
Eddie Bortnikov/Aran Bergman, Principles of Reliable Distributed Systems, Technion EE, Spring Principles of Reliable Distributed Systems Recitation.
1 Trees CLRS: chapter A hierarchical combinatorial structure הגדרה רקורסיבית: 1. צומת בודד. זהו גם שורש העץ. 2. אם n הוא צומת ו T 1 ….T K הינם עצים,
Data Structures Hanoch Levi and Uri Zwick March 2011 Lecture 3 Dynamic Sets / Dictionaries Binary Search Trees.
Tirgul 12 Trees 1.
ערמות make-heap Operation insert find-min delete-min union decrease-key delete 1 Binary Heap log n n Binomial Heap Fibonacci Heap † Relaxed Heap Linked.
מבוא למדעי המחשב סיבוכיות.
אינדקסינג והשינג (indexing & hashing)
תירגול 14: מבני נתונים דינאמיים
הרצאה 07 עצים קרן כליף.
מבני נתונים עצים קרן כליף.
Data Structures, CS, TAU, Splay Tree
Marina Kogan Sadetsky –
Randomized Search Trees
שיעור עשירי: מיונים, חיפושים, וקצת סיבוכיות חישוב
Presentation transcript:

2-3 trees עצי 3-2 ועצי דרגות Chapter 19: B trees (381 – 397) Chapter 15: Augmenting data structures (281 – 290) חומר קריאה לשיעור זה Lecture5 of Geiger & Itai’s slide brochure  Geiger & Itai, 2001

2-3 trees  cs,Technion 2

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

2-3 trees  cs,Technion 4 גובה עצי 3-2 לפיכך הגובה מקיים log 3 L  h  log 2 L כלומר : h =  (log L) נימוק : עבור חסם תחתון נבחן את העץ הבינרי השלם הנוצר ע " י סילוק כל ילד שלישי מעץ 3-2. עבור חסם עליון נבחן את העץ הטרינרי השלם הנוצר ע " י הוספת ילד שלישי לעץ 3-2 בכל מקום בו חסר ילד.   עץ 3-2 נתון עץ בו כל ילד שלישי סולק עץ בו כל ילד חסר הוסף מספר העליםL בעץ 3-2 מקיים 2 h  L  3 h כאשר h הוא גובה העץ.

2-3 trees 5 עצי 3-2 כמבני נתונים בצומת פנימי בעל שני בנים רשום אינדקס בודד הגדול ממש מהמפתח המקסימלי בתת העץ ששורשו הוא הבן הראשון וכן קטן או שווה למפתח המינימלי בתת העץ ששורשו הוא הבן השני. בצומת פנימי בעל שלושה בנים רשומים שני אינדקסים. אינדקס ראשון גדול ממש מהמפתחות בעץ הראשון וקטן שווה מהמפתחות בעץ בשני ואינדקס שני גדול ממש מהמפתחות בעץ השני וקטן שווה מהמפתחות בעץ השלישי. כל עלה מכיל מפתח ורשומה (רק המפתחות נראים בציור). לכל צמת פנימי 2  d  3 בנים ויש בו d-1 אינדקסים המשמשים לחיפוש הרשומה הנחוצה … …

2-3 trees  cs,Technion 6 חיפוש מפתח k בעץ 3-2 אחרת, אם ל-v רק שני בנים או ש-k קטן מהמפתח השני של v: המשך את החיפוש בבן השני של v. אחרת, המשך את החיפוש בבן השלישי של v. יהי v השורש של העץ אם v עלה, בדוק אם k נמצא בצומת v. יהי k 1 האינדקס המינימלי בצומת v. אם k < k 1 : המשך את החיפוש בבן הראשון של v , , 27 10, 20 חפש 14:

2-3 trees  cs,Technion 7 הכנסת מפתח k לעץ 3-2 בהכנסת איבר לעץ 3-2 מבוצעות הפעולות הבאות : 1. חיפוש מקומו של המפתח החדש k. 2. הכנסת עלה למקום החדש וקביעת ערכו k. 3. תיקון העץ כך שלכל צומת יהיו 2 או 3 בנים. התיקון נעשה במסלול החיפוש של k מהעלה שנוסף ועד השורש. בכל רמה נבצע O(1) פעולות. נמחיש זאת תחילה ע " י דוגמאות.

2-3 trees 8 דוגמא להכנסה לעץ , , 27 10, 22 הכנס , 3, , 27 10, 22 7 צעד ראשון : , 27 3, 10, צעד שני : , צעד שלישי :

2-3 trees 9 אלגוריתם להכנסת מפתח k (חלק א) 1.חפשו את k בעץ T. אם k נמצא, סיימו. 2.אם k אינו ב-T, יהי f הצומת האחרון, שאינו עלה, במסלול החיפוש. (לו k היה ב-T אזי f היה אבי העלה שבו k נמצא). 3.צרו עלה חדש בעל מפתח k, והוסיפו אותו כבן ל-f תוך שמירת הסדר בין הבנים של f. (יתכן וכעת יש ל-f ארבעה בנים). 4.הוסיפו ל-f אינדקס נוסף בהתאם לכללי עץ 2-3. (יתכן וכעת יש שלושה אינדקסים) , , 27 10, 22 הכנס , 3, , 27 10, 22 7

2-3 trees 10 v  f.5 6. אם ל-v ארבעה בנים, פצל את v לשני צמתיםv 1,v 2, וחבר אותם כבנים לאב f של צומת v תוך שמירה על סדר האינדקסים הנכון. חזרו לצעד 5. אם v הוא שורש צרו צומת f אשר בניו הם הצמתים v 1,v 2 וסיימו. אם ל-v שלושה בנים סיימו , 27 3, 10, , אלגוריתם להכנסת מפתח k (חלק ב)

2-3 trees 11 אלגוריתם להכנסת מפתח k (במלואו) 1.חפשו את k בעץ T. אם k נמצא, סיימו. 2.אם k אינו ב-T, יהי f הצומת האחרון, שאינו עלה, במסלול החיפוש. (לו k היה ב-T אזי f היה אבי העלה שבו k נמצא). 3.צרו עלה חדש בעל מפתח k, והוסיפו אותו כבן ל-f תוך שמירת הסדר בין הבנים של f. (יתכן וכעת יש ל-f ארבעה בנים). 4.הוסיפו ל-f אינדקס נוסף בהתאם לכללי עץ 2-3. (יתכן וכעת יש שלושה אינדקסים). v  f.5 6. אם ל-v ארבעה בנים, פצל את v לשני צמתיםv 1,v 2, וחבר אותם כבנים לאב f של צומת v תוך שמירה על סדר האינדקסים הנכון. חזרו לצעד 5. אם v הוא שורש צרו צומת f אשר בניו הם הצמתים v 1,v 2 וסיימו. אם ל-v שלושה בנים סיימו.

2-3 trees 12 פרוט לפיצול צומת root T1T1 k 1 k 2 k 3 v T2T2 T3T3 T4T4 k1k1 k3k3 k2k2 T1T1 T2T2 T3T3 T4T4 k2k2 v2v2 v3v3 v4v4 v1v1 v2v2 v3v3 v4v4 v1v1 k1k1 k3k3 v v1v1 v2v2

2-3 trees  cs,Technion 13 תכונות תהליך ההוספה שינויים מתבצעים רק על המסלול מהשורש לעלה שהוסף. בזמן פיצול של צומת, הצמתים החדשים הם בעומק שווה לצומת שפוצל. בפיצול השורש נוצר צומת חדש שמגדיל ב-1 את העומק של כל הצמתים. מסקנה: לאחר הוספה, כל העלים באותו עומק ולכל צומת פנימי 3-2 בנים.

2-3 trees  cs,Technion 14 הוצאת מפתח k מעץ 3-2 בהוצאת איבר לעץ 3-2 מבוצעות הפעולות הבאות: 1.חיפוש מקומו של המפתח k. 2.הוצאת העלה שערכו k. 3.תיקון העץ כך שלכל צומת יהיו 2 או 3 בנים. התיקון נעשה במסלול החיפוש של k מהעלה שהוצא ועד השורש. בכל רמה נבצע O(1) פעולות. נמחיש זאת תחילה ע"י דוגמאות.

2-3 trees 15 דוגמא להוצאה מעץ 3-2 (השאלה בלבד) , הוצא 14: , סלק צומת : , השאל מהאח : תקן ערכי ההורים :

2-3 trees 16 דוגמא להוצאה מעץ 3-2 (שני איחודים) , הוצא 3: , , אחד הורים: , 7 10 אחד הורים: 10, , , 7 10, , סלק שורש מיותר:

2-3 trees 17 אלגוריתם להוצאת מפתח k מעץ חפש את k בעץ. אם k לא נמצא בעץ, סיים. 2.יהי l העלה שערכו k ויהי f אביו. 3.סלק את l מהעץ. 4.v  f 5.אם v הוא שורש ולו בן בודד, סלק את v וסיים. 6.אם ל-v נותרו 2 בנים, סיים. (המשך אם ל-v נותר רק בן בודד). 7.מקרה א: אם ל-v יש אח ולו שלושה בנים, שאל בן מהאח וסיים. מקרה ב: אם לכל אח רק שני בנים, אחד את v עם אח קרוב ל-v ועדכן את המפתחות בצומת שנוצר. יהי f ההורה של v. 8. חזור לצעד 4.

2-3 trees 18 פרוט פעולת האיחוד בזמן הוצאה מקרה א: vv1v1 v2v2 v3v3 v4v4 k1k1 k 3, k 4 k2k2 v1v1 v2v2 v3v3 v4v4 k2k2 k4k4 k3k3 f f f1f1 f1f1 מקרה ב: v1v1 v2v2 v3v3 k 2, k 3 k4k4 v1v1 k1k1 k 2, k 4 v2v2 v3v3 k3k3 v4v4 v v4v4 f f f1f1

2-3 trees  cs,Technion 19 ניתוח פעולת ההוצאה כל פעולת חיפוש, הכנסה, והוצאה מעץ 3-2 דורשת O(h) צעדי חישוב כאשר h הוא גובה העץ. נימוק: בכל רמה מבוצעות O(1) פעולות. נזכור שגובה העץ הוא O(log L) כאשר L הוא מספר המפתחות. כלומר כל פעולה לוקחת O(log L) צעדי חישוב. נכונות: העומק של שום צומת אינו משתנה בזמן ההוצאה מלבד בסוף התהליך, במידה ומתבטל השורש, ואז העומק של כל הצמתים קטן באחד. לפיכך כל העלים נותרים בעומק שווה. כמו כן לכל צומת פנימי נותרים 3-2 בנים ונשמר יחס הסדר בין האינדקסים כנדרש.

2-3 trees 20 השוואה בין עצי 3-2 ועצי AVL שני סוגי העצים תומכים בפעולות המילון בזמן O(log n). בעץ 3-2 רשומות נשמרות רק בעלים. בעץ AVL רשומות נשמרות גם בצמתים פנימיים וגם בעלים. לכל שימוש בעץ 3-2 ישנה כנראה אנלוגיה גם בעץ AVL ולהפך. הבחירה בין השניים אינה עקרונית.

2-3 trees  cs,Technion 21 עצי B + (מדרגה m) הגדרה: עץ B + מדרגה m הוא עץ המקיים את התכונות הבאות: 1.כל הערכים נמצאים בעלים, כל העלים באותה רמה. 2.לכל צומת פנימי, פרט אולי לשורש, יש c בנים כאשר  m/2   c  m. לשורש מספר הבנים הוא 2  c  m. 3.לצומת פנימי בעל c בנים יש c-1 אינדקסים ממוינים לפי גודלם. כל המפתחות הנמצאים בתת העץ ה- i קטנים מהאינדקס ה-i וגדולים או שווים לאינדקס ה- i-1. כל המפתחות הנמצאים בתת העץ הימני ביותר גדולים או שווים לאינדקס האחרון. חיפוש/הכנסה/הוצאה כמו בעץ 3-2. כלומר, חיפוש לפי הגדרת עץ B + בדרגה m, הכנסה או הוצאה של העלה המבוקש, ותיקון העץ מהעלה ועד השורש במסלול החיפוש כך שמספר הבנים בכל רמה יעמוד בדרישות עץ B + בדרגה m. דוגמא : עץ , , 27 10, 22 2, 3 7 דוגמא : עץ ,7

2-3 trees  cs,Technion 22 דוגמא להכנסה לעץ B + מדרגה 4 דוגמא : הכנס , 3, , 27 10, , 27 5, 10, , 3 במקרה זה נדרש פיצול בודד. מחצית הצמתים ( מעוגל כלפי מעלה ) בענף השמאלי ומחצית ( מעוגל כלפי מטה ) בימני. דוגמאות נוספות בתרגול.

2-3 trees 23 שימוש עיקרי לעץ B + הזיכרון ברוב המחשבים מורכב משני חלקים: זיכרון ראשי (RAM), מהיר, ללא חלקים נעים, שבב סיליקון בודד. זיכרון משני (DISK), גדול, איטי יחסית לזיכרון הראשי, בעל חלקים מכניים. כאשר לא ניתן להכניס את כל מבנה הנתונים לזיכרון הראשי יש לפנות מדי פעם לזיכרון המשני לקבלת אינפורמציה נוספת. זמן הגישה לזיכרון המשני גבוה מאד יחסית לזמן הקריאה של הנתונים והקריאה נעשית בבלוקים. 1…1000 עצי +B מדרגה גבוהה מספקים פתרון: בכל צומת פנימי נשמור כמספר הבלוקים של מפתחות שניתן לשמור בזיכרון הראשי. מספר הגישות לזיכרון המשני תלוי במספר הרמות (וזהו מספר נמוך) הנקבע ע"י גודל הבלוק. המחיר יהיה בסקירה ליניארית של המפתחות על מנת לקבוע את המשך החיפוש בעץ (תוך שימוש בזיכרון המהיר).

2-3 trees 24 מידע נוסף בעצי חיפוש בעיה I : לממש עץ חיפוש התומך, בנוסף לפעולות הכנסה/הוצאה/חיפוש, גם במציאת האינדקס של x בעץ בזמןO(height) כאשר height הוא גובה העץ. בשימושים רבים של עצי חיפוש כדאי לשמור אינפורמציה נוספת בכל צומת. אינפורמציה זו משמשת להאצת פעולות נוספות הנדרשות מעצי חיפוש. למשל: הגדרה: האינדקס (rank)של מספר x בקבוצה S הוא מקומו בסדרה ממוינת של איברי S. האינדקס של 5 בקבוצה {8,2,7,5} הוא 2. בעיה II: לממש עץ חיפוש התומך במציאת סכום האיברים בעץ הקטנים מ – x בזמן O(height). בבעיות אלה יש לשמור מידע נוסף בעץ החיפוש כדי שנוכל לממש את הפעולות הנוספות ביעילות הנדרשת. אנו ניראה מהו המידע שיש לשמור וכיצד להשתמש בו. אח"כ ניראה כיצד לעדכן את המידע הנוסף כך שהעץ יישאר מאוזן.

2-3 trees 25 עץ דרגות (Rank Tree) עץ דרגות הוא דוגמא למבנה נתונים בו בכל צומת נשמר מידע על תת - העץ שמתחתיו. סוג המידע השמור תלוי בבעיה אותה יש לפתור. הגדרה: עץ דרגות (rank tree) הוא עץ בו בכל צומת v נשמרים מספר הצמתים בתת-העץ ששורשו v. מסקנה: בעץ דרגות מציאת ה-rank דורשת זמן.O(height) בעיה I: לממש עץ חיפוש התומך במציאת האינדקס של איבר x. rank(x) = |{z, y}| = 6 rank(x) =  w n(w) + | {v  path | v < x}| נספור את מספר הצמתים על מסלול החיפוש ל- x הקטנים מ- x בתוספת הערכים השמורים בבניהם השמאליים. (w בן שמאלי של צומת במסלול path) פתרון: נשמר בכל צומתv (מלבד המפתח) את מספר הצמתים בתת-העץ ששורשו v. נסמן מספר זה ב-n(v). 11 z y x

2-3 trees  cs,Technion 26 דוגמא למידע נוסף בעיה II: לממש עץ חיפוש התומך במציאת סכום האיברים בעץ הקטנים מ – x בזמן O(height). נסכם את הערכים על מסלול החיפוש ל- x הקטנים מ- x בתוספת הערכים השמורים בבניהם השמאליים. דוגמא: סכום הקטן מ- 17 מחושב ע"י(8+13) + (10+9) + (15 +0) = 55 פתרון: נשמר בכל צומתv את סכום ערכי הצמתים בתת- העץ ששורשו v. נסמן מספר זה ב-.S(v) מסקנה: זמן הריצה הוא O(height). כיצד נבטיח זמן ריצה O(log n) ?

2-3 trees 27 עץ דרגות מאוזן (Rank tree) בעיה: לממש עץ חיפוש מאוזן התומך במציאת האינדקס (rank) של איבר x בזמן O(log n) (כמה צמתים נמצאים לפני x בעץ). פתרון: לדוגמא באמצעות עץ AVL. נשמור בכל צומתv (מלבד המפתח) את מספר הצמתים בתת-העץ ששורשו v. זיכרו שסימנו מספר זה ב-n(v). נעדכן את n(v) בזמן גלגול.

2-3 trees  cs,Technion 28 עדכון השדה הנוסף כיצד נעדכן את n(v) ? בזמן הכנסה נגדיל את n(v) באחד לאורך המסלול מהשורש לעלה שהוכנס. בזמן גלגול נעדכן את השדה כנדרש. למשל בגלגול LL נעדכן כך: ALAL BRBR ARAR h B A v ARAR ALAL BRBR v B A n(B) n(A) n(1) n(2) n(3) n(A)+n(3)+1 n(1) n(2) n(3) n(B)-n(A)+n(2)

2-3 trees  cs,Technion 29 דוגמא נוספת כיצד נעדכן את סכום המפתחות בכל תת-עץ של עץ AVL ? בזמן הכנסה נגדיל את הסכום לאורך המסלול מהשורש לעלה שהוכנס. בזמן גלגול נעדכן את השדה כנדרש. למשל בגלגול LL נעדכן כך: ALAL BRBR ARAR h B A v ARAR ALAL BRBR v B A S(B) S(A) S(1) S(2) S(3) S(A)+S(3)+B S(1) S(2) S(3) S(B)-S(A)+S(2) תרגיל בית: מהו העדכון בגלגולים האחרים ? כיצד מבצעים זאת עם עץ 3-2 ?