Salve,

non so se questo è la sezione giusta quindi mi scuso in anticipo se ho sbagliato sezione.

Devo svolgere questi due esercizi:

1) Spiegare perche la coppia (h;A) e o non e una tabella hash sapendo che: 1) A e unbucket array di 10 elementi; h(x) = x (mod 10); 2) il dominio della funzione hash e
rappresentato da tutti i numeri interi compresi tra 0 e 100.
Indicare anche il fattore di carico della tabella hash quando il numero di entry e 8 e
quale tecnica di risoluzione delle collisioni dovrebbe essere usata in questo scenario.

2) Spiegare perche la coppia (h;A) e o non e una tabella hash sapendo che A e un
bucket array di 11 elementi; h(x) = 0; il dominio della funzione hash e rappresentato
da tutti i numeri interi compresi tra 0 e 100.

Domanda:
Una tabella hash è valida se la funzione hash compre tutte le celle della tabella ?
Mi spiego meglio, nel primo esercizio la funzione hash è

h(x) = x(mod 10)

per i valori h(0), h(10), h(20), h(30), 4(40) ecc corrisponde alla prima cella dell'array A (indice 0).
quindi per i valori h(1), h(11), h(21), h(31), h(41) ecc corrisponde alla prima seconda cella dell'array A in quanto da sempre come risultato 1 (indice 1)
Quindi se la funzione hash "copre" tutte le celle può dare luogo a una tabella hash ? E' questo il ragionamento ?
Il fattore di carico è il numero di collisioni che può generare una chiave ?

Nel secondo esercizio non è una tabella hash perché qualunque intero (del dominio) scelgo mi da come risultato sempre 0 e siccome le altre 9 celle (indici 1, 2, ..., 9) non sono utilizzate allora non forma una tabella hash ? Giusto ?


Grazie.