Lite_stream
@Lite_stream

Идеальное хеширование без чтения из памяти параметров h2(k)?

Узкое горлышко для хеш таблиц с идеальным хешиваронием (2-х уровневым) - количество чтений из памяти: contains(k): вычисление h1(k), чтение из памяти параметров для h2(k), вычисление h2(k), чтение из памяти k. Итого 2 обращение к памяти (если реализация со статически заданным размером бакета).
Есть ли подходы, как можно сократить количество чтений из памяти до 1-го ? Например, вычислив h1(k) = x, как-то по x вычислить (восстановить) (а не прочитать из памяти) параметры для h2 ?

P.S.: Вот примерный алгоритм построения моей реализации 2-х уровневой хэш таблицы с идеальным хешированием (если потребуется):
1. Зафиксируем размер бакета = (m/n)^2 * k, где k некоторый коэффициент
2. Используя хеш функцию для внешней таблицы h1, заполнить все бакеты, если какой-то бакет переполнился, повторить шаг 2 с другой h1
3. Для каждого бакета заполнять бакет, пока есть коллизии, меняя h2

P.S.: Вариант с хеш таблицей размером m = n^2 (где в среднем за 2 раза произойдёт её построение без коллизий) тоже не годится из-за больших затрат памяти
  • Вопрос задан
  • 100 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы