Я думаю, что лучший способ ответить на ваш вопрос - абстрагироваться от подробностей формулы, которую вы используете для вычисления хеш-кодов, и больше задуматься о том, какое влияние оказывает изменение размера хеша.Таблица.
Параметр m, который вы планируете настроить, регулирует количество слотов в вашей хэш-таблице.Давайте представим, что вы планируете сбросить n элементов в вашу хэш-таблицу.Отношение n / m называется коэффициентом загрузки хеш-таблицы и обычно обозначается буквой α.
Если у вас есть таблица с высоким коэффициентом загрузки (большой α, маленькийм), тогда у вас будет меньше потерянного места в таблице.Тем не менее, вы также увеличите стоимость поиска, так как при большом количестве объектов, распределенных в небольшом пространстве, вы, вероятно, получите кучу столкновений, для решения которых потребуется время.
С другой стороныС другой стороны, если у вас есть таблица с низким коэффициентом загрузки (маленький α, большой m), то вы уменьшите вероятность столкновений и, следовательно, повысите стоимость выполнения поиска.Однако, если α становится слишком маленьким - скажем, у вас на самом деле хранится 1000 слотов на элемент - тогда у вас будет много потерянного пространства.
Частью инженерного аспекта создания хорошей хеш-таблицы является выяснениекак провести баланс между этими двумя вариантами.Лучший способ узнать, что работает, а что нет, - это извлечь профилировщик и измерить, как изменения в α изменяют ваше время выполнения.