ALGORITMI E COMPLESSITA'

Похожие документы
ALGORITMI E LABORATORIO

ECONOMIA E GESTIONE DELLE IMPRESE BANCARIE M - Z

INGEGNERIA DEL SOFTWARE

CONTABILITÀ E BILANCIO

MANAGEMENT DELLE RISORSE UMANE

COMPORTAMENTO ORGANIZZATIVO A - L

Algoritmi e Strutture Dati

PROGRAMMAZIONE E CONTROLLO

INTERNATIONAL BUSINESS M - Z

NETWORK E SUPERNETWORK

GESTIONE DELLE AZIENDE CULTURALI

PETROGRAFIA PER I BENI CULTURALI

SOCIOLOGIA DEI NUOVI MEDIA

Algoritmi e Strutture dati a.a. 2012/2013

Algoritmi e Strutture Dati

CALCOLATORI ELETTRONICI

Algoritmi e Strutture dati a.a. 2013/2014

PEDAGOGIA GENERALE E SOCIALE

ELEMENTI DI ANALISI MATEMATICA 1 A - L

PROGRAMMAZIONE E CONTROLLO

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati

CALCOLATORI ELETTRONICI

MATEMATICA E STATISTICA

DIRITTO DEL LAVORO DELLE PUBBLICHE AMMINISTRAZIONI

MARKETING TERRITORIALE

STRATEGIE RIPRODUTTIVE NELLE PIANTE E NEGLI ANIMALI

ANALISI MATEMATICA II M - Z

MATERIALI LAPIDEI NATURALI ED ARTIFICIALI CON LABORATORIO

algoritmi e strutture di dati

SOCIOLOGIA ECONOMICA E DEL LAVORO

SCIENZA DELLE COSTRUZIONI A - L

Appunti del corso di Informatica 1 (IN110 Fondamenti) 7 Grafi e alberi: introduzione

POLITICA ECONOMICA A - L

POLITICA ECONOMICA A - L

Informatica e Comunicazione Digitale Crediti formativi 9. No, ma la frequenza è fortemente consigliata Lingua di erogazione

LINGUA E TRADUZIONE INGLESE 2

ZOOTECNICA SPECIALE OBIETTIVI FORMATIVI PREREQUISITI RICHIESTI

DIRITTO DEL LAVORO DELLE PUBBLICHE AMMINISTRAZIONI

CHIMICA INORGANICA II E LABORATORIO

FONDAMENTI DI INFORMATICA - canale 1

Algoritmi e Strutture Dati

Транскрипт:

DIPARTIMENTO DI MATEMATICA E INFORMATICA Corso di laurea magistrale in Informatica Anno accademico 2016/2017-1 anno ALGORITMI E COMPLESSITA' INF/01-9 CFU - 1 semestre Docente titolare dell'insegnamento DOMENICO CANTONE Email: cantone@dmi.unict.it Edificio / Indirizzo: Dipartimento di Matematica e Informatica, Viale Andrea Doria 6, 95125 Catania Telefono: 095-7383052 Orario ricevimento: http://www.dmi.unict.it/~cantone/orarioricevimento.html OBIETTIVI FORMATIVI Conoscenza e capacità di comprensione (knowledge and understanding): saranno acquisite le conoscenze relative a diverse strutture dati avanzate e alle procedure per la loro gestione, nonché le conoscenze relative ai principali algoritmi fondamentali. Capacità di applicare conoscenza e comprensione (applying knowledge and understanding): saranno acquisite le capacità di risolvere problemi di media difficoltà che richiedono la progettazione e l'analisi di soluzioni algoritmiche avanzate. Autonomia di giudizio (making judgements): lo studente sarà in grado di valutare la qualità di una soluzione algoritmica in termini di efficienza e possibilità di riutilizzo. Abilità comunicative (communication skills): saranno acquisite le necessarie abilità comunicative ed un'adeguata appropriatezza espressiva nella comunicazione di problematiche inerenti gli studi algoritmici, anche ad interlocutori non esperti. Capacità di apprendimento (learning skills): lo studente avrà la capacita di adattare le conoscenze acquisite anche a nuovi contesti, nonché di aggiornarsi attraverso la consultazione delle fonti specialistiche del settore algoritmico. PREREQUISITI RICHIESTI Strutture dati elementari e loro manipolazioni (liste, code, pile, alberi) Elementi di matematica discreta, di programmazione I e II, e di analisi matematica. Algoritmi elementari e metodologie di programmazione dinamica e greedy. FREQUENZA LEZIONI Per una piena comprensione degli argomenti del corso e delle tecniche illustrate, la frequenza delle

lezioni è fortemente consigliata. CONTENUTI DEL CORSO Descrizione generale del corso Vengono presentate e analizzate, anche mediante la tecnica dell'analisi ammortizzata, diverse strutture dati avanzate (quali B-tree, splay tree, heap binomiali e heap di Fibonacci) e le procedure per la loro gestione. Inoltre vengono studiati, progettati e analizzati algoritmi su grafi per la soluzione efficiente di svariati problemi di ottimizzazione. PROGRAMMA PARTICOLAREGGIATO DEL CORSO Analisi ammortizzata Stack con multipop e contatore binario Metodi dell'aggregazione, degli accantonamenti e del potenziale Tabelle dinamiche con inserimenti e cancellazioni Strutture dati avanzate B-alberi: applicazioni, altezza, ricerca, inserimenti e cancellazioni Splay trees: ricerca, inserimenti e cancellazioni, analisi ammortizzata di m operazioni di cui n sono inserimenti; top-down splay trees Strutture dati per insiemi disgiunti: unione per ranghi, compressione dei cammini, algoritmo Union-Find, notazione di Knuth, funzione di Ackermann e sua inversa Heap binomiali: alberi binomiali, operazioni di inserimento, minimo ed estrazione del minimo, decremento di una chiave, cancellazione di una chiave, unione di due heap binomiali Heap di Fibonacci: alberi binomiali non ordinati, operazioni di inserimento, minimo ed estrazione del minimo, decremento di una chiave, cancellazione di una chiave, unione di due heap di Fibonacci, analisi ammortizzata Cammini minimi da una singola sorgente in grafi orientati Grafo dei cammini minimi, albero dei cammini minimi, algoritmo generico per i camminimi minimi da singola sorgente, algoritmo di Bellman-Ford, algoritmo di Dijkstra, algoritmo lineare su grafi aciclici Cammini minimi tra tutte le coppie di nodi in grafi orientati Algoritmo di Floyd-Warshall, chiusura transitiva, algoritmo di Johnson su grafi sparsi Alberi ricoprenti minimi Passi rossi e passi blu, invariante del colore, algoritmi di Boruvka, di Kruskal e di Prim, clustering di massima separazione Reti di flusso e applicazioni Flusso reale e flusso netto in una rete di flusso, proprietà del flusso netto, reti con sorgenti e pozzi multipli, notazione di sommatoria implicita, il metodo di Ford-Fulkerson, capacità e rete residue, cammini aumentanti, tagli in reti di flusso, teorema del massimo flusso/minimo taglio, analisi della procedura di Ford-Fulkerson, abbinamento massimo in grafi bipartiti, algoritmo di Edmonds-Karp e sua analisi di complessità, edge-connectivity.

TESTI DI RIFERIMENTO Il libro di testo consigliato è: T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein. Introduction to algorithms (Third Edition), The MIT Press, Cambridge - Massachusetts, 2009 disponibile anche nella traduzione italiana 1) T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein. Introduzione agli algoritmi e strutture dati 3/ed, McGraw-Hill Italia, 2010. Altra fonte: 2) M.A. Weiss. Data structures and algorithmic analysis in C (Second Edition), Addison-Wesley, 1996. PROGRAMMAZIONE DEL CORSO * Argomenti Riferimenti testi 1 * Analisi ammortizzata. Stack con multipop e contatore binario. Metodi dell'aggregazione, degli accantonamenti e del potenziale. Tabelle dinamiche con inserimenti e cancellazioni. Cap. 17.1-17.4 di 1) e 2 * B-alberi: applicazioni, altezza, ricerca, inserimenti e cancellazioni Cap. 18.1-18.4 di 1) e 3 * Splay trees: ricerca, inserimenti e cancellazioni, analisi ammortizzata di m operazioni di cui n sono inserimenti; topdown splay trees 4 * Strutture dati per insiemi disgiunti: unione per ranghi, compressione dei cammini, algoritmo Union-Find, notazione di Knuth, funzione di Ackermann e sua inversa 5 * Heap binomiali: alberi binomiali, operazioni di inserimento, minimo ed estrazione del minimo, decremento di una chiave, cancellazione di una chiave, unione di due heap binomiali 6 * Heap di Fibonacci: alberi binomiali non ordinati, operazioni di inserimento, minimo ed estrazione del minimo, decremento di una chiave, cancellazione di una chiave, unione di due heap di Fibonacci, analisi ammortizzata 7 * Cammini minimi da una singola sorgente. Grafo dei cammini minimi, albero dei cammini minimi, algoritmo generico per i camminimi minimi da singola sorgente, algoritmo di Bellman- Ford, algoritmo di Dijkstra, algoritmo lineare su grafi aciclici. Cap. 11.5 di 2) e materiale didattico Cap. 21.1-21.3 di 1) e Cap. 19.1-19.4 di 1) e e Cap. 24 di 1)

8 * Cammini minimi tra tutte le coppie di nodi in grafi orientati. Algoritmo di Floyd-Warshall, chiusura transitiva, algoritmo di Johnson su grafi sparsi. 9 * Alberi ricoprenti minimi. Passi rossi e passi blu, invariante del colore, algoritmi di Boruvka, di Kruskal e di Prim, clustering di massima separazione. e Cap. 25 di 1) e Cap. 23 di 1) 10 * Reti di flusso e applicazioni Cap. 26.1-26.3 e materiale * Conoscenze minime irrinunciabili per il superamento dell'esame. didattico N.B. La conoscenza degli argomenti contrassegnati con l'asterisco è condizione necessaria ma non sufficiente per il superamento dell'esame. Rispondere in maniera sufficiente o anche più che sufficiente alle domande su tali argomenti non assicura, pertanto, il superamento dell'esame. MATERIALE DIDATTICO I lucidi delle lezioni e delle esercitazioni sono messi a disposizione degli studenti sul sito http://www.dmi.unict.it/~cantone/homealgoritmicomplessita-17/italgoritmicomplessita.html VERIFICA DELL'APPRENDIMENTO MODALITÀ DI VERIFICA DELL'APPRENDIMENTO L esame finale è essenzialmente scritto. La verbalizzazione sarà preceduta da una breve discussione sul compito scritto e, nei casi dubbi, da una breve verifica orale. DATE DEGLI APPELLI I SESSIONE 06/02/2017 23/02/2017 II SESSIONE 14/06/2017 07/07/2017 III SESSIONE 19/09/2017 6/10/2017 SESSIONE STRAORDINARIA 08/05/2017 7/12/2017 Tutti gli esami avranno inizio alle ore 9:00.

PROVE IN ITINERE L esame finale può essere completato mediante due prove in itinere. La prima prova in itinere verterà sulla prima parte del corso e sarà offerta durante la seconda parte del periodo didattico in data concordata con gli studenti. La seconda prova in itinere verterà sulla seconda parte del corso e sarà offerta in occasione del primo appello di esami. Le prove in itinere consistono in domande aperte che possono riguardare sia argomenti di natura teorica che soluzioni di problemi analoghi a quelli trattati nel corso. PROVE DI FINE CORSO La prova scritta finale è costituita, di norma, da cinque domande aperte che possono riguardare sia argomenti di natura teorica che soluzioni di problemi analoghi a quelli trattati nel corso. ESEMPI DI DOMANDE E/O ESERCIZI FREQUENTI http://www.dmi.unict.it/~cantone/esami/esami_algoritmiecomplessita/aec-sample-2016.pdf