1. Cos'è una Tabella Hash?
Una Tabella Hash (o dizionario) è una struttura dati che implementa un tipo di dato astratto associativo, in grado di mappare delle chiavi a dei valori. L'elemento chiave viene elaborato da una funzione di hash ($h(key)$) che restituisce un indice numerico intero, corrispondente alla posizione all'interno di un vettore (la tabella) in cui memorizzare il valore associato.
Grazie a questo meccanismo, le operazioni di inserimento, ricerca e cancellazione vantano una complessità temporale nel caso medio pari a $\mathcal{O}(1)$.
2. Funzione di Hash e Gestione delle Collisioni
Una buona funzione di hash deve essere deterministica, veloce da calcolare e capace di distribuire le chiavi in modo uniforme per ridurre al minimo le collisioni (situazioni in cui due chiavi differenti generano lo stesso indice hash). Poiché il numero di chiavi possibili supera quasi sempre la dimensione della tabella, è fondamentale adottare strategie di risoluzione:
- Concatenamento (Chaining): Ogni cella della tabella punta a una lista collegata (o vettore dinamico) che raccoglie tutti gli elementi che collidono sullo stesso indice.
- Indirizzamento Aperto (Open Addressing): In caso di collisione, si cerca una cella alternativa libera all'interno della stessa tabella utilizzando tecniche di scansione (es. esplorazione lineare o quadratica).
3. Simulatore Interattivo: Calcolo Indice Hash e Fattore di Carico
Verifica il comportamento del calcolo di hash e l'impatto del fattore di carico ($\alpha = \frac{N}{M}$) sulla stabilità della tabella.