Выбор множителя для хэш-функции (строки)

Есть ли у вас какие-либо советы / правила по выбору множителя для использования в (мультипликативной) хэш-функции. Функция вычисляет хеш-значение строки.

19.08.2008 20:23:25
На следующей странице есть несколько реализаций хэш-функций общего назначения, которые эффективны и демонстрируют минимальные коллизии: partow.net/programming/hashfunctions/index.html
Matthieu N. 31.10.2010 23:11:12
3 ОТВЕТА
РЕШЕНИЕ

Вы хотите использовать что-то относительно простое по размеру вашего набора. Таким образом, когда вы зацикливаетесь, вы не окажетесь на тех же цифрах, что только что попробовали.

3
19.08.2008 20:36:07

Исторически сложилось, что 33 кажется популярным выбором, и он работает довольно хорошо. Хотя никто не знает почему. Для более подробной информации, смотрите здесь

1
23.01.2013 04:55:14

Недавно у меня была интересная дискуссия с коллегой по хеш-функции. Наши выводы были следующими:

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

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

Извините, что не отвечаю прямо на ваш вопрос, но суть в том, что на самом деле нет необходимости писать собственную хеш-функцию для String. На каком языке вы работаете? Я предполагаю, что есть простой способ вычислить «достаточно хороший» хеш-код.

2
19.08.2008 20:37:40