Me gustaría construir una tabla hash que busque claves en secuencias (cadenas) de bytes que van de 1 a 15 bytes.Construyendo una función hash/tabla hash
Me gustaría almacenar un valor entero, así que me imagino que una matriz para hash sería suficiente. Tengo dificultades para conceptualizar cómo construir una función hash de manera que dado que la clave daría un índice en la matriz.
Cualquier asistencia sería muy apreciada.
El número máximo de entradas en el hash es: 4.081 * 15 + 4,081 * 14 + ... 4081 = 4081 ((15 * (16))/2) = 489720.
Así, por ejemplo:
int table[489720];
int lookup(unsigned char *key)
{
int index = hash(key);
return table[index];
}
¿Cuáles son algunas buenas opciones para una función hash, o cómo hago para construir uno?
Gracias.
Si dos teclas se asignan al mismo índice, tiene una colisión, que no se maneja correctamente en su ejemplo. ¿Mantuvo su ejemplo así de simple para ilustrar su hashing, o realmente necesita una explicación adicional acerca de las tablas hash también? (hashing abierto, hash cerrado, ...) – Patrick