Progetto del corso di

Algoritmi e Strutture di dati e Laboratorio

docenti: M. Torelli, M. A. Alberti

Appello del 13/9/1996

Progetto HASH

E' richiesta la realizzazione di un programma per studiare le prestazioni delle tabelle hash.

L'utente dovrà poter scegliere (non necessariamente in quest'ordine):

Naturalmente, dovrà essere possibile (e agevole) anche eseguire singoli inserimenti, cancellazioni o ricerche di chiavi, e visualizzare (a richiesta, non "sempre e comunque"!) la situazione delle tabelle.

Il programma dovrà fornire in uscita informazioni sulle prestazioni (tempo necessario per eseguire le diverse operazioni, numero di confronti...), soprattutto per le operazioni di inserimento multiple (quelle effettuate a caso o a blocchi).

Per rendere interessanti i confronti di prestazioni, questi saranno relativi ai 4 metodi di gestione delle collisioni illustrati sul testo: le operazioni andranno effettuate simultaneamente su 4 tabelle, gestite rispettivamente coi metodi della concatenazione, della scansione lineare, quadratica, e del doppio hash. Le prestazioni relative andranno confrontate con quelle previste dalla teoria (teoremi 12.1, 12.2, 12.5 e 12.7 del libro).

Non si introducano limitazioni non legate a vincoli hardware o software ben giustificati: in particolare, si preveda la possibilità di gestire tabelle con qualche migliaio di chiavi (e quindi l'inserimento deve poter essere fatto in modo automatico). Data la necessità di realizzare operazioni analoghe in quattro diversi ambienti, si raccomanda di organizzare il programma in maniera modulare, non duplicando inutilmente codice e funzioni.