תרגול 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.

Slides:



Advertisements
Similar presentations
Chapter 11. Hash Tables.
Advertisements

Hash Tables.
Hashing.
תרגול 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.
Skip List & Hashing CSE, POSTECH.
Data Structures Using C++ 2E
© 2004 Goodrich, Tamassia Hash Tables1  
Hashing21 Hashing II: The leftovers. hashing22 Hash functions Choice of hash function can be important factor in reducing the likelihood of collisions.
Maps. Hash Tables. Dictionaries. 2 CPSC 3200 University of Tennessee at Chattanooga – Summer 2013 © 2010 Goodrich, Tamassia.
TTIT33 Algorithms and Optimization – Lecture 5 Algorithms Jan Maluszynski - HT TTIT33 – Algorithms and optimization Lecture 5 Algorithms ADT Map,
Dictionaries and Their Implementations
Dictionaries and Hash Tables1  
1 Chapter 9 Maps and Dictionaries. 2 A basic problem We have to store some records and perform the following: add new record add new record delete record.
1 CSE 326: Data Structures Hash Tables Autumn 2007 Lecture 14.
Tirgul 8 Universal Hashing Remarks on Programming Exercise 1 Solution to question 2 in theoretical homework 2.
Hashing Text Read Weiss, §5.1 – 5.5 Goal Perform inserts, deletes, and finds in constant average time Topics Hash table, hash function, collisions Collision.
Hash Tables1 Part E Hash Tables  
Hash Tables1 Part E Hash Tables  
Tirgul 9 Hash Tables (continued) Reminder Examples.
Hash Tables1 Part E Hash Tables  
Tirgul 7. Find an efficient implementation of a dynamic collection of elements with unique keys Supported Operations: Insert, Search and Delete. The keys.
COMP 171 Data Structures and Algorithms Tutorial 10 Hash Tables.
CS 206 Introduction to Computer Science II 11 / 12 / 2008 Instructor: Michael Eckmann.
Tirgul 8 Hash Tables (continued) Reminder Examples.
Lecture 10: Search Structures and Hashing
Hashing General idea: Get a large array
Data Structures Using C++ 2E Chapter 9 Searching and Hashing Algorithms.
1. 2 Problem RT&T is a large phone company, and they want to provide enhanced caller ID capability: –given a phone number, return the caller’s name –phone.
CS 221 Analysis of Algorithms Data Structures Dictionaries, Hash Tables, Ordered Dictionary and Binary Search Trees.
Comp 249 Programming Methodology Chapter 15 Linked Data Structure - Part B Dr. Aiman Hanna Department of Computer Science & Software Engineering Concordia.
1 Hash Tables  a hash table is an array of size Tsize  has index positions 0.. Tsize-1  two types of hash tables  open hash table  array element type.
Spring 2015 Lecture 6: Hash Tables
Symbol Tables Symbol tables are used by compilers to keep track of information about variables functions class names type names temporary variables etc.
Data Structures Week 6 Further Data Structures The story so far  We understand the notion of an abstract data type.  Saw some fundamental operations.
IKI 10100: Data Structures & Algorithms Ruli Manurung (acknowledgments to Denny & Ade Azurat) 1 Fasilkom UI Ruli Manurung (Fasilkom UI)IKI10100: Lecture8.
Hashing Table Professor Sin-Min Lee Department of Computer Science.
Algorithm Course Dr. Aref Rashad February Algorithms Course..... Dr. Aref Rashad Part: 4 Search Algorithms.
1 Hash table. 2 A basic problem We have to store some records and perform the following:  add new record  delete record  search a record by key Find.
Hash Tables1   © 2010 Goodrich, Tamassia.
David Luebke 1 10/25/2015 CS 332: Algorithms Skip Lists Hash Tables.
Comp 335 File Structures Hashing.
1 CSE 326: Data Structures: Hash Tables Lecture 12: Monday, Feb 3, 2003.
Hashing Sections 10.2 – 10.3 CS 302 Dr. George Bebis.
Prof. Amr Goneid, AUC1 CSCI 210 Data Structures and Algorithms Prof. Amr Goneid AUC Part 5. Dictionaries(2): Hash Tables.
Hashing Hashing is another method for sorting and searching data.
© 2004 Goodrich, Tamassia Hash Tables1  
Searching Given distinct keys k 1, k 2, …, k n and a collection of n records of the form »(k 1,I 1 ), (k 2,I 2 ), …, (k n, I n ) Search Problem - For key.
CS201: Data Structures and Discrete Mathematics I Hash Table.
David Luebke 1 11/26/2015 Hash Tables. David Luebke 2 11/26/2015 Hash Tables ● Motivation: Dictionaries ■ Set of key/value pairs ■ We care about search,
1 Hashing - Introduction Dictionary = a dynamic set that supports the operations INSERT, DELETE, SEARCH Dictionary = a dynamic set that supports the operations.
Hash Tables. 2 Exercise 2 /* Exercise 1 */ void mystery(int n) { int i, j, k; for (i = 1; i
Hash Table March COP 3502, UCF 1. Outline Hash Table: – Motivation – Direct Access Table – Hash Table Solutions for Collision Problem: – Open.
COSC 2007 Data Structures II Chapter 13 Advanced Implementation of Tables IV.
Tirgul 11 Notes Hash tables –reminder –examples –some new material.
Hashtables. An Abstract data type that supports the following operations: –Insert –Find –Remove Search trees can be used for the same operations but require.
CHAPTER 9 HASH TABLES, MAPS, AND SKIP LISTS ACKNOWLEDGEMENT: THESE SLIDES ARE ADAPTED FROM SLIDES PROVIDED WITH DATA STRUCTURES AND ALGORITHMS IN C++,
CS6045: Advanced Algorithms Data Structures. Hashing Tables Motivation: symbol tables –A compiler uses a symbol table to relate symbols to associated.
1 Hash Tables Chapter Motivation Many applications require only: –Insert –Search –Delete Examples –Symbol tables –Memory management mechanisms.
Chapter 5 Record Storage and Primary File Organizations
CSC 413/513: Intro to Algorithms Hash Tables. ● Hash table: ■ Given a table T and a record x, with key (= symbol) and satellite data, we need to support:
Prof. Amr Goneid, AUC1 CSCI 210 Data Structures and Algorithms Prof. Amr Goneid AUC Part 5. Dictionaries(2): Hash Tables.
CSCI 210 Data Structures and Algorithms
Hashing CSE 2011 Winter July 2018.
Dictionaries Dictionaries 07/27/16 16:46 07/27/16 16:46 Hash Tables 
Hash Table.
Richard Anderson (instead of Martin Tompa)
תרגול 8 Hash Tables ds162-ps08 11/23/2018.
Hashing Sections 10.2 – 10.3 Lecture 26 CS302 Data Structures
Dictionaries and Hash Tables
Presentation transcript:

תרגול 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

דוגמה :

שאלה 1

קוד : Select(S, k) p ← leftmost and upmost node of S pos ← 0 for i ← h (the height of S) downto 1 while (pos + p.dis ≤ k) pos ← pos + p.dis p ← p.next if (pos = k) return p //return the basis of p's tower else p ← below(p) // i ← i-1

שאלה 1 הדגמה : נבצע Search(7,S). pos =01467 pos.dis = k = 7 (target is 31) 1 Pos + pos.dis k<= > 35231

Question 2

Solution: Time Complexity: The in-order 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. Build(T, S) S1 ← inorder(T) i ← 1 while (i < log n) for j ← 1 to |Si| if (j mod 2 = 0) link = S i+1.add(S i [j]) //method returns a pointer to the link added. link.below = S i [j] i ← i+1

Dictionary Dictionary ADT The dictionary ADT models a searchable collection of key-element items, and supports the following operations: Insert Delete Search

Hash Tables Hash Function A hash function h maps keys of a given type into integers in a fixed interval [0,m-1] Uniform Hash Hash Table A hash table for a given key type consists of:  Hash function h: keys-set →[0,m-1]  Array (called table) of size m

Hash Tables Direct Addressing (מיעון ישיר) K is a set whose elements' keys are in the range [0,m-1]. Use a table of size m and store each element x in index x.key. Disadvantage: when |K| << m → waste of space A problem when |K| > m or repetitive keys Chaining (שרשור) h(k) = k mod m (This is an example of a common hash function) If h(k) is occupied, add the new element in the head of the chain at index h(k)

שאלה 3 נתון : טבלת גיבוב עם m=11 ופונקציות גיבוב h 1 (k) = k mod m h 2 (k) = (k mod (m-1)) + 1 הכניסו את האיברים הבאים לפי הסדר ( משמאל לימין ) 22, 1, 13, 11, 24, 33, 18, 42, 31 a. לטבלת גיבוב מבוססת שרשור, עם פונקציית גיבוב h(k)=h 1 (k).

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod 11 / / / / / / / / / / / Chaining

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod 11 / / / / / / / / / / / Chaining

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod 11 / / / / / / / / / / / h(22)=0 Chaining

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod 11 / / / / / / / / / / h(22)=0 /22 Chaining

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod 11 / / / / / / / / / / /22 Chaining

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod 11 / / / / / / / / / / h(1)=1 /22 Chaining

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod 11 / / / / / / / / / h(1)=1 /22 /1 Chaining

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod 11 / / / / / / / / / /22 /1 Chaining

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod 11 / / / / / / / / / h(13)=2 /22 /1 Chaining

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod 11 / / / / / / / / h(13)=2 /22 /1 /13 Chaining

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod 11 / / / / / / / / /22 /1 /13 Chaining

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod 11 / / / / / / / / h(11)=0 /22 /1 /13 Chaining

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod 11 / / / / / / / / h(11)=0 11 /1 /13 /22 Chaining

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod 11 / / / / / / / / h(24)=2 11 /1 24 /22 /13 Chaining

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod 11 / / / / / / / / h(33)=0 33 /1 24 /13 11/22 Chaining

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod 11 / / / / / / / h(18)=7 33 / /13 /22 /18 Chaining

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod 11 / / / / / / h(42)=9 33 / /13 /22 /18 /42 Chaining

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod 11 / / / / / / h(31)=9 33 / /13 /22 /18 31/42 Chaining

Hash Tables Open Addressing (מיעון פתוח)

שאלה 3 נתון : טבלת גיבוב עם m=11 ופונקציות גיבוב h 1 (k)=k mod m h 2 (k)=1+(k mod (m-1)) הכניסו את האיברים הבאים לפי הסדר ( משמאל לימין ) 22, 1, 13, 11, 24, 33, 18, 42, 31 a. לטבלת גיבוב מבוססת שרשור, עם פונקציית גיבוב h(k)=h 1 (k). b. לטבלת גיבוב מבוססת linear probing, עם אותה פונקציית גיבוב. c. לטבלת גיבוב מבוססת double hashing, עם פונקציית גיבוב ראשית h 1 (k) ופונקציית צעד h 2 (k).

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod Linear Probing

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod Linear Probing

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod h(22)=0 Linear Probing

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod h(22)=0 פנוי Linear Probing

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod h(22)=0 22 פנוי Linear Probing

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod Linear Probing

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod h(1)=1 22 פנוי Linear Probing

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod h(1)= פנוי Linear Probing

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod Linear Probing

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod h(13)= פנוי Linear Probing

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod h(13)= פנוי Linear Probing

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod Linear Probing

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod h(11)= תפוס פנוי Linear Probing

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod h(11)= פנוי Linear Probing

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod h(24)= תפוס פנוי Linear Probing

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod h(24)= פנוי Linear Probing

תפוס שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod h(33)= תפוס פנוי תפוס Linear Probing

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod h(33)= פנוי Linear Probing

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod h(18)= פנוי Linear Probing

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod h(42)= פנוי Linear Probing

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod h(31)= פנוי תפוס Linear Probing

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h(k)=k mod h(31)= פנוי Linear Probing

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, 31 h 1 (k)=k mod Double Hashing Step Function h 2 (k)=1+ (k mod 10)

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, h 1 (k)=k mod 11 Double Hashing Step Function h 2 (k)=1+ (k mod 10)

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, h 1 (22)=0 h 1 (k)=k mod 11 Double Hashing Step Function h 2 (k)=1+ (k mod 10)

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, פנוי h 1 (22)=0 h 1 (k)=k mod 11 Double Hashing Step Function h 2 (k)=1+ (k mod 10)

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, פנוי h 1 (22)=0 h 1 (k)=k mod 11 Double Hashing Step Function h 2 (k)=1+ (k mod 10)

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, h 1 (k)=k mod 11 Double Hashing Step Function h 2 (k)=1+ (k mod 10)

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, h 1 (1)=1 22 פנוי h 1 (k)=k mod 11 Double Hashing Step Function h 2 (k)=1+ (k mod 10)

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, פנוי h 1 (1)=1 h 1 (k)=k mod 11 Double Hashing Step Function h 2 (k)=1+ (k mod 10)

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, h 1 (k)=k mod 11 Double Hashing Step Function h 2 (k)=1+ (k mod 10)

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, h 1 (13)= פנוי h 1 (k)=k mod 11 Double Hashing Step Function h 2 (k)=1+ (k mod 10)

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, פנוי h 1 (13)=2 h 1 (k)=k mod 11 Double Hashing Step Function h 2 (k)=1+ (k mod 10)

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, h 1 (k)=k mod 11 Double Hashing Step Function h 2 (k)=1+ (k mod 10)

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, תפוס פנוי h 1 (11)=0 h 1 (k)=k mod 11 Double Hashing Step Function h 2 (k)=1+ (k mod 10) h 2 (11)=2

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, פנוי h 1 (11)=0 h 1 (k)=k mod 11 Double Hashing Step Function h 2 (k)=1+ (k mod 10) h 2 (11)=2

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, h 1 (24)=2 h 1 (k)=k mod 11 Double Hashing Step Function h 2 (k)=1+ (k mod 10) h 2 (24)=5 תפוס פנוי

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, h 1 (24)=2 h 1 (k)=k mod 11 Double Hashing Step Function h 2 (k)=1+ (k mod 10) h 2 (24)=5 פנוי

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, h 1 (33)=0 h 1 (k)=k mod 11 Double Hashing Step Function h 2 (k)=1+ (k mod 10) h 2 (33)=4 תפוס פנוי

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, h 1 (33)=0 h 1 (k)=k mod 11 Double Hashing Step Function h 2 (k)=1+ (k mod 10) h 2 (33)=4 פנוי

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, h 1 (18)=7 h 1 (k)=k mod 11 Double Hashing Step Function h 2 (k)=1+ (k mod 10) h 2 (18)=9 תפוס פנוי

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, h 1 (42)=9 h 1 (k)=k mod 11 Double Hashing Step Function h 2 (k)=1+ (k mod 10) פנוי

שאלה 3 22, 1, 13, 11, 24, 33, 18, 42, h 1 (31)=9 h 1 (k)=k mod 11 Double Hashing Step Function h 2 (k)=1+ (k mod 10) h 2 (31)=2 תפוס פנוי תפוס

שאלה 3 טבלת השוואה :

Hash Tables Average (expected) Search Time

Hash Tables

שאלה 4 בשאלה 3 השתמשנו, עבור טבלת גיבוב עם m=11, בפונקציית גיבוב ראשית h 1 (k)=k mod 11 ופונקציית צעד h 2 (k)= k mod a. האם ניתן היה להשתמש בפונקציה h 1 כפונקציית הצעד ובפונקציה h 2 כפונקציית הגיבוב ?

שאלה 4 a. האם ניתן היה להשתמש בפונקציה h 1 כפונקציית הצעד ובפונקציה h 2 כפונקציית הגיבוב ? תשובה : לא, כיוון ש -h 1 (k) עלול לקבל ערך 0, ואם התא כבר תפוס לא נוכל למקם את הערך החדש. לדוגמא, אם נכניס את הערך 1, ולאחר מכן ננסה להכניס את הערך 11, לא נוכל. בעיה נוספת היא ש -h 2 לא מקבלת את הערך 0. h 1 (k)= k mod 11 h 2 (k)= k mod

שאלה 4

אפשרי לא אפשרי

שאלה 4

שאלה 5

b. הציעו אלגוריתם בעל זמן ריצה יותר טוב בממוצע, ע " י שימוש בטבלת גיבוב בגודל m. תשובה : ראשית, נכניס את ערכי T לטבלת גיבוב ( מבוססת שרשור ). לאחר מכן, נחפש עבור כל ערך ב -S אם הוא כבר נמצא בטבלת הגיבוב.

שאלה 5

Hash Tables Bloom Filter פילטר בלום אינו מבנה נתונים, אלא מבנה שתומך במבנה נתונים חוסך חיפושים מיותרים במבנה הנתונים, שיכולים לקחת זמן רב אין false negative

שאלה 5

שאלה 6

b. כיצד ניתן לעשות זאת ב O(n)- זמן ממוצע ? פתרון : 1. בוחרים פונקציית גיבוב אוניברסלית h מקבוצת פונקציות גיבוב אוניברסליות H. 2. מכניסים את ערכי המערך לטבלת גיבוב בגודל n מבוססת שרשור ע " י פונקציית הגיבוב h. 3. עבור כל ערך A[i] במערך, נבדוק האם X-A[i] נמצא בטבלת הגיבוב. כפי שראיתם בשיעור, ע " י שימוש בפונקציית גיבוב אוניברסלית, זמן החיפוש של ערך בטבלת הגיבוב הינו O(1), ללא תלות בהתפלגות הערכים במערך. לכן זמן הריצה של האלגוריתם הינו O(n) בממוצע.

Question 7 Suppose we have n elements and a very good hash function. We have a hash table with m=n 1.5 double slots, that is, each hash table slot can hold two elements. We perform insert and search in the obvious manner, checking both slots if necessary, but we do not implement any collision resolution as in open addressing. Instead, we have an overflow linked list for those elements that do not fit. – This list accepts all overflow elements, regardless of where they come from. – Clearly, one must search the overflow list after having inspected a full slot. Show that the expected unsuccessful search time is O(1). In other words, show that the expected number of elements in the overflow list is O(1) – (Hint: look at the total number of triples of n elements, and what is the chance that the hash function takes a triple to the same slot).

Question 7 Solution: Number of triplets among n indices = Θ(n 3 ) The probability for two keys to fall into the same slot 1/m (why?) The probability of a triplet to fall into the same slot 1/m 2 m = n 1.5 so the average number of collisions which will cause a key to go into the overflow list is: Θ(n 3 )/m 2 = Θ(n 3 )/n 3 = O(1)

שאלה 8 בטבלת גיבוב מבוססת double hashing, בכל תא i בטבלה הוסיפו מונה c i, המונה את מספר המפתחות k שהוכנסו לטבלה עם h 1 (k)=i. a. כיצד ניתן להשתמש במונים אלו כדי ליעל את החיפוש בטבלה, במקרה של חיפוש לא מוצלח ? תשובה : נחפש באותו אופן, אולם נשמור את מספר המפתחות k’ עם h 1 (k’)=h 1 (k) שראינו. אם ראינו כבר c i מפתחות כאלו, נדע ש -h 1 (k) לא נמצא.

שאלה 8 a. כיצד ניתן להשתמש במונים אלו כדי ליעל את החיפוש בטבלה, במקרה של חיפוש לא מוצלח ? קוד :

שאלה 8 בטבלת גיבוב מבוססת double hashing, ללא מחיקות, בכל תא i בטבלה הוסיפו מונה c i, המונה את מספר המפתחות k שהוכנסו לטבלה עם h 1 (k)=i. a. כיצד ניתן להשתמש במונים אלו כדי ליעל את החיפוש בטבלה, במקרה של חיפוש לא מוצלח ? b. הראו דוגמה בה מספר הגישות לטבלה בחיפוש לא מוצלח יורד מ -n ל -2 ( ע " י שימוש בסעיף הקודם )

שאלה 8 דוגמה : נסתכל על טבלת גיבוב עם – m=7 – h 1 (k)=k mod 7 – h 2 (k)=1+(k mod 6) נכניס את המפתחות הבאים לפי הסדר ( משמאל לימין ) { -3, 3, 1, 8, 9, 12,21} כעת, חיפוש עבור 29 ייקח 2 קריאות מהטבלה, במקום 7.

שאלה 8 בטבלת גיבוב מבוססת double hashing, בכל תא i בטבלה הוסיפו מונה c i, המונה את מספר המפתחות k שהוכנסו לטבלה עם h 1 (k)=i. a. כיצד ניתן להשתמש במונים אלו כדי ליעל את החיפוש בטבלה, במקרה של חיפוש לא מוצלח ? b. הראו דוגמה בה מספר הגישות לטבלה בחיפוש לא מוצלח יורד מ -n ל -2 ( ע " י שימוש בסעיף הקודם ) c. האם ניתן להשתמש באלגוריתם הנ " ל גם בטבלת גיבוב מבוססת linear probing?

שאלה 8 c. האם ניתן להשתמש באלגוריתם הנ " ל גם בטבלת גיבוב מבוססת linear probing? תשובה : כן. ייתכן שגם במקרה זה נאלץ לבדוק את כל הכניסות בטבלה. האלגוריתם משפר את זמן החיפוש בצורה משמעותית אם הטבלה הינה דלילה.

שאלה 9 In Moshe's grocery store, an automatic ordering system that uses a Queue (FIFO) is installed. Whenever a client places an order, the order's data (product, quantity, client's name) are being inserted to the back of the Queue. Moshe is extracting orders from the front of the queue, handling them one by one. In order to avoid a scenario where the store runs out of some product, every time Moshe extracts an order from the front of the Queue, he would like to know the total quantity of the currently extracted product, summed over all of this product's orders in the Queue. Find a data structure that supports the following operations in the given time:

שאלה 9 1.Enqueue(r)-Inserting an order to the back of the queue, r = (product, quantity, client's name). Running time - O(1) on average. 2.Dequeue()-Extracting an order from the front of the queue. Running time - O(1) on average. 3.Query(p)-Returns the total quantity of the product p in the Queue - O(1) on average. It is known that there are n products in the grocery. The Queue may hold at most m orders at any given time. We know that m<n. The data structure may use O(m) memory.

שאלה 9 - פתרון Solution: We will use a Queue and a hash table with chaining of size O(m). Each element (in the linked list) contains a key – the product's name and another field – its quantity. Enqueue(r) – Insert the order to the back of the queue. Search for r.product in the hash table. If r.product is in the table, add r.quantity to the quantity field of the appropriate element. If not, insert r.product to the hash table and update its quantity. Dequeue() – Extract r from the front of the queue. Search for r.product in the hash table (it must be in it). Decrement the quantity field of the element by r.quantity. If the quantity is 0, remove the element from the hash table.

שאלה 9 - פתרון Solution: Query(p) – Look for p in the hash table. If p is in the table, return p.quantity else return 0. Notice that therefore, the running time of the three operations is O(1) in average.