Hash table: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica |
|||
Riga 25:
Nell'hashing statico si utilizza il concetto di bucket, che è l'insieme di pagine contenenti le etichette dei record di dati.
Se una pagina bucket primaria è piena, viene creata una pagina di overflow. Per cercare l'etichetta corrispondente alla chiave <math>k</math> (<math>M =</math> numero di bucket) si utilizza la seguente formula di [[hash]]
<math>h(k) = \mbox{bucket}</math> a cui appartiene l'etichetta.
La funzione di hash <math>h</math> agisce sul campo della chiave di ricerca del record <math>r</math> e deve distribuire i valori su <math>0,...,M-1</math> (<math>M</math> bucket). Le prestazioni della ricerca dipendono molto dalla funzione <math>h</math>.
Riga 41:
== Hashing lineare ==
L'hashing lineare, come accennato nel paragrafo precedente, permette di risolvere il problema delle lunghe catene di overflow senza l'utilizzo delle directory.
L'idea di base è quella di utilizzare una famiglia di funzioni hash <math>h_0,h_1,... h_n</math> dove
=== Esempio ===
Se <math>N=32</math> allora il numero minino di bit per la rappresentazione del numero è 5. Quindi <math>h_0 = h \bmod 2^0 N</math> cioè <math>h_0 = h \bmod 32</math>
La prossima funzione <math>h_2</math> avrà range <math>5+1</math> e potrà
==Bilanciamento spazio/tempo==
Riga 63:
==Analisi del costo di scansione==
Il numero di passi
{| border=1 cellspacing=1 align="center" cellpadding="1"
|