2008-08-19 13 views
12

¿Tiene algún consejo o regla sobre cómo seleccionar un multiplicador para usarlo en una función hash (multiplicativa). La función es calcular el valor hash de una cadena.Elección de un multiplicador para una función de hash (cadena)

+24

La siguiente página tiene varias implementaciones de funciones hash de propósito general que son eficientes y exhiben colisiones mínimas: http://partow.net/programming/hashfunctions/index.html –

Respuesta

3

Desea utilizar 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.

1

Históricamente 33 parece ser una opción popular, y tiende a funcionar bastante bien. Sin embargo, nadie sabe por qué. Para obtener más detalles, look here

2

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 lenguajes estándar, necesita un título avanzado en matemáticas.

Si está escribiendo aplicaciones en las que 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.

Lamentamos no haber respondido directamente a su pregunta, pero la conclusión es que realmente no hay necesidad de 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".

Cuestiones relacionadas