Hash table: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica
→‎Funzionamento e implementazione: il load factor veniva definito in modo sbagliato
Riga 21:
Il caso in cui la funzione hash applicata a due chiavi diverse genera un medesimo indirizzo viene chiamato '''collisione''' e può essere gestito in vari modi. La scelta di una buona funzione di hash è indispensabile per ridurre al minimo le collisioni e garantire prestazioni sempre ottimali. Il risultato migliore si ha con funzioni pseudo-casuali che distribuiscono i dati in input in modo uniforme.
 
Molto spesso però, una buona funzione di hash può non bastare: infatti le prestazioni di una ''hash table'' sono fortemente legate anche al cosiddetto fattore di carico (''load factor'') calcolato come Celle<math>cardinalita\ libere/Elementiinsieme\ presentidi\ chiavi\ da\ inserire \over dimensione\ massima\ della\ struttura</math> e che dice quanta probabilità ha un nuovo elemento di collidere con uno già presente nella tabella. Questa probabilità, in realtà, è più alta di quanto si possa pensare, come dimostra il [[paradosso del compleanno]]. È bene dunque mantenere il load factor il più basso possibile (di solito un valore di 0.75 è quello ottimale) per ridurre al minimo il numero di collisioni. Ciò può essere fatto, ad esempio, ridimensionando l'array ogni volta che si supera il ''load factor'' desiderato.
 
=== Gestione delle collisioni ===