Изменения

Перейти к: навигация, поиск

Перехеширование

155 байт убрано, 19:44, 5 мая 2012
При открытом хешировании
===При открытом хешировании===
При использовании [[Открытое и закрытое хеширование#Открытое хеширование|открытого хеширования]] , элементы с одинаковым результатом хеш-функции помещают в список. Так как операции <tex>Add(x)</tex>, <tex>Exists(x)</tex> и <tex>Delete(x)</tex> работают за <tex>O(l)</tex>, где <tex>l</tex> - длина списка, то с некоторого момента выгодно увеличить размер хеш-таблицы, чтобы поддерживать амортизационную стоимость операции <tex>O(1)</tex>.
<ref>[http://ru.wikipedia.org/wiki/Парадокс_дней_рождения Парадокс дней рождения {{---}} Википедия]</ref>
Рассмотрим следующий алгоритм перехеширования: когда в хеш-таблицу добавлено <tex dpi = "150">\frac{4n}{3}</tex> элементов, где <tex>n</tex> - размер хеш-таблицы, создадим новую хеш-таблицу размера <tex>2n</tex>, и последовательно переместим в нее все элементы первой таблицы. При этом, сменим хеш-функцию так, чтобы она выдавала значения <tex>[0..2n-1]</tex> (в функциях, использующих остаток от деления на длину таблицы, достаточно брать остаток от деления на <tex>2n</tex> вместо остатка от деления на <tex>n</tex>).
Анонимный участник

Навигация