Content deleted Content added
BrokenSegue (talk | contribs) wikify- this looks like a copyvio but i can't find it |
MegaHasher (talk | contribs) brand new content; not fully wikified yet |
||
Line 1:
{{wikify}}
'''Linear Hashing''' is a dynamic hash table algorithm invented by Witold Litwin in
1980. Linear hashing allows for the expansion of the hash table one slot at a time.
The frequent single slot expansion can very effectively control the length of
the collision chain. The cost of hash table expansion is spread out across each
hash table insertion operation, as opposed to be incurred all at once. Therefore
linear hashing is well suited for interactive applications.
===Algorithm Details===
As usual, a hash function controls the address calculation of linear hashing.
In linear hashing, the address calculation is always bounded by a size that
is a power of two.
* address(level,key) = hash(key) mod (2 ** level)
The 'split' variable controls the read operation, and the expansion operation.
A read operation would use address(level,key) if address(level,key) is greater
than or equal to the 'split' variable. Otherwise, address(level+1,key) is used.
A linear hashing table expansion operation would consist of rehashing the
entries at slot ___location indicated by the 'split' variable to the target slot ___location
of address(level+1,key). The 'split' variable is incremented by 1 at the end of
the expansion operation. If the 'split' variable reaches a power of 2, then the 'level'
variable is incremented by 1, and the 'split' variable is reset to 0.
There are some flexibility in choosing how often the expansion operations are performed.
One obvious choice is one expansion operation per insertion request. Another choice
is to control the expansion with a programmer defined load factor.
===References===
W. Litwin, ''Linear hashing: A new tool for file and table addressing'', Proc. 6th Conference on Very Large Databases, pages 212–223, 1980.
|