Hash Table: Должен ли я увеличить количество элементов на столкновения?

StackOverflow https://stackoverflow.com/questions/2662548

Вопрос

Прямо сейчас мои хэш-таблицы считают количество каждого элемента, вставленного в хэш-таблицу. Я использую этот счет, с общей площадью хеш-таблицы, чтобы рассчитать коэффициент нагрузки и когда он достигает 70%, я его перефразирую.

Я думал, что, возможно, я должен подсчитать только вставленные элементы с заполнением пустого слота вместо всех из них. Причина метод столкновения, который я использую, является отдельный цепочка. Факторная нагрузка продолжает расти, но если могут быть несколько столкновений, оставляющих множество пустых слотов на хэш-таблице.

Вы, вероятно, думаете, что если у меня есть такие многие столкновения, может быть, я не использую лучший метод хеширования. Но это не точка, я использую один из знаковых алгоритмов хеширования, я протестировал 3 из них в моих данных образца и выбрал тот, кто произвел менее столкновения.

Мой вопрос все еще остается. Должен ли я продолжать подсчитать каждый элемент вставлен или только те, которые заполняют пустой слот в хэш-таблице?

Это было полезно?

Решение

Перефразирование предназначено для снижения вероятности столкновений, поэтому систематически игнорируя столкновения, чтобы решить, когда перефразировать, кажется самообеспечением.

Лучше всего может быть, если вы сохраняете с каждой записью оригинальное полное значение HASH (вместо этого столкновение определяется HAHH Modulo ваш текущий размер) и подсчитал только столкновения, которые связаны с операцией по модулю - неявно подтверждают, что если столкновение Из-за одинаковых ценностей в полных хэшах для разных предметов нет ничего перерегистрации, не может сделать, чтобы помочь (если по «перенаправлению» вы также подразумевают переключение на другую хэш-функцию, но это не похоже на то, что вы имеете в виду здесь ;-).

Сохранение полных хеш-значений также означает дешевле RehaShing, поскольку вам не нужно снова запускать функцию хэша (насколько релевантно зависит от того, насколько дорогая ваша функция HASH должна вычислить, конечно).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top