performance - qué - Elegir un multiplicador para una función de hash(cadena)
huella hash (3)
Desea usar algo que sea relativamente primordial para el tamaño de su conjunto. De esta forma, cuando vuelves, no terminarás con los mismos números que acabas de probar.
¿Tiene algún consejo / reglas sobre cómo seleccionar un multiplicador para usar en una función hash (multiplicativa)? La función es calcular el valor hash de una cadena.
Históricamente 33 parece una opción popular, y tiende a funcionar bastante bien. Sin embargo, nadie sabe por qué. Para más detalles, mira aquí
Tuve una discusión interesante con un compañero de trabajo sobre la función hash recientemente. 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 idiomas estándar, necesita un título avanzado en matemáticas.
Si está escribiendo aplicaciones donde una función de hash personalizada mejorará notablemente el rendimiento de su aplicación, usted es Google y tiene muchos doctores en matemáticas para hacer el trabajo.
Lamento no contestar 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 forma fácil de calcular un código hash "suficientemente bueno".