Je voudrais construire une table de hachage qui recherche les clés dans des séquences (chaînes) d'octets allant de 1 à 15 octets.Construction d'une table de hachage/fonction de hachage
Je voudrais stocker une valeur entière, donc j'imagine qu'un tableau pour le hachage suffirait. J'ai de la difficulté à conceptualiser comment construire une fonction de hachage de telle sorte que, étant donné que la clé donne un index dans le tableau.
Toute assistance serait très appréciée.
Le nombre maximum d'entrées dans le hachage est: 4081 * 15 + 4081 * 14 + ... = 4081 4081 ((15 * (16))/2) = 489720.
Ainsi, par exemple:
int table[489720];
int lookup(unsigned char *key)
{
int index = hash(key);
return table[index];
}
Quels sont les bons choix pour une fonction de hachage, ou comment pourrais-je en construire une?
Merci.
Si deux clés correspondent au même index, vous avez une collision qui n'est pas correctement gérée dans votre exemple. Avez-vous gardé votre exemple simplement pour illustrer votre hachage, ou avez-vous vraiment besoin d'une explication supplémentaire sur les tables de hachage? (hachage ouvert, hachage fermé, ...) – Patrick