-
Domanda hashing
Ragazzi temo di non aver capito una sega di hashing, qualcuno mi può risolvere sto problema e soprattutto motivarmi la risposta ?
Si consideri una tabella di hash con 12 posizioni. Si vuole gestirla usando il double hashing h1(n)+i*h2(n) (con n numero da inserire e i numero del tentativo).
Dire quale tra queste coppie di funzioni si adotterebbe motivando la risposta
A) h1=n mod 14 e h2=n mod 7
B) h1=n mod 13 e h2=n mod 7
-
Strana domanda.. L'unica cosa che mi viene in mente è che essendo 14 multiplo di 7, nella divisione n/14 e n/7 si avrebbero dei numeri che possono aumentare la possibilità di collisioni... Le tabelle di hash le ho studiate e utilizzate parecchio ma generalmente le funzioni di hash non le fai tu perchè sono decisamente complicate da fare
-
Direi la seconda, hai molte meno collisioni.
Se n è un multiplo di 14 conseguentemente sarà multiplo di 7. Allora avremo che sia h1 che h2 ritorneranno, dato n, il valore 0, che ovviamente porta a un valore della funzione pari a 0 indipendentemente da i.
13 invece non essendo multiplo di 7 non presenta questo problema.
Nota che non mi ricordo una ceppa, le hast table che ho usato erano già implementate, ma mi pare logica la risposta.
-
Si era l'unica cosa che mi era venuta in mente visto che il problema era abbastanza insolito come tipologia..inoltre in double hashing ho sempre usato le 2 funzioni con lo stesso mod.
Grazie ragazzi :)
-
sottoscrivo! la funzione migliore da utilizzare è quella con meno collisioni
[Output: 4.82 Kb. compressed to 4.68 Kb. by saving 0.14 Kb. (2.84%)]