Pregunta

¿Tiene algún consejo/regla para seleccionar un multiplicador para usar en una función hash (multiplicativa)?La función calcula el valor hash de una cadena.

¿Fue útil?

Solución

Desea utilizar algo que sea relativamente adecuado para el tamaño de su conjunto.De esa manera, cuando hagas el bucle, no terminarás con los mismos números que acabas de probar.

Otros consejos

Recientemente tuve una discusión interesante con un compañero de trabajo sobre la función hash.Nuestras conclusiones fueron las siguientes:

Si realmente necesita escribir una buena función hash que minimice las colisiones más que las implementaciones predeterminadas disponibles en los lenguajes estándar, necesita un título avanzado en matemáticas.

Si está escribiendo aplicaciones en las que una función hash personalizada mejorará notablemente el rendimiento de su aplicación, es Google y tiene muchos doctores en matemáticas para hacer el trabajo.

Lamento no responder directamente a su pregunta, pero la conclusión es que realmente no es necesario escribir su propia función hash para String.¿Con qué idioma estás trabajando?Me imagino que hay una manera fácil de calcular un código hash "suficientemente bueno".

Históricamente, 33 parece una opción popular y tiende a funcionar bastante bien.Aunque nadie sabe por qué.Para más detalles, mira aquí

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top