--- title: Addressing TARGET DECK: Obsidian::STEM FILE TAGS: hashing::addressing tags: - addressing - hashing --- ## Overview ## Direct Given a universe of keys $U = \{0, 1, \ldots, m - 1\}$, a **direct-address table** has $m$ **slots**. Each slot corresponds to a key in universe $U$. %%ANKI Basic Given universe $U$, how many slots must a direct-address table have? Back: $|U|$ Reference: Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% %%ANKI Basic What name is given to each position in a direct-address table? Back: A slot. Reference: Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% %%ANKI Basic Given a direct-address table, the element at slot $k$ has what key? Back: $k$. Reference: Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% %%ANKI Basic Given a direct-address table, an element with key $k$ is placed in what slot? Back: The $k$th slot. Reference: Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% %%ANKI Basic Write pseudocode to test membership of $x$ in direct-address table `T[0:m-1]`. Back: ```c bool membership(T, x) { return T[x.key] != NIL; } ``` Reference: Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% %%ANKI Basic What is the worst-cast runtime complexity of direct-address table searches? Back: $O(1)$ Reference: Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% %%ANKI Basic Write pseudocode to insert $x$ into direct-address table `T[0:m-1]`. Back: ```c void insert(T, x) { T[x.key] = x; } ``` Reference: Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% %%ANKI Basic What is the worst-case runtime complexity of direct-address table insertions? Back: $O(1)$ Reference: Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% %%ANKI Basic Write pseudocode to delete $x$ from direct-address table `T[0:m-1]`. Back: ```c void delete(T, x) { T[x.key] = NIL; } ``` Reference: Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% %%ANKI Basic What is the worst-cast runtime complexity of direct-address table deletions? Back: $O(1)$ Reference: Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% %%ANKI Basic In what situation does direct addressing waste space? Back: When the number of keys used is less than the size of the universe. Reference: Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% %%ANKI Basic In what situation is direct addressing impossible? Back: When the size of the universe is too large to hold in memory. Reference: Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% %%ANKI Basic What distinguishes direct addressing from closed and open addressing? Back: Direct addressing isn't concerned with conflicting keys. Reference: “Hash Tables: Open vs Closed Addressing | Programming.Guide,” accessed June 12, 2024, [https://programming.guide/hash-tables-open-vs-closed-addressing.html](https://programming.guide/hash-tables-open-vs-closed-addressing.html). END%% %%ANKI Basic Direct addressing sits between what other addressing types? Back: Open and closed addressing. Reference: “Hash Tables: Open vs Closed Addressing | Programming.Guide,” accessed June 12, 2024, [https://programming.guide/hash-tables-open-vs-closed-addressing.html](https://programming.guide/hash-tables-open-vs-closed-addressing.html). END%% %%ANKI Basic What is the theoretical maximum load factor in direct addressing? Back: $1$ Reference: “Hash Tables: Open vs Closed Addressing | Programming.Guide,” accessed June 12, 2024, [https://programming.guide/hash-tables-open-vs-closed-addressing.html](https://programming.guide/hash-tables-open-vs-closed-addressing.html). END%% ## Closed In **closed addressing**, a key is always stored in the bucket it's hashed to. Collisions are dealt with using separate data structures on a per-bucket basis. %%ANKI Basic What does "closed" refer to in term "closed addressing"? Back: A key is always stored in the slot it hashes to. Reference: “Hash Tables: Open vs Closed Addressing | Programming.Guide,” accessed June 12, 2024, [https://programming.guide/hash-tables-open-vs-closed-addressing.html](https://programming.guide/hash-tables-open-vs-closed-addressing.html). END%% %%ANKI Basic What does "open" refer to in term "open hashing"? Back: A key may resides in a data structure separate from the hash table. Reference: “Hash Tables: Open vs Closed Addressing | Programming.Guide,” accessed June 12, 2024, [https://programming.guide/hash-tables-open-vs-closed-addressing.html](https://programming.guide/hash-tables-open-vs-closed-addressing.html). END%% %%ANKI Cloze {Closed} addressing is also known as {open} hashing. Reference: “Hash Tables: Open vs Closed Addressing | Programming.Guide,” accessed June 12, 2024, [https://programming.guide/hash-tables-open-vs-closed-addressing.html](https://programming.guide/hash-tables-open-vs-closed-addressing.html). END%% %%ANKI Cloze The following is an example of {closed} addressing. ![[closed-addressing.png]] Reference: “Hash Tables: Open vs Closed Addressing | Programming.Guide,” accessed June 12, 2024, [https://programming.guide/hash-tables-open-vs-closed-addressing.html](https://programming.guide/hash-tables-open-vs-closed-addressing.html). END%% %%ANKI Cloze The following is an example of {open} hashing. ![[closed-addressing.png]] Reference: “Hash Tables: Open vs Closed Addressing | Programming.Guide,” accessed June 12, 2024, [https://programming.guide/hash-tables-open-vs-closed-addressing.html](https://programming.guide/hash-tables-open-vs-closed-addressing.html). END%% %%ANKI Basic What is the theoretical maximum load factor in closed addressing? Back: N/A Reference: “Hash Tables: Open vs Closed Addressing | Programming.Guide,” accessed June 12, 2024, [https://programming.guide/hash-tables-open-vs-closed-addressing.html](https://programming.guide/hash-tables-open-vs-closed-addressing.html). END%% %%ANKI Basic *Why* is the theoretical maximum load factor of closed addressing unbounded? Back: A closed addressing hash table can always have more entries inserted into it. Reference: “Hash Tables: Open vs Closed Addressing | Programming.Guide,” accessed June 12, 2024, [https://programming.guide/hash-tables-open-vs-closed-addressing.html](https://programming.guide/hash-tables-open-vs-closed-addressing.html). END%% %%ANKI Basic When is the load factor of a closed addressing hash table $0$? Back: When no entries are stored in the table. Reference: Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% %%ANKI Basic When is the load factor of a closed addressing hash table $1$? Back: When there exist the same number of total entries as slots. Reference: Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% %%ANKI Basic When is the load factor of a closed addressing hash table $> 1$? Back: When there exist more total entries than number of slots. Reference: Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% ### Chaining The most common form of closed addressing is **chaining**. In this scheme, each slot $j$ is a (nullable) pointer to the head of a linked list containing all the elements with hash value $j$. %%ANKI Basic What is the most common implementation of closed addressing? Back: Chaining. Reference: Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% %%ANKI Basic What data structure is typically used in a hash table with chaining? Back: Linked lists. Reference: Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% %%ANKI Basic Consider a hash table with chaining. What is in an empty slot? Back: A NIL pointer. Reference: Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% %%ANKI Basic Consider a hash table with chaining. What is in a nonempty slot? Back: A pointer to the head of a linked list. Reference: Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% %%ANKI Basic Consider a hash table with chaining. How many linked list instances exist? Back: One for each slot in the hash table. Reference: Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% %%ANKI Cloze A hash table with chaining is an example of {closed} addressing. Reference: Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% %%ANKI Cloze A hash table with chaining is an example of {open} hashing. Reference: Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% %%ANKI Basic What is the worst-case behavior of hashing with chaining? Back: All keys hash to the same slot. Reference: Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% %%ANKI Basic What is the load factor of a hash table in which all $n$ keys hash to one of $m$ slots? Back: $n / m$ (the load factor is a property of the table, not the distribution of keys). Reference: Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% %%ANKI Basic In a hash table with chaining and independent uniform hashing, what is the average *unsuccessful* search runtime? Back: Given load factor $\alpha$, $\Theta(1 + \alpha)$. Reference: Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% %%ANKI Basic In a hash table with chaining and independent uniform hash function $h$, *which* elements are examined in an unsuccessful search for element $x$? Back: All the elements in slot $h(x.key)$. Reference: Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% %%ANKI Basic In a hash table with chaining and independent uniform hashing, what is the average *successful* search runtime? Back: Given load factor $\alpha$, $\Theta(1 + \alpha)$. Reference: Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% %%ANKI Basic In a hash table with chaining and independent uniform hash function $h$, *which* elements are examined in a successful search for element $x$? Back: $x$ and the elements preceding $x$ in slot $h(x.key)$. Reference: Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% %%ANKI Basic In a hash table with chaining and independent uniform hashing, what is the average seach runtime? Back: Given load factor $\alpha$, $\Theta(1 + \alpha)$. Reference: Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% %%ANKI Basic In a hash table with chaining and independent uniform hashing, *when* is the average runtime of search $O(1)$? Back: When the number of entries is at most proportional to the number of slots in the table. Reference: Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% %%ANKI Basic Suppose $n$ is at most proportional to $m$. How is this denoted in complexity notation? Back: $n = O(m)$ Reference: Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% ## Open In **open addressing**, keys always reside in the hash table. Collisions are dealt with by searching for other empty buckets within the hash table. %%ANKI Basic What does "closed" refer to in term "closed hashing"? Back: A key must reside in the hash table. Reference: “Hash Tables: Open vs Closed Addressing | Programming.Guide,” accessed June 12, 2024, [https://programming.guide/hash-tables-open-vs-closed-addressing.html](https://programming.guide/hash-tables-open-vs-closed-addressing.html). END%% %%ANKI Basic What does "open" refer to in term "open addressing"? Back: A key is not necessarily stored in the slot it hashes to. Reference: “Hash Tables: Open vs Closed Addressing | Programming.Guide,” accessed June 12, 2024, [https://programming.guide/hash-tables-open-vs-closed-addressing.html](https://programming.guide/hash-tables-open-vs-closed-addressing.html). END%% %%ANKI Cloze {Open} addressing is also known as {closed} hashing. Reference: “Hash Tables: Open vs Closed Addressing | Programming.Guide,” accessed June 12, 2024, [https://programming.guide/hash-tables-open-vs-closed-addressing.html](https://programming.guide/hash-tables-open-vs-closed-addressing.html). END%% %%ANKI Cloze The following is an example of {closed} hashing. ![[open-addressing.png]] Reference: “Hash Tables: Open vs Closed Addressing | Programming.Guide,” accessed June 12, 2024, [https://programming.guide/hash-tables-open-vs-closed-addressing.html](https://programming.guide/hash-tables-open-vs-closed-addressing.html). END%% %%ANKI Cloze The following is an example of {open} addressing. ![[open-addressing.png]] Reference: “Hash Tables: Open vs Closed Addressing | Programming.Guide,” accessed June 12, 2024, [https://programming.guide/hash-tables-open-vs-closed-addressing.html](https://programming.guide/hash-tables-open-vs-closed-addressing.html). END%% %%ANKI Basic What is the theoretical maximum load factor in open addressing? Back: $1$ Reference: “Hash Tables: Open vs Closed Addressing | Programming.Guide,” accessed June 12, 2024, [https://programming.guide/hash-tables-open-vs-closed-addressing.html](https://programming.guide/hash-tables-open-vs-closed-addressing.html). END%% %%ANKI Basic *Why* is the theoretical maximum load factor of open addressing bounded? Back: An open addressing hash table can only store as many entries as slots. Reference: “Hash Tables: Open vs Closed Addressing | Programming.Guide,” accessed June 12, 2024, [https://programming.guide/hash-tables-open-vs-closed-addressing.html](https://programming.guide/hash-tables-open-vs-closed-addressing.html). END%% %%ANKI Basic When is the load factor of an open addressing hash table $0$? Back: When no entries are stored in the table. Reference: Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% %%ANKI Basic When is the load factor of a open addressing hash table $1$? Back: When there exist the same number of total entries as slots. Reference: Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% %%ANKI Basic When is the load factor of an open addressing hash table $> 1$? Back: N/A Reference: Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022). END%% ## Bibliography * “Hash Tables: Open vs Closed Addressing | Programming.Guide,” accessed June 12, 2024, [https://programming.guide/hash-tables-open-vs-closed-addressing.html](https://programming.guide/hash-tables-open-vs-closed-addressing.html). * Thomas H. Cormen et al., Introduction to Algorithms, Fourth edition (Cambridge, Massachusett: The MIT Press, 2022).