Algoritmi e Strutture Dati Docente: Michele Bugliesi Semestre: 1o Crediti: 6 Settore scientifico-disciplinare: INF/01 (Informatica) Ore di lezioni/esercitazioni: 40 Ore per attività integrative: 8 Modalità di esame: Prova scritta Esame coordinato con: Esami propedeutici: Programmazione, Esercitazioni di Programmazione, Strutture Discrete Obiettivi: Acquisire gli elementi di base per la progettazione e l'analisi degli algoritmi. Viene evidenziato il criterio dell'efficienza nella progettazione degli algoritmi e sottolineata la relazione tra la rappresentazione dei dati e gli algoritmi per la loro elaborazione. Alla fine del corso lo studente deve conoscere le principali strutture dati elementari e saper operare con esse. Programma: Introduzione all'analisi degli algoritmi (4 ore). Algoritmi. Ordine di complessità di un algoritmo. Strutture di dati elementari (8 ore). Specifica e realizzazione di strutture dati. Liste. Pile e Code. Alberi. Insiemi. Ordinamento e selezione (8 ore). Mergesort. Quicksort. Ordinamento in tempo lineare. Mediano e selezione. Dizionari (4 ore). Realizzazione con vettore ordinato. Realizzazione con tabelle hash. La struttura dati heap (4 ore). Costruzione di uno heap. Heapsort. Code di priorita'. Alberi di ricerca (6 ore). Alberi binari di ricerca. Alberi Bilanciati. Algoritmi elementari sui grafi (6 ore). Rappresentazione (liste/matrici di adiacenza). Visite. Libri di testo: Cormen T. H., Leiserson C. E., Rivest R. L. ``Introduction to Algorithms''. The Mit Press, 1990.