Vorrei costruire una tabella hash che cerchi le chiavi in sequenze (stringhe) di byte che vanno da 1 a 15 byte.Creazione di una tabella hash/funzione hash
Vorrei memorizzare un valore intero, quindi immagino che un array per hashing sia sufficiente. Ho difficoltà a concettualizzare come costruire una funzione di hash tale che data la chiave darebbe un indice nell'array.
Qualsiasi assistenza sarebbe molto apprezzata.
Il numero massimo di voci nella hash è: 4081 * 15 + 4081 * 14 + ... 4081 = 4081 ((15 * (16))/2) = 489720.
Così, per esempio:
int table[489720];
int lookup(unsigned char *key)
{
int index = hash(key);
return table[index];
}
Quali sono alcune buone scelte per una funzione di hash, o come dovrei fare per costruirne una?
Grazie.
Se due chiavi si associano allo stesso indice, si verifica una collisione, che non viene gestita correttamente nell'esempio. Hai mantenuto il tuo esempio semplicemente per illustrare il tuo hashing, o hai davvero bisogno di una spiegazione aggiuntiva anche sui tavoli di hashing? (open hashing, hashing chiuso, ...) – Patrick