Pergunta

Você tem algum conselho/regras sobre como selecionar um multiplicador para usar em uma função hash (multiplicativa).A função está calculando o valor hash de uma string.

Foi útil?

Solução

Você deseja usar algo que seja relativamente nobre para o tamanho do seu conjunto.Dessa forma, ao fazer um loop, você não terminará nos mesmos números que acabou de tentar.

Outras dicas

Recentemente, tive uma discussão interessante com um colega de trabalho sobre a função hash.Nossas conclusões foram as seguintes:

Se você realmente precisa escrever uma boa função hash que minimize as colisões mais do que as implementações padrão disponíveis nas linguagens padrão, você precisa de um diploma avançado em matemática.

Se você está escrevendo aplicativos nos quais uma função hash personalizada melhorará visivelmente o desempenho do seu aplicativo, você é o Google e tem muitos PhDs em matemática para fazer o trabalho.

Desculpe não responder diretamente à sua pergunta, mas o resultado final é que realmente não há necessidade de escrever sua própria função hash para String.Com qual idioma você está trabalhando?Imagino que exista uma maneira fácil de calcular um código hash "bom o suficiente".

Historicamente, 33 parece ser uma escolha popular e tende a funcionar muito bem.Ninguém sabe por quê.Para mais detalhes, olhe aqui

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top