Статическое хеширование — это форма хеширования , при которой поиск выполняется в окончательном наборе словаря (все объекты в словаре являются окончательными и не изменяются).
Поскольку статическое хеширование требует, чтобы база данных , ее объекты и ссылки оставались неизменными, его применение ограничено. Базы данных, содержащие информацию, которая редко изменяется, также подходят, поскольку для этого потребуется полное перехеширование всей базы данных только в редких случаях. Примерами этого являются наборы слов и определения определенных языков, наборы значимых данных для персонала организации и т. д.
Идеальное хеширование — это модель хеширования, в которой любой набор элементов может храниться в хеш-таблице одинакового размера и может иметь поиск за постоянное время. Она была специально открыта и обсуждена Фредманом, Комлосом и Семереди (1984) и поэтому получила прозвище «FKS-хеширование». [2]
Хеширование FKS использует хеш-таблицу с двумя уровнями, в которой верхний уровень содержит сегменты, каждый из которых содержит свою собственную хеш-таблицу. Хеширование FKS требует, чтобы в случае возникновения коллизий они происходили только на верхнем уровне.
Верхний уровень содержит случайно созданную хэш-функцию, , которая соответствует ограничениям хэш-функции Картера и Вегмана из универсального хэширования . После этого верхний уровень будет содержать сегменты, помеченные . Следуя этому шаблону, все сегменты содержат хэш-таблицу размером и соответствующую хэш-функцию . Хэш-функция будет определена путем установки и случайного перебора функций до тех пор, пока не будет никаких коллизий. Это можно сделать за постоянное время.
Поскольку существуют пары элементов, вероятность коллизии которых равна , хеширование FKS может ожидать строго меньше коллизий. Исходя из этого факта и того, что каждый был выбран так, чтобы число коллизий было не более , размер каждой таблицы на нижнем уровне будет не больше .