SparkNotes Shopping Cart  |     |  Checkout
Brought to you by Barnes and Noble
Hash Tables
 
 
Problems
Problem 4.1: Give the best, average, and worst case efficiencies of both the brute-force string search and Rabin-Karp string search. [Solution]
Problem 4.2: How does Rabin-Karp achieve an efficiency of O(M + N)? [Solution]
Problem 4.3: Using the hash() and hash_update() functions given in this section, give an example of a pattern string and text string that will reduce Rabin-Karp back to brute-force search, decreasing its efficiency back to O(MN). [Solution]
Problem 4.4: Challenge problem: Create a hash_update() function to go along with this hash() function:
long hash_str(hash_table_t *hashtable, int hash_len, char *start)
{
	long hval;
	int i; 
	
	/* If the string passed in is NULL, return 0 */
	if (start == NULL) return 0; 
	
	/* Multiply the old hash value by 257 and add the current character
	 * for as long as the string
	 */
	hval = 0L;
	for(i=0; i < hash_len; i++) {
		hval =  ((257 * hval) + start[i]) % hashtable->size;
	} 

	/* Return the hash value */
	return hval;
}
Use the function prototype:
long hash_update(
	long hval, 	/* old hash value */
	char start,	/* character to be removed */
	char end,	/* character to be added */
	int hash_len,	/* length of the string */
	hash_table_t *hashtable );	/* the hash table */
[Solution]
Problem 4.5: Give a hash function and a hash update function that will always reduce Rabin-Karp to O(MN) efficiency. [Solution]
Help | Feedback | Make a request | Report an error | Send to a friend
 
SparkNotes Study Cards boil down Organic Chemistry into digestible tidbits, making studying easier.
More...
 
We'll help you raise your score on the SAT II Physics test!
More...
 
 
Go to top