Log in

View Full Version : Domanda hashing



Shirogane
17th February 2011, 13:32
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

Patryz
17th February 2011, 18:46
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

Axet
17th February 2011, 19:03
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.

Shirogane
17th February 2011, 19:05
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 :)

Eltarion
17th February 2011, 19:16
sottoscrivo! la funzione migliore da utilizzare è quella con meno collisioni