1 Data Structures, CS, TAU, Splay Tree Splay Tree מימוש של עץ חיפוש בינארי מטרה לדאוג ל- Amortized Time פעולה בודדת יכולה לקחת O(N) אבל כל רצף M פעולות לוקח O(M log N) בעית עץ חיפוש בינארי - עץ עמוק (לא מאוזן) אם ביקשנו צומת מסוים הנמצא עמוק עלינו לשנות את העץ - אחרת M גישות אליו יגרמו ל- O(M*N) תורם לביצועים כי סיכויי הגישה החוזרת גבוהים. - תכונה נוספת: צמתים שנגענו בהם צפים למעלה
2 Data Structures, CS, TAU, Splay Tree הצף את הצומת שניגשו אליו ע”י Rotate דוגמא: k5k5 k4k4 A k3k3 k2k2 k1k1 C B D E F (מסלול גישה מסומן באדום) Rotate k5k5 k4k4 A k3k3 k1k1 k2k2 C B D E F רעיון פשוט
3 Data Structures, CS, TAU, Splay Tree k5k5 k4k4 A k3k3 k2k2 k1k1 CB D E F (מסלול גישה מסומן באדום) Rotate k5k5 k4k4 A k3k3 k2k2 k1k1 C B D E F
4 Data Structures, CS, TAU, Splay Tree k5k5 k4k4 A k3k3 k2k2 k1k1 C B D E F Rotate
5 Data Structures, CS, TAU, Splay Tree בעיה: k 3 שקוע (כמעט) לעומקו המקורי של k 1 בעיה: ישנם מקרים שלוקחים (M*N) דוגמה לבעיה זו בעמ’ הבא. בעיות בעץ
6 Data Structures, CS, TAU, Splay Tree Find(1) דוגמא
7 Data Structures, CS, TAU, Splay Tree Find(2) Find(3) Find(4)
8 Data Structures, CS, TAU, Splay Tree N פעולות לוקחות שפוץ: ביצוע Rotate משופר, המבוצע על שלישיית צמתים. שתי אפשרויות: Zig-zag Zig-zig ?
9 Data Structures, CS, TAU, Splay Tree A D G P B C X A B G P C D X Zig-zag A D G P B C X A D G P B C X Zig-zig
10 Data Structures, CS, TAU, Splay Tree דוגמא: k5k5 k4k4 A k3k3 k2k2 k1k1 C B D E F (מסלול גישה מסומן באדום) Rotate חזרה לדוגמה
11 Data Structures, CS, TAU, Splay Tree k5k5 k4k4 A k3k3 k2k2 k1k1 C B D E F k 1, Zig-Zag gives: k5k5 k4k4 A k3k3 k2k2 k1k1 C B D E F k 1, Zig-Zig gives: חזרה לדוגמא
12 Data Structures, CS, TAU, Splay Tree Splaying at Node 1
13 Data Structures, CS, TAU, Splay Tree דוגמא (אותה דוגמה חוזרת מוגדלת מאוחר יותר)
14 Data Structures, CS, TAU, Splay Tree המשך דוגמא
15 Data Structures, CS, TAU, Splay Tree המשך דוגמא
16 Data Structures, CS, TAU, Splay Tree סוף דוגמא
17 Data Structures, CS, TAU, Splay Tree אותה דוגמא מוגדלת Result of splaying at node 1 a tree of all left children גובה עץ קטן פי 2!
18 Data Structures, CS, TAU, Splay Tree Result of splaying previous tree at node 2 גובה עץ קטן פי 2!
19 Data Structures, CS, TAU, Splay Tree Result of splaying previous tree at node 3 גובה עץ קטן פי 2!
20 Data Structures, CS, TAU, Splay Tree Result of splaying previous tree at node 4
21 Data Structures, CS, TAU, Splay Tree Result of splaying previous tree at node 5
22 Data Structures, CS, TAU, Splay Tree Result of splaying previous tree at node 6
23 Data Structures, CS, TAU, Splay Tree Result of splaying previous tree at node 7
24 Data Structures, CS, TAU, Splay Tree Result of splaying previous tree at node 8
25 Data Structures, CS, TAU, Splay Tree Result of splaying previous tree at node 9
26 Data Structures, CS, TAU, Splay Tree הערות 1) פעולות זולות - עשויות להוליך לעץ לא טוב (כמו בנית העץ המקורי) 2) פעולות יקרות - מוליכות לעץ טוב זמן Amortized יהיה טוב