Question

Avez-vous des conseils/règles sur la sélection d'un multiplicateur à utiliser dans une fonction de hachage (multiplicative).La fonction calcule la valeur de hachage d'une chaîne.

Était-ce utile?

La solution

Vous souhaitez utiliser quelque chose qui est relativement premier par rapport à la taille de votre ensemble.De cette façon, lorsque vous effectuez une boucle, vous ne vous retrouverez pas sur les mêmes numéros que vous venez d'essayer.

Autres conseils

J'ai récemment eu une discussion intéressante avec un collègue sur la fonction de hachage.Nos conclusions étaient les suivantes :

Si vous avez vraiment besoin d'écrire une bonne fonction de hachage qui minimise davantage les collisions que les implémentations par défaut disponibles dans les langages standard, vous avez besoin d'un diplôme avancé en mathématiques.

Si vous écrivez des applications dans lesquelles une fonction de hachage personnalisée améliorera sensiblement les performances de votre application, vous êtes Google et vous disposez de nombreux docteurs en mathématiques pour faire le travail.

Désolé de ne pas répondre directement à votre question, mais l'essentiel est qu'il n'est vraiment pas nécessaire d'écrire votre propre fonction de hachage pour String.Avec quelle langue travaillez-vous ?J'imagine qu'il existe un moyen simple de calculer un code de hachage "assez bon".

Historiquement, 33 semble être un choix populaire, et il a tendance à plutôt bien fonctionner.Mais personne ne sait pourquoi.Pour plus de détails, regarde ici

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top