A hashing algorithm by which a hash table can grow dynamically by constantly generating new hash functions from a family of functions. At any given time, keys are being hashed by one of two different functions, until there is a split, in which the older hash function is thrown out, and a new one is chosen from the function "family."

An example of a family of functions is the set

h[i](c) = c mod (2^i)N

...where "i" is the current "order" of the hash table. Every time there is a split, i is incremented.

Linear hashing solves two basic problems of hash tables: Static size, and expensive re-hasing. By constantly shuffling on the fly, it is a "load balanced" approach to creating a "growable" table. Furthermore, the order of the table increases logarithmically, so after the first few splits, they become very rare.

Log in or register to write something here or to contact authors.