Chapter 18 Review questions
You have 650 table entries in a hash table with size of 1500. What is the load factor?
0.4333
Use modulo arithmetic to determine the index for a key 1234 for a table of 101 entries.
22
What is it called when a hash function maps two or more search keys into the same integer
A collision
According to the text, for the ADT dictionary, what implementation should be used when you do not know the maximum size of the dictionary?
Binary Search tree
A dictionary must store and form an association between search key and data value only for a sorted version of the dictionary, not for unsorted.
False
A linear link-based implementation of the ADT dictionary supports addition and removal operations more efficiently than an array-based implementation.
False
A sorted array-based implementation of the ADT dictionary cannot use a binary search.
False
An ADT dictionary should never allow duplicate search keys
False
An implementation of the ADT dictionary using a binary search tree is a poor choice for retrieval dominate applications.
False
If the size of a dictionary is small, a linear implementation is inadequate and difficult to understand.
False
In the ArrayDictionary class, we must sort the items each time traverse is called.
False
It is insufficient for hash functions to operate only on integers.
False
On average, quadratic probing and double hashing require more comparisons than linear probing.
False
Quadratic probing causes no clustering at all.
False
The add method for the template for TreeDictionary presented in the text does not allow for duplicate entries.
False
The getValue(searchKey) method for an ADT dictionary retrieves the specified search key for a given value.
False
What kind of function tells you where a dictionary entry is currently or will be placed if it is new?
Hash function
An entry in an ADT dictionary is sometimes known as a(n) _________________ pair.
Key-value
What are two other names for the ADT dictionary?
Map or table
Consider sorting a group of people based on their zip code. This criteria is known as a(n) ________________.
Search Key
Which of the following is not an ADT dictionary operation?
Sort the entries
A binary search is impractical with a link-based implementation of the ADT dictionary.
True
A binary search tree implementation of the ADT dictionary is nonlinear.
True
A linear link-based implementation of the ADT dictionary does not need to shift data for an add or a remove operation.
True
A perfect hash function maps each search key into a unique location of the hash table.
True
According to the text, if the size of a problem is small, the difference in efficiency among possible solutions is likely insignificant.
True
Because linear implementations are easy to understand conceptually they are appropriate for dictionaries that will only contain a small number of entries.
True
Dictionary traversal is inefficient when using hashing.
True
Digit selection does not distribute entries in the hash table.
True
Double hashing drastically reduces clustering.
True
It is important to know both what operations are needed for a given application of an ADT dictionary and how often each operation is required.
True
The binary search tree implementation of the ADT dictionary has a binary search tree as a data member.
True
The client code should not be able to modify an entry's search key once that entry is in the dictionary.
True
The traverse method visits all dictionary entries.
True
To make an intelligent choice among various possible dictionary implementations, you must analyze the efficiency with which each supports the dictionary operations.
True
With separate chaining, the size of the dictionary is dynamic and can exceed the size of the hash table.
True
What is the implementation of the ADT dictionary which has efficiency O(1) for addition?
Unsorted link-based
When is a perfect hash function possible?
When you know all the search keys
What does the ADT dictionary use to identify its entries?
a search key
In the class ArrayDictionary declared by the text, which of the following methods bears the responsibility for keeping the array items sorted?
add
According to the text, for the ADT dictionary, a sorted array-based implementation will shift data during what two operations?
additions and removals
Name three categories of linear implementations of a dictionary.
any three of: Sorted by search key array based, sorted by search key link based, unsorted array based, unsorted link based
What are two possible things that could be done if a new entry's search key already exists in the dictionary?
any two of: deny the attempt, ignore the attempt, replace the existing entry with the new entry
Name two reasons for studying the linear implementations of an ADT dictionary?
any two of: perspective, efficiency, and motivation
A hash function maps an integer into a(n) _______________________.
array index
What is the implementation of the ADT dictionary which has efficiency O(log n) for addition?
binary search tree
You define a hash table so that each location table[i] is itself an array. This array is referred to as a(n)
bucket
What happens when the search key of an existing entry in the dictionary is changed?
could make that entry or other dictionary entries impossible to find.
Which of the following is the better choice when attempting to add a new entry to a dictionary where the search key already exists?
deny the attempt
In the header file for the class ArrayDictionary, the text declares which of the following methods as private?
destroyDictionary( )
What are two requirements for a hash function?
easy and fast to compute, place entries evenly throughout the hash table.
Name three major concerns which constitute a good hash function.
function easy and fast to compute, function scatters data evenly throughout hash table, how well does function scatter random data
When you begin at the hash location and search the dictionary sequentially, this is called what?
linear probing
What does primary clustering cause?
long probe searches and there a decrease in overall efficiency in the hashing process.
The process of enlarging a hash table and computing new hash indices for its contents is called
re-hashing
What must a sorted linear array-based implementation of the ADT dictionary do during an addition and when removing an entry?
shift the data
The header file for a class of dictionary entries, called Entry, overloaded what two operators?
the equality operator == and the greater than operator >
Which of the following dictionary operations has efficiency O(n) no matter what implementation if the ADT dictionary is chosen?
traversal
The ADT dictionary is appropriate for problems that must manage data by
value
When does use of the binary search tree implementation of the ADT dictionary become less efficient?
when the dictionary approaches a linear shape, comparable to a linear link-based implementation
When using linear probing, what must be done when removing a dictionary item so that later hashing and linear probing still work correctly?
when the item is removed, specify the status of the table location as removed (previously occupied, now available)
According to the text, for the ADT dictionary, in which of the following situations would a sorted array-based implementation be appropriate for frequent retrievals?
when you have duplicate search keys.