Algoritmi e Strutture Dati A.A. 15/16 Informatica Università degli Studi di Bari Aldo Moro Nicola Di Mauro
Contatti Studio: stanza 513, V piano DIB Telefono: 080 544 2297 email: nicola.dimauro@di.uniba.it Sito: http://www.di.uniba.it/ ndm/courses/asd/ Ricevimento Vedi pagina web email (oggetto: [ASD]...) Telefono Avvisi Studio Homepage Bacheca Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 2
Lezioni Aula 1A Mar 9:30-12:30 Gio 8:30-11:30 Ven 9:30-11:30 Struttura Chiarimenti sulla lezione precedente Esposizione dei nuovi argomenti Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 3
Contenuti 1. Algoritmi e programmi Il ruolo delle tecniche di astrazione nella progettazione di programmi. La valutazione dell'algoritmo. 2. Metodologie di analisi: modelli di calcolo. Criteri di costo uniforme e logaritmico. La notazione asintotica. Delimitazioni inferiori e superiori. Metodi di analisi: caso peggiore, medio e migliore. Analisi di algoritmi ricorsivi: metodo dell'iterazione, metodo della sostituzione, il teorema fondamentale delle ricorrenze. 2. Algebre di dati Dati e rappresentazioni, requisiti delle astrazioni di dati, costrutti. Astrazioni di dati e dati primitivi. Algebre di dati: specifica sintattica e semantica. La realizzazione. 3. Strutture lineari di dati Liste: specifiche, realizzazioni attraverso rappresentazioni sequenziali e collegate. Pile: specifiche e realizzazioni alternative, pile e procedure ricorsive. Code: specifiche e realizzazioni alternative. Scelta, implementazione e verifica di algoritmi per la ricerca, l'ordinamento e la fusione delle strutture dati proposte. 5. Insiemi e Dizionari Insiemi: specifiche e confronto tra realizzazioni alternative. Dizionari: specifiche e confronto di realizzazioni alternative. Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 4
Contenuti /2 6. Strutture non lineari di dati: Alberi binari ed n-ari. Gli alberi radicati e alberi ordinati. Alberi binari: specifiche, definizione ricorsiva, la corrispondenza con le liste, rappresentazioni e realizzazioni. Alberi binari di ricerca, alberi bilanciati. Alberi n-ari: specifiche, definizione ricorsiva, rappresentazioni e realizzazioni alternative. Algoritmi su alberi binari ed n-ari. 7. Code con priorità Specifiche, rappresentazioni e realizzazioni alternative. 8. Strutture non lineari di dati: Grafi Specifiche e realizzazioni alternative. Algoritmi su grafi: visita di un grafo, cammini minimi e generazione del minimo albero di copertura. 9. Tecniche algoritmiche Classificazione dei problemi: problemi di ricerca, di decisione, di ottimizzazione. Lo spazio di ricerca: definizione e proprietà. Il paradigma selettivo e il paradigma generativo. Tecnica dell'enumerazione, del backtracking, tecnica greedy, tecnica divide-et-impera. Problemi e metodi solutivi: string matching (algoritmo di Knuth- Morris-Pratt), partizionamento di insiemi, problema delle N Regine, problema dello zaino, problema del commesso viaggiatore, problema della colorazione, ricerca del percorso più breve in un grafo (algoritmo di Dijkstra), minimo albero di copertura (algoritmo di Kruskal), selezione di attività. Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 5
Contenuti /3 Introduzione alla programmazione Object-Oriented Introduzione al C++ C & C++: un pò di storia; Ambiente di sviluppo; Semplici Programmi; Convenzioni peri file Headere Le Funzioni Le componenti di un programma in C++; Librerie; Definizioni e prototipi; Header; Le informazioni di memorizzazione; Le regole di visibilità; funzioni inline; Passaggio di parametri di funzione e riferimenti; Gli argomenti di default; Scope; L overloading delle funzioni generiche Puntatori Dichiarazione ed inizializzazione di puntatori; Operatori; chiamata per riferimento; Privilegi di accesso e passaggio dei parametri; I puntatori a funzione; Puntatori per la manipolazione di stringhe Le Classi e ADT Strutture e classi; Visibilità e accesso ai membri di una struttura; La separazione di interfaccia e implementazione; Le funzioni di accesso e di utilità; I costruttori; I distruttori; L assegnamento tra oggetti; Gli oggetti e le funzioni membro costanti; Composizione; Funzioni e Classi friend; Il puntatore this; Gli operatori new e delete; Astrazione dei dati e information hiding; Container; iterator e proxy Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 6
Contenuti /3 Introduzione alla programmazione Object-Oriented Introduzione al C++ C & C++: un pò di storia; Ambiente di sviluppo; Semplici Programmi; Convenzioni peri file Headere Le Funzioni Le componenti di un programma in C++; Librerie; Definizioni e prototipi; Header; Le informazioni di memorizzazione; Le regole di visibilità; funzioni inline; Passaggio di parametri di funzione e riferimenti; Gli argomenti di default; Scope; L overloading delle funzioni generiche Puntatori Dichiarazione ed inizializzazione di puntatori; Operatori; chiamata per riferimento; Privilegi di accesso e passaggio dei parametri; I puntatori a funzione; Puntatori per la manipolazione di stringhe Le Classi e ADT Strutture e classi; Visibilità e accesso ai membri di una struttura; La separazione di interfaccia e implementazione; Le funzioni di accesso e di utilità; I costruttori; I distruttori; L assegnamento tra oggetti; Gli oggetti e le funzioni membro costanti; Composizione; Funzioni e Classi friend; Il puntatore this; Gli operatori new e delete; Astrazione dei dati e information hiding; Container; iterator e proxy Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 7
Testi A. Bertossi e A. Montresor, Algoritmi e Strutture di Dati, CittàStudi, Seconda edizione C. Demetrescu, I. Finocchi e G.F. Italiano, Algoritmi e strutture dati. Mac Graw Hill T. Cormen, C. Leiserson, R. Rivest, C. Stein. Introduzione agli algoritmi e strutture dati. Terza edizione, McGraw-Hill B. Stroustrup, C++ - Linguaggio, libreria standard, principi di programmazione, Terza edizione, Addison-Wesley M. Cadoli, M. Lenzerini, P. Naggar e A. Schaerf, Fondamenti della progettazione dei programmi - Principi, tecniche e loro applicazioni in C++, Città Studi Edizioni R. Sedgewick, Algoritmi in C++, terza edizione, Addison- Wesley Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro 8