Выбор множителя для хеш-функции (строки) - PullRequest
14 голосов
/ 20 августа 2008

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

Ответы [ 3 ]

3 голосов
/ 20 августа 2008

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

2 голосов
/ 20 августа 2008

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

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

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

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

1 голос
/ 20 августа 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...