Я провел небольшое исследование хэш-таблиц, и я продолжаю работать по правилу большого пальца: когда есть определенное количество записей (максимальное или с коэффициентом загрузки, например, 75%), хэш-таблица должна быть расширена.
Практически всегда рекомендуется удвоить (или удвоить плюс 1, т.е. 2n + 1) размер хеш-таблицы. Тем не менее, я не смог найти вескую причину.
Зачем удваивать размер, а не, скажем, увеличивать его на 25% или увеличивать его до размера следующего простого числа или следующих k простых чисел (например, три)?
Я уже знаю, что часто бывает полезно выбрать начальный размер хеш-таблицы, который является простым числом, по крайней мере, если ваша хеш-функция использует модуль, такой как универсальное хеширование. И я знаю, почему обычно рекомендуется делать 2n + 1 вместо 2n (например, http://www.concentric.net/~Ttwang/tech/hashsize.htm)
Однако, как я уже сказал, я не видел никаких реальных объяснений, почему удвоение или удвоение плюс один на самом деле является хорошим выбором, а не каким-то другим методом выбора размера для новой хеш-таблицы.
(И да, я прочитал статью Википедии о хэш-таблицах:) http://en.wikipedia.org/wiki/Hash_table