CS251 Lecture Notes  Feb. 21, 2005
by Adam Muehlhausen
Last class we went over Hash Tables (called 'chaining') and Probing.
In both chaining and probing hash tables, the expected insertation takes expected time O(1) as long as
n
is less than
N
n
number of entries
N
size of hash table
In general, the expected time is O(n/N).
Hash Functions
The function that maps keys to the index in the table is called "hash function".
This is made of 2 parts:
hash code map
 translates the key to a number.
compression map
 translates that number to an index (that index will be in the range 0 to N1)
**The
Hash Code Map
can be
3 things
1)
Integer cast
It is used for numeric types and we interpret bits as an int. If the key is already an integer, then the identity function is the hash code map.
Example:
2)
Component sum
This is used for numbers or variables that use multiple 32 bit words. We add the words in the key.
Example:
const int MAX = 100;
char key[MAX];
//seen as sequence of words in memory
//assume key is initialized
unsigned int sum = 0;
unsigned int * p = (unsigned int *) key;
for(int i=0; i < MAX/sizeof(unsigned int); i++) {
sum += p[i];
}
*You can use this approach for hashing strings.
3)
Polynomial accumulation
This function views the words in the key as coefficients of a polynomial
**
Compression Map
methods
1)
Division:
h(k) = f(k) mod N
most common method. N is usually a prime to give an even distribution
This preview has intentionally blurred sections. Sign up to view the full version.
View Full Document
2)
Multiply and divide:
h(k) = a f(k) + b mod N
*sometimes this provides a better distribution. (We will use #1 on project 5 though)
This is the end of the preview.
Sign up
to
access the rest of the document.
 Fall '08
 Staff
 Binary Search, Data Structures, hash function, Cuckoo hashing, Adam Muehlhausen, hash code map

Click to edit the document details