elementary data structures and hash tables · concepts a data structure is a way to organize and...
TRANSCRIPT
![Page 1: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/1.jpg)
Elementary Data Structures
and Hash Tables
Antonio Carzaniga
Faculty of InformaticsUniversità della Svizzera italiana
March 23, 2016
![Page 2: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/2.jpg)
Outline
Common concepts and notation
Stacks
Queues
Linked lists
Trees
Direct-access tables
Hash tables
![Page 3: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/3.jpg)
Concepts
A data structure is a way to organize and store information
◮ to facilitate access, or for other purposes
![Page 4: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/4.jpg)
Concepts
A data structure is a way to organize and store information
◮ to facilitate access, or for other purposes
A data structure has an interface consisting of procedures foradding, deleting, accessing, reorganizing, etc.
![Page 5: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/5.jpg)
Concepts
A data structure is a way to organize and store information
◮ to facilitate access, or for other purposes
A data structure has an interface consisting of procedures foradding, deleting, accessing, reorganizing, etc.
A data structure stores data and possiblymeta-data
![Page 6: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/6.jpg)
Concepts
A data structure is a way to organize and store information
◮ to facilitate access, or for other purposes
A data structure has an interface consisting of procedures foradding, deleting, accessing, reorganizing, etc.
A data structure stores data and possiblymeta-data
◮ e.g., a heap needs an array A to store the keys, plus a variableA.heap-size to remember how many elements are in the heap
![Page 7: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/7.jpg)
Stack
The ubiquitous “last-in first-out” container (LIFO)
![Page 8: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/8.jpg)
Stack
The ubiquitous “last-in first-out” container (LIFO)
Interface
◮ STACK-EMPTY(S) returns TRUE if and only if S is empty
◮ PUSH(S, x) pushes the value x onto the stack S
◮ POP(S) extracts and returns the value on the top of the stack S
![Page 9: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/9.jpg)
Stack
The ubiquitous “last-in first-out” container (LIFO)
Interface
◮ STACK-EMPTY(S) returns TRUE if and only if S is empty
◮ PUSH(S, x) pushes the value x onto the stack S
◮ POP(S) extracts and returns the value on the top of the stack S
Implementation
◮ using an array
◮ using a linked list
◮ . . .
![Page 10: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/10.jpg)
A Stack Implementation
![Page 11: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/11.jpg)
A Stack Implementation
Array-based implementation
![Page 12: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/12.jpg)
A Stack Implementation
Array-based implementation
◮ S is an array that holds the elements of the stack
◮ S. top is the current position of the top element of S
![Page 13: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/13.jpg)
A Stack Implementation
Array-based implementation
◮ S is an array that holds the elements of the stack
◮ S. top is the current position of the top element of S
STACK-EMPTY(S)
1 if S. top == 02 return TRUE
3 else return FALSE
![Page 14: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/14.jpg)
A Stack Implementation
Array-based implementation
◮ S is an array that holds the elements of the stack
◮ S. top is the current position of the top element of S
STACK-EMPTY(S)
1 if S. top == 02 return TRUE
3 else return FALSE
PUSH(S,X)
1 S. top = S. top + 12 S[S. top] = x
POP(S)
1 if STACK-EMPTY(S)2 error “underflow”3 else S. top = S. top − 14 return S[S. top + 1]
![Page 15: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/15.jpg)
Queue
The ubiquitous “first-in first-out” container (FIFO)
![Page 16: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/16.jpg)
Queue
The ubiquitous “first-in first-out” container (FIFO)
Interface
◮ ENQUEUE(Q, x) adds element x at the back of queue Q
◮ DEQUEUE(Q) extracts the element at the head of queue Q
![Page 17: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/17.jpg)
Queue
The ubiquitous “first-in first-out” container (FIFO)
Interface
◮ ENQUEUE(Q, x) adds element x at the back of queue Q
◮ DEQUEUE(Q) extracts the element at the head of queue Q
Implementation
◮ Q is an array of fixed length Q. length
◮ i.e., Q holds at most Q. length elements
◮ enqueueing more than Q elements causes an “overflow” error
◮ Q.head is the position of the “head” of the queue
◮ Q. tail is the first empty position at the tail of the queue
![Page 18: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/18.jpg)
Enqueue
ENQUEUE(Q,X)
1 if Q.queue-full2 error “overflow”3 else Q[Q. tail] = x4 if Q. tail < Q. length5 Q. tail = Q. tail + 16 else Q. tail = 17 if Q. tail == Q.head8 Q.queue-full = TRUE
9 Q.queue-empty = FALSE
![Page 19: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/19.jpg)
Enqueue
ENQUEUE(Q,X)
1 if Q.queue-full2 error “overflow”3 else Q[Q. tail] = x4 if Q. tail < Q. length5 Q. tail = Q. tail + 16 else Q. tail = 17 if Q. tail == Q.head8 Q.queue-full = TRUE
9 Q.queue-empty = FALSE
Q.head
Q. tail
![Page 20: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/20.jpg)
Enqueue
ENQUEUE(Q,X)
1 if Q.queue-full2 error “overflow”3 else Q[Q. tail] = x4 if Q. tail < Q. length5 Q. tail = Q. tail + 16 else Q. tail = 17 if Q. tail == Q.head8 Q.queue-full = TRUE
9 Q.queue-empty = FALSE
Q.head
Q. tail
![Page 21: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/21.jpg)
Enqueue
ENQUEUE(Q,X)
1 if Q.queue-full2 error “overflow”3 else Q[Q. tail] = x4 if Q. tail < Q. length5 Q. tail = Q. tail + 16 else Q. tail = 17 if Q. tail == Q.head8 Q.queue-full = TRUE
9 Q.queue-empty = FALSE
Q.head
Q. tail
![Page 22: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/22.jpg)
Enqueue
ENQUEUE(Q,X)
1 if Q.queue-full2 error “overflow”3 else Q[Q. tail] = x4 if Q. tail < Q. length5 Q. tail = Q. tail + 16 else Q. tail = 17 if Q. tail == Q.head8 Q.queue-full = TRUE
9 Q.queue-empty = FALSE
Q.head
Q. tail
![Page 23: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/23.jpg)
Enqueue
ENQUEUE(Q,X)
1 if Q.queue-full2 error “overflow”3 else Q[Q. tail] = x4 if Q. tail < Q. length5 Q. tail = Q. tail + 16 else Q. tail = 17 if Q. tail == Q.head8 Q.queue-full = TRUE
9 Q.queue-empty = FALSE
Q.head
Q. tail
![Page 24: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/24.jpg)
Enqueue
ENQUEUE(Q,X)
1 if Q.queue-full2 error “overflow”3 else Q[Q. tail] = x4 if Q. tail < Q. length5 Q. tail = Q. tail + 16 else Q. tail = 17 if Q. tail == Q.head8 Q.queue-full = TRUE
9 Q.queue-empty = FALSE
Q.head
Q. tail
![Page 25: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/25.jpg)
Enqueue
ENQUEUE(Q,X)
1 if Q.queue-full2 error “overflow”3 else Q[Q. tail] = x4 if Q. tail < Q. length5 Q. tail = Q. tail + 16 else Q. tail = 17 if Q. tail == Q.head8 Q.queue-full = TRUE
9 Q.queue-empty = FALSE
Q.head
Q. tail
![Page 26: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/26.jpg)
Dequeue
DEQUEUE(Q)
1 if Q.queue-empty2 error “underflow”3 else x = Q[Q.head]4 if Q.head < Q. length5 Q.head = Q.head + 16 else Q.head = 17 if Q. tail == Q.head8 Q.queue-empty = TRUE
9 Q.queue-full = FALSE
10 return x
![Page 27: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/27.jpg)
Dequeue
DEQUEUE(Q)
1 if Q.queue-empty2 error “underflow”3 else x = Q[Q.head]4 if Q.head < Q. length5 Q.head = Q.head + 16 else Q.head = 17 if Q. tail == Q.head8 Q.queue-empty = TRUE
9 Q.queue-full = FALSE
10 return x
Q.head
Q. tail
![Page 28: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/28.jpg)
Dequeue
DEQUEUE(Q)
1 if Q.queue-empty2 error “underflow”3 else x = Q[Q.head]4 if Q.head < Q. length5 Q.head = Q.head + 16 else Q.head = 17 if Q. tail == Q.head8 Q.queue-empty = TRUE
9 Q.queue-full = FALSE
10 return x
Q.head
Q. tail
![Page 29: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/29.jpg)
Dequeue
DEQUEUE(Q)
1 if Q.queue-empty2 error “underflow”3 else x = Q[Q.head]4 if Q.head < Q. length5 Q.head = Q.head + 16 else Q.head = 17 if Q. tail == Q.head8 Q.queue-empty = TRUE
9 Q.queue-full = FALSE
10 return x
Q.head
Q. tail
![Page 30: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/30.jpg)
Dequeue
DEQUEUE(Q)
1 if Q.queue-empty2 error “underflow”3 else x = Q[Q.head]4 if Q.head < Q. length5 Q.head = Q.head + 16 else Q.head = 17 if Q. tail == Q.head8 Q.queue-empty = TRUE
9 Q.queue-full = FALSE
10 return x
Q.head
Q. tail
![Page 31: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/31.jpg)
Linked List
Interface
◮ LIST-INSERT(L, x) adds element x at beginning of a list L
◮ LIST-DELETE(L, x) removes element x from a list L
◮ LIST-SEARCH(L, k) finds an element whose key is k in a list L
![Page 32: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/32.jpg)
Linked List
Interface
◮ LIST-INSERT(L, x) adds element x at beginning of a list L
◮ LIST-DELETE(L, x) removes element x from a list L
◮ LIST-SEARCH(L, k) finds an element whose key is k in a list L
Implementation
◮ a doubly-linked list
◮ each element x has two “links” x.prev and x.next to theprevious and next elements, respectively
◮ each element x holds a key x.key
◮ it is convenient to have a dummy “sentinel” element L.nil
![Page 33: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/33.jpg)
Linked List With a “Sentinel”
LIST-INIT(L)
1 L.nil.prev = L.nil2 L.nil.next = L.nil
LIST-INSERT(L, x)
1 x.next = L.nil.next2 L.nil.next.prev = x3 L.nil.next = x4 x.prev = L.nil
LIST-SEARCH(L, k)
1 x = L.nil.next2 while x , L.nil ∧ x.key , k3 x = x.next4 return x
![Page 34: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/34.jpg)
Trees
Structure
◮ fixed branching
◮ unbounded branching
![Page 35: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/35.jpg)
Trees
Structure
◮ fixed branching
◮ unbounded branching
Implementation
◮ for each node x , T . root, x.parent is x’s parent node
◮ fixed branching:
e.g., x. left-child and x. right-child in a binary tree
◮ unbounded branching:
x. left-child is x’s first (leftmost) child
x. right-sibling is x closest sibling to the right
![Page 36: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/36.jpg)
Complexity
![Page 37: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/37.jpg)
Complexity
Algorithm Complexity
![Page 38: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/38.jpg)
Complexity
Algorithm Complexity
STACK-EMPTY
![Page 39: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/39.jpg)
Complexity
Algorithm Complexity
STACK-EMPTY O(1)
PUSH
![Page 40: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/40.jpg)
Complexity
Algorithm Complexity
STACK-EMPTY O(1)
PUSH O(1)
POP O(1)
ENQUEUE O(1)
DEQUEUE O(1)
LIST-INSERT
![Page 41: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/41.jpg)
Complexity
Algorithm Complexity
STACK-EMPTY O(1)
PUSH O(1)
POP O(1)
ENQUEUE O(1)
DEQUEUE O(1)
LIST-INSERT O(1)
LIST-DELETE
![Page 42: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/42.jpg)
Complexity
Algorithm Complexity
STACK-EMPTY O(1)
PUSH O(1)
POP O(1)
ENQUEUE O(1)
DEQUEUE O(1)
LIST-INSERT O(1)
LIST-DELETE O(1)
LIST-SEARCH
![Page 43: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/43.jpg)
Complexity
Algorithm Complexity
STACK-EMPTY O(1)
PUSH O(1)
POP O(1)
ENQUEUE O(1)
DEQUEUE O(1)
LIST-INSERT O(1)
LIST-DELETE O(1)
LIST-SEARCH Θ(n)
![Page 44: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/44.jpg)
Dictionary
A dictionary is an abstract data structure that represents a setof elements (or keys)
◮ a dynamic set
![Page 45: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/45.jpg)
Dictionary
A dictionary is an abstract data structure that represents a setof elements (or keys)
◮ a dynamic set
Interface (generic interface)
◮ INSERT(D, k) adds a key k to the dictionary D
◮ DELETE(D, k) removes key k from D
◮ SEARCH(D, k) tells whether D contains a key k
![Page 46: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/46.jpg)
Dictionary
A dictionary is an abstract data structure that represents a setof elements (or keys)
◮ a dynamic set
Interface (generic interface)
◮ INSERT(D, k) adds a key k to the dictionary D
◮ DELETE(D, k) removes key k from D
◮ SEARCH(D, k) tells whether D contains a key k
Implementation
◮ many (concrete) data structures
![Page 47: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/47.jpg)
Dictionary
A dictionary is an abstract data structure that represents a setof elements (or keys)
◮ a dynamic set
Interface (generic interface)
◮ INSERT(D, k) adds a key k to the dictionary D
◮ DELETE(D, k) removes key k from D
◮ SEARCH(D, k) tells whether D contains a key k
Implementation
◮ many (concrete) data structures
◮ hash tables
![Page 48: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/48.jpg)
Direct-Address Table
A direct-address table implements a dictionary
![Page 49: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/49.jpg)
Direct-Address Table
A direct-address table implements a dictionary
The universe of keys is U = {1, 2, . . . ,M}
![Page 50: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/50.jpg)
Direct-Address Table
A direct-address table implements a dictionary
The universe of keys is U = {1, 2, . . . ,M}
Implementation
◮ an array T of sizeM
◮ each key has its own position in T
![Page 51: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/51.jpg)
Direct-Address Table
A direct-address table implements a dictionary
The universe of keys is U = {1, 2, . . . ,M}
Implementation
◮ an array T of sizeM
◮ each key has its own position in T
DIRECT-ADDRESS-INSERT(T, k)
1 T[k] = TRUE
DIRECT-ADDRESS-DELETE(T, k)
1 T[k] = FALSE
DIRECT-ADDRESS-SEARCH(T, k)
1 return T[k]
![Page 52: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/52.jpg)
Direct-Address Table (2)
Complexity
![Page 53: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/53.jpg)
Direct-Address Table (2)
Complexity
All direct-address table operations are O(1)!
![Page 54: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/54.jpg)
Direct-Address Table (2)
Complexity
All direct-address table operations are O(1)!
So why isn’t every set implemented with a direct-addresstable?
![Page 55: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/55.jpg)
Direct-Address Table (2)
Complexity
All direct-address table operations are O(1)!
So why isn’t every set implemented with a direct-addresstable?
The space complexity is Θ(`U`)
◮ `U` is typically a very large number—U is the universe of keys!
◮ the represented set is typicallymuch smaller than `U`
◮ i.e., a direct-address table usually wastes a lot of space
![Page 56: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/56.jpg)
Direct-Address Table (2)
Complexity
All direct-address table operations are O(1)!
So why isn’t every set implemented with a direct-addresstable?
The space complexity is Θ(`U`)
◮ `U` is typically a very large number—U is the universe of keys!
◮ the represented set is typicallymuch smaller than `U`
◮ i.e., a direct-address table usually wastes a lot of space
Can we have the benefits of a direct-address table but with atable of reasonable size?
![Page 57: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/57.jpg)
Hash Table
Idea
◮ use a table T with `T ` ≪ `U`
◮ map each key k ∈ U to a position in T , using a hash function
h : U → {1, . . . , `T `}
![Page 58: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/58.jpg)
Hash Table
Idea
◮ use a table T with `T ` ≪ `U`
◮ map each key k ∈ U to a position in T , using a hash function
h : U → {1, . . . , `T `}
HASH-INSERT(T, k)
1 T[h(k)] = TRUE
HASH-DELETE(T, k)
1 T[h(k)] = FALSE
HASH-SEARCH(T, k)
1 return T[h(k)]
![Page 59: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/59.jpg)
Hash Table
Idea
◮ use a table T with `T ` ≪ `U`
◮ map each key k ∈ U to a position in T , using a hash function
h : U → {1, . . . , `T `}
HASH-INSERT(T, k)
1 T[h(k)] = TRUE
HASH-DELETE(T, k)
1 T[h(k)] = FALSE
HASH-SEARCH(T, k)
1 return T[h(k)]
Are these algorithms correct?
![Page 60: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/60.jpg)
Hash Table
Idea
◮ use a table T with `T ` ≪ `U`
◮ map each key k ∈ U to a position in T , using a hash function
h : U → {1, . . . , `T `}
HASH-INSERT(T, k)
1 T[h(k)] = TRUE
HASH-DELETE(T, k)
1 T[h(k)] = FALSE
HASH-SEARCH(T, k)
1 return T[h(k)]
Are these algorithms correct? No!
![Page 61: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/61.jpg)
Hash Table
Idea
◮ use a table T with `T ` ≪ `U`
◮ map each key k ∈ U to a position in T , using a hash function
h : U → {1, . . . , `T `}
HASH-INSERT(T, k)
1 T[h(k)] = TRUE
HASH-DELETE(T, k)
1 T[h(k)] = FALSE
HASH-SEARCH(T, k)
1 return T[h(k)]
Are these algorithms correct? No!
What if two distinct keys k1 , k2 collide? (I.e., h(k1) = h(k2))
![Page 62: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/62.jpg)
Hash Table
U
T
![Page 63: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/63.jpg)
Hash Table
U
T
k1
![Page 64: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/64.jpg)
Hash Table
U
T
k1
k2
![Page 65: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/65.jpg)
Hash Table
U
T
k1
k2
k3
![Page 66: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/66.jpg)
Hash Table
U
T
k1
k2
k3
k4
![Page 67: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/67.jpg)
Hash Table
U
T
k1
k2
k3
k4
k1
k3
k4 k2
![Page 68: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/68.jpg)
Hash Table
U
T
k1
k2
k3
k4
k1
k3
k4 k2
CHAINED-HASH-INSERT(T, k)
1 return LIST-INSERT(T[h(k)], k)
![Page 69: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/69.jpg)
Hash Table
U
T
k1
k2
k3
k4
k1
k3
k4 k2
CHAINED-HASH-INSERT(T, k)
1 return LIST-INSERT(T[h(k)], k)
CHAINED-HASH-SEARCH(T, k)
1 return LIST-SEARCH(T[h(k)], k)
![Page 70: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/70.jpg)
Hash Table
U
T
k1
k2
k3
k4
k1
k3
k4 k2
CHAINED-HASH-INSERT(T, k)
1 return LIST-INSERT(T[h(k)], k)
CHAINED-HASH-SEARCH(T, k)
1 return LIST-SEARCH(T[h(k)], k)
load factor
α = n`T `
![Page 71: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/71.jpg)
Analysis
We assume uniform hashing for our hash functionh : U→ {1 . . . `T `} (where `T ` = T . length)
![Page 72: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/72.jpg)
Analysis
We assume uniform hashing for our hash functionh : U→ {1 . . . `T `} (where `T ` = T . length)
Pr[h(k) = i] =1
`T `for all i ∈ {1 . . . `T `}
(The formalism is actually a bit more complicated.)
![Page 73: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/73.jpg)
Analysis
We assume uniform hashing for our hash functionh : U→ {1 . . . `T `} (where `T ` = T . length)
Pr[h(k) = i] =1
`T `for all i ∈ {1 . . . `T `}
(The formalism is actually a bit more complicated.)
So, given n distinct keys, the expected length ni of the linkedlist at position i is
E[ni] =n
`T `= α
![Page 74: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/74.jpg)
Analysis
We assume uniform hashing for our hash functionh : U→ {1 . . . `T `} (where `T ` = T . length)
Pr[h(k) = i] =1
`T `for all i ∈ {1 . . . `T `}
(The formalism is actually a bit more complicated.)
So, given n distinct keys, the expected length ni of the linkedlist at position i is
E[ni] =n
`T `= α
We further assume that h(k) can be computed in O(1) time
![Page 75: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/75.jpg)
Analysis
We assume uniform hashing for our hash functionh : U→ {1 . . . `T `} (where `T ` = T . length)
Pr[h(k) = i] =1
`T `for all i ∈ {1 . . . `T `}
(The formalism is actually a bit more complicated.)
So, given n distinct keys, the expected length ni of the linkedlist at position i is
E[ni] =n
`T `= α
We further assume that h(k) can be computed in O(1) time
Therefore, the complexity of CHAINED-HASH-SEARCH is
Θ(1 + α)
![Page 76: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/76.jpg)
Open-Address Hash Table
U
T
![Page 77: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/77.jpg)
Open-Address Hash Table
U
T
k1
![Page 78: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/78.jpg)
Open-Address Hash Table
U
T
k1
k1
![Page 79: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/79.jpg)
Open-Address Hash Table
U
T
k1
k1
k2
![Page 80: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/80.jpg)
Open-Address Hash Table
U
T
k1
k1
k2 k2
![Page 81: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/81.jpg)
Open-Address Hash Table
U
T
k1
k1
k2 k2
k3
![Page 82: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/82.jpg)
Open-Address Hash Table
U
T
k1
k1
k2 k2
k3
k3
![Page 83: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/83.jpg)
Open-Address Hash Table
U
T
k1
k1
k2 k2
k3
k3
k4
![Page 84: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/84.jpg)
Open-Address Hash Table
U
T
k1
k1
k2 k2
k3
k3
k4
k4
![Page 85: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/85.jpg)
Open-Address Hash Table
U
T
k1
k1
k2 k2
k3
k3
k4
k4
HASH-INSERT(T, k)
1 j = h(k)2 for i = 1 to T . length3 if T[j] == NIL
4 T[j] = k5 return j6 elseif j < T . length7 j = j + 18 else j = 19 error “overflow”
![Page 86: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/86.jpg)
Open-Addressing (2)
Idea: instead of using linked lists, we can store all theelements in the table
◮ this implies α ≤ 1
![Page 87: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/87.jpg)
Open-Addressing (2)
Idea: instead of using linked lists, we can store all theelements in the table
◮ this implies α ≤ 1
When a collision occurs, we simply find another free cell in T
![Page 88: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/88.jpg)
Open-Addressing (2)
Idea: instead of using linked lists, we can store all theelements in the table
◮ this implies α ≤ 1
When a collision occurs, we simply find another free cell in T
A sequential “probe”may not be optimal
◮ can you figure out why?
![Page 89: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/89.jpg)
Open-Addressing (3)
HASH-INSERT(T, k)
1 for i = 1 to T . length2 j = h(k, i)3 if T[j] == NIL
4 T[j] = k5 return j6 error “overflow”
![Page 90: Elementary Data Structures and Hash Tables · Concepts A data structure is a way to organize and store information to facilitate access, or for other purposes A data structure has](https://reader030.vdocuments.site/reader030/viewer/2022041001/5ea11fa9b5452c63b84dc7b6/html5/thumbnails/90.jpg)
Open-Addressing (3)
HASH-INSERT(T, k)
1 for i = 1 to T . length2 j = h(k, i)3 if T[j] == NIL
4 T[j] = k5 return j6 error “overflow”
Notice that h(k, ·)must be a permutation
◮ i.e., h(k, 1), h(k, 2), . . . , h(k, `T `)must cover the entire table T