1.11k likes | 1.45k Views
תרגול 8. Skip Lists Hash Tables. Skip Lists. Definition : A skip list is a probabilistic data structure where elements are kept sorted by key . It allows quick search, insertions and deletions of elements with simple algorithms.
E N D
תרגול 8 Skip Lists Hash Tables
Skip Lists • Definition: • A skip list is a probabilistic data structure where elements are kept sorted by key. • It allows quick search, insertions and deletions of elements with simple algorithms. • It is basically a linked list with additional pointers such that intermediate nodes can be skipped. • It uses a random number generator to make some decisions.
Skip Lists • Skip Levels • Doubly Linked lists S1..Sh, each start at -∞ and end at ∞. • Level S1 - Doubly linked list containing all the elements in the set S. • Level Si is a subset of level Si-1. • Each element in Level i has the probability 1/2 to be in level i+1, thus if there are n elements in level S1, the expected number of elements in level Si is (n/2)i-1. • The expected number of levels required is O(log n).
Skip Lists • Time Complexity • Search: O(log n) expected • Insert: search and then insert in O(log n) time – O(log n) expected • Delete: search and then delete in O(log n) time – O(log n) expected • Memory Complexity • O(n) expected (
Skip Lists דוגמה:
שאלה 1 • הסבירו כיצד ניתן לממש את הפונקציה Select(S,k) המחזירה את האיבר הk בגודלו בסקיפ ליסט S עם n איברים, בזמן ממוצע של O(log n). אילו שינויים עלינו לבצע בסקיפ ליסט? תשובה: נשמור בכל תא pבסקיפ ליסט ערך dis(p) – מספר הערכים (כלומר, מספר התאים בS1) בינו לבין התא הבא אחריו בשרשרת Si. על מנת לבצע חיפוש, נתחיל ב-∞ ברמה הגבוהה ביותר ונשמור את המיקום (בהתחלה 0). בכל פעם שנתקדם בשרשרת נוסיף dis(p) למיקום. אם מספר המקומות שנותרו עד k< dis(p), נרד רמה ונמשיך.
שאלה 1 קוד:
שאלה 1 הדגמה: נבצע Search(7,S). pos= 0 1 4 6 7
Question 2 • Write an algorithm that builds a skip list S from the given BST T with nelements (T can be unbalanced ), such that • the worst query time in S will be O(log n). • The time complexity of the algorithm should be O(n).
Question 2 Solution: Time Complexity: The inorder traversal is O(n). The running time of the rest of the algorithm is linear in the number of elements in the skip list, that is O(n). The worst query time in such a skip list is O(log n). This question demonstrates how to construct a deterministic skip-list from an ordered set of n keys in O(n) time.
שאלה 3 • נתון: טבלת גיבוב עם m=11 ופונקציות גיבוב • h1(k)=k mod m • h2(k)=1+(k mod (m-1)) • הכניסו את האיברים הבאים לפי הסדר (משמאל לימין) 22, 1, 13, 11, 24, 33, 18, 42, 31 • לטבלת גיבוב מבוססת שרשור, עם פונקציית גיבוב h(k)=h1(k).
שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 Chaining 0 / 1 / 2 / 3 / h(k)=k mod 11 4 / 5 / 6 / 7 / 8 / 9 / 10 /
שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 Chaining 0 / 1 / 2 / 3 / h(k)=k mod 11 4 / 5 / 6 / 7 / 8 / 9 / 10 /
שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 Chaining 0 / 1 / 2 / 3 / h(k)=k mod 11 4 / h(22)=0 5 / 6 / 7 / 8 / 9 / 10 /
שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 Chaining 0 22 / 1 / 2 / 3 / h(k)=k mod 11 4 / h(22)=0 5 / 6 / 7 / 8 / 9 / 10 /
שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 Chaining 0 22 / 1 / 2 / 3 / h(k)=k mod 11 4 / 5 / 6 / 7 / 8 / 9 / 10 /
שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 Chaining 0 22 / 1 / 2 / 3 / h(k)=k mod 11 4 / h(1)=1 5 / 6 / 7 / 8 / 9 / 10 /
שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 Chaining 0 22 / 1 1 / 2 / 3 / h(k)=k mod 11 4 / h(1)=1 5 / 6 / 7 / 8 / 9 / 10 /
שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 Chaining 0 22 / 1 1 / 2 / 3 / h(k)=k mod 11 4 / 5 / 6 / 7 / 8 / 9 / 10 /
שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 Chaining 0 22 / 1 1 / 2 / 3 / h(k)=k mod 11 4 / h(13)=2 5 / 6 / 7 / 8 / 9 / 10 /
שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 Chaining 0 22 / 1 1 / 2 13 / 3 / h(k)=k mod 11 4 / h(13)=2 5 / 6 / 7 / 8 / 9 / 10 /
שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 Chaining 0 22 / 1 1 / 2 13 / 3 / h(k)=k mod 11 4 / 5 / 6 / 7 / 8 / 9 / 10 /
שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 Chaining 0 22 / 1 1 / 2 13 / 3 / h(k)=k mod 11 4 / h(11)=0 5 / 6 / 7 / 8 / 9 / 10 /
שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 Chaining 0 11 22 / 1 1 / 2 13 / 3 / h(k)=k mod 11 4 / h(11)=0 5 / 6 / 7 / 8 / 9 / 10 /
שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 Chaining 0 11 22 / 1 1 / 2 13 / 24 3 / h(k)=k mod 11 4 / h(24)=2 5 / 6 / 7 / 8 / 9 / 10 /
שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 Chaining 0 33 11 22 / 1 1 / 2 13 / 24 3 / h(k)=k mod 11 4 / h(33)=0 5 / 6 / 7 / 8 / 9 / 10 /
שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 Chaining 0 33 11 22 / 1 1 / 2 13 / 24 3 / h(k)=k mod 11 4 / h(18)=7 5 / 6 / 7 18 / 8 / 9 / 10 /
שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 Chaining 0 33 11 22 / 1 1 / 2 13 / 24 3 / h(k)=k mod 11 4 / h(42)=9 5 / 6 / 7 18 / 8 / 9 42 / 10 /
שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 Chaining 0 33 11 22 / 1 1 / 2 13 / 24 3 / h(k)=k mod 11 4 / h(31)=9 5 / 6 / 7 18 / 8 / 9 31 42 / 10 /
שאלה 3 • נתון: טבלת גיבוב עם m=11 ופונקציות גיבוב • h1(k)=k mod m • h2(k)=1+(k mod (m-1)) • הכניסו את האיברים הבאים לפי הסדר (משמאל לימין) 22, 1, 13, 11, 24, 33, 18, 42, 31 • לטבלת גיבוב מבוססת שרשור, עם פונקציית גיבוב h(k)=h1(k). • לטבלת גיבוב מבוססת linear probing, עם אותה פונקציית גיבוב. • לטבלת גיבוב מבוססת double hashing, עם פונקציית גיבוב ראשית h1(k) ופונקציית צעד h2(k).
שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 Linear Probing 0 1 2 3 h(k)=k mod 11 4 5 6 7 8 9 10
שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 Linear Probing 0 1 2 3 h(k)=k mod 11 4 5 6 7 8 9 10
שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 Linear Probing 0 1 2 3 h(k)=k mod 11 4 h(22)=0 5 6 7 8 9 10
שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 Linear Probing 0 1 2 3 h(k)=k mod 11 פנוי 4 h(22)=0 5 6 7 8 9 10
שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 Linear Probing 0 22 1 2 3 h(k)=k mod 11 פנוי 4 h(22)=0 5 6 7 8 9 10
שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 Linear Probing 0 22 1 2 3 h(k)=k mod 11 4 5 6 7 8 9 10
שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 Linear Probing 0 22 1 2 3 h(k)=k mod 11 פנוי 4 h(1)=1 5 6 7 8 9 10
שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 Linear Probing 0 22 1 1 2 3 h(k)=k mod 11 פנוי 4 h(1)=1 5 6 7 8 9 10
שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 Linear Probing 0 22 1 1 2 3 h(k)=k mod 11 4 5 6 7 8 9 10
שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 Linear Probing 0 22 1 1 2 3 h(k)=k mod 11 פנוי 4 h(13)=2 5 6 7 8 9 10
שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 Linear Probing 0 22 1 1 2 13 3 h(k)=k mod 11 פנוי 4 h(13)=2 5 6 7 8 9 10
שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 Linear Probing 0 22 1 1 2 13 3 h(k)=k mod 11 4 5 6 7 8 9 10
שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 Linear Probing 0 22 1 1 2 13 3 h(k)=k mod 11 תפוס תפוס תפוס פנוי 4 h(11)=0 5 6 7 8 9 10
שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 Linear Probing 0 22 1 1 2 13 3 11 h(k)=k mod 11 פנוי 4 h(11)=0 5 6 7 8 9 10
שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 Linear Probing 0 22 1 1 2 13 3 11 h(k)=k mod 11 תפוס פנוי תפוס 4 h(24)=2 5 6 7 8 9 10
שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 Linear Probing 0 22 1 1 2 13 3 11 h(k)=k mod 11 פנוי 4 24 h(24)=2 5 6 7 8 9 10
שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 Linear Probing 0 22 1 1 2 13 3 11 h(k)=k mod 11 תפוס תפוס תפוס תפוס פנוי תפוס 4 24 h(33)=0 5 6 7 8 9 10