L'obiettivo del corso è l'apprendimento e l'analisi dal punto di vista di correttezza ed efficienza di strutture dati e algoritmi classici nella formazione di un informatico, assumendo dal corso di Algoritmi e Strutture Dati le nozioni base relative a complessità e strutture dati elementari.
Apprendimento e analisi dal punto di vista di correttezza ed efficienza di strutture dati e algoritmi classici, assumendo da ASD nozioni base di algoritmi, complessità e strutture dati elementari. Gli argomenti includono tecniche avanzate di analisi e progettazione, algoritmi di ordinamento, strutture dati avanzate, algoritmi su grafi, teoria della NP-completezza.
Tradizionale.
Metodologie di analisi e progettazione di algoritmi: notazioni asintotiche e correttezza e complessità di algoritmi ricorsivi (approfondimenti da ASD), correttezza di algoritmi iterativi, analisi ammortizzata, divide-et-impera, programmazione dinamica e algoritmi greedy. Algoritmi di ordinamento: algoritmi elementari e mergesort (richiami da ASD), quicksort, heapsort, delimitazione inferiore problema dell'ordinamento per confronti, algoritmi di ordinamento non per confronti. Strutture dati avanzate: heap, strutture union-find. Grafi: definizioni, rappresentazioni, visite, ordinamento topologico, componenti fortemente connesse, cammini minimi (algoritmo di Djikstra), minimo albero ricoprente (algoritmi di Prim e Kruskal). Teoria della NP-completezza: classi di complessità, problemi NP-completi, algoritmi di approssimazione.
Note a cura del docente. Per approfondimenti: Algoritmi e strutture dati. Demetrescu, Finocchi, Italiano. McGraw Hill. Seconda edizione, 2008. Introduzione agli algoritmi e strutture dati. Cormen, Leiserson, Rivest, Stein. McGraw Hill. Terza edizione, 2009.
Ricevimento: Su appuntamento. Inoltre su Aulaweb è disponibile un forum per domande e risposte di interesse generale.
Ricevimento: Su appuntamento.
ELENA ZUCCA (Presidente)
DAVIDE ANCONA
GIORGIO DELZANNO
PAOLA MAGILLO
COMPLEMENTI DI ALGORITMI E STRUTTURE DATI
Prova scritta e orale.
La prova scritta verifica la capacità dello studente di mettere in pratica le nozioni viste a lezione. La prova orale verifica la comprensione dei concetti e la capacità di illustrarli in modo appropriato.