Programma di Algoritmi E Strutture Dati:

Il corso riguarda l'analisi e la progettazione di algoritmi. L'enfasi è sugli algoritmi efficienti. Saranno presentati i principali strumenti teorici utili per l'analisi e le principali tecniche di progettazione algoritmica (tecnica greedy, divide-et-impera, programmazione dinamica). Il corso è diviso in due parti. La prima parte copre: notazione asintotica, diversi metodi per stimare la complessità computazionale di algoritmi ricorsivi, il problema dell'ordinamento, strutture dati efficienti per implementare dizionari e code con priorità, e algoritmi efficienti per visitare grafi.
La seconda parte riguarda le principali tecniche di progettazione algoritmica (tecnica greedy, divide-et-impera, programmazione dinamica). Saranno presentati algoritmi per risolvere problemi di scheduling, calcolare cammini minimi (in grafi pesati), trovare un minimo albero di copertura, e calcolare la distanza di edit fra due parole. Questa parte fornisce anche un'introduzione alla teoria dell'NP-completezza vista da un punto di vista algoritmico.

Fonte: GOMP