Algoritmi e Strutture dati a.a. 2013/2014 Informazioni sul corso Dr Maria Federico
Università degli studi di Ferrara Maria Federico Informazioni docente E-mail docente: fdrmra@unife.it Ricevimento: Mercoledì 15:00-16:00 presso ufficio docenti a contratto (3° piano), Dipartimento di Matematica e Informatica, Campus scientifico tecnologico Blocco B via Saragat 1 Su appuntamento (inviare e-mail) Algoritmi e Strutture dati Informazioni sul corso Università degli studi di Ferrara Maria Federico
Università degli studi di Ferrara Maria Federico Informazioni lezioni Martedì, Mercoledì 16:30-18:30 Giovedì 14:30-17:30 (7 ore a settimana) Aula F6 1 Ottobre 2013 – 17 Dicembre 2014 (80 ore, 10 CFU per Informatica) 1 Ottobre 2013 – 14 Novembre 2014 (48 ore, 6 CFU per Matematica) Algoritmi e Strutture dati Informazioni sul corso Università degli studi di Ferrara Maria Federico
Perché un corso di algoritmi e strutture dati? “Prima dei calcolatori c’erano già gli algoritmi. Ma adesso che ci sono i calcolatori, ci sono più algoritmi e gli algoritmi sono il cuore del calcolo.” (Prefazione Introduzione agli algoritmi e strutture dati 3/ed, Cormen et al. 2010) Lo studio degli algoritmi costituisce la base dell’informatica perché prima che un computer esegua qualsiasi attività è necessario fornirgli un algoritmo che gli indichi esattamente cosa fare Algoritmi e Strutture dati Informazioni sul corso Università degli studi di Ferrara Maria Federico
Processo di sviluppo di un programma Specifica funzionale del problema Analisi del problema e definizione di un algoritmo risolutivo Descrizione con diagramma di flusso e/o pseudocodice Traduzione dell’algoritmo in programma in linguaggio di programmazione ad alto livello Compilazione Esecuzione e Verifica
Università degli studi di Ferrara Maria Federico Cosa studieremo Algoritmi = descrizione precisa di una sequenza di azioni che devono essere eseguite per giungere alla risoluzione di un problema Sintesi / disegno / progetto Analisi dell’efficienza Strutture dati = è fondamentale che i dati siano ben organizzati e strutturati in modo che l’algoritmo li possa elaborare efficientemente Algoritmi: ovunque si impieghi un calcolatore elettronico occorrono algoritmi corretti ed efficienti che ne utilizzino al massimo le possibilità Progettazione: Gli algoritmi vengono comunemente descritti tramite programmi, che si avvalgono di istruzioni e costrutti dei linguaggi di programmazione e che devono essere eseguiti da calcolatori elettronici. Le proprietà degli algoritmi sono però talmente fondamentali, generali e robuste da essere virtualmente indipendenti dalle caratteristiche di specifici linguaggi di programmazione o di particolari calcolatori elettronici. Useremo pseudocodice Analisi: uno stesso problema può essere risolto con diversi algoritmi, si devono quindi stabilire delle ipotesi di confronto Strutture dati: la nozione di algoritmo è indiscindibilmente legata a quella di dato. Infatti, per risolvere un problema computazionale, occorre organizzare ed eleborare dati. L’algoritmo può essere interprepato come un manipolatore di dati che, a fronte di dati d’ingresso che descrivono il problema da risolvere, produce altri dati di uscita come risultato del problema. Pertanto è fondamentale che i dati siano ben organizzati e strutturati in modo che l’algoritmo li possa elaborare efficientemente. Algoritmi e Strutture dati Informazioni sul corso Università degli studi di Ferrara Maria Federico
Università degli studi di Ferrara Maria Federico Materiale didattico Libro di testo Titolo: Introduzione agli algoritmi e strutture dati 3/ed Autori: Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein ISBN: 9788838665158 Pub Date: Giugno 2010 Pagine: 1030 Algoritmi e Strutture dati Informazioni sul corso Università degli studi di Ferrara Maria Federico
Università degli studi di Ferrara Maria Federico Materiale didattico Libro di riferimento Titolo: Strutture di dati e algoritmi. Progettazione, analisi e visualizzazione Autori: Pierluigi Crescenzi, Giorgio Gambosi, Roberto Grossi ISBN: 9788871922737 Pub Date: 2006 Pagine: 384 Algoritmi e Strutture dati Informazioni sul corso Università degli studi di Ferrara Maria Federico
Università degli studi di Ferrara Maria Federico Materiale didattico Slide e altro materiale presentato a lezione Reperibili sulla pagina del corso http://www.unife.it/scienze/informatica/insegnamenti/algoritmi-strutture-dati Sulla home page del docente http://algogroup.unimore.it/people/maria/algoritmi_2013-2014.html Algoritmi e Strutture dati Informazioni sul corso Università degli studi di Ferrara Maria Federico
Università degli studi di Ferrara Maria Federico Propedeuticità Istituzioni di matematica Programmazione e laboratorio Sono consigliati come propedeutici, anche se non costituiscono prerequisito formale Algoritmi e Strutture dati Informazioni sul corso Università degli studi di Ferrara Maria Federico
Università degli studi di Ferrara Maria Federico Programma del corso Introduzione al corso [1, 2] Definizione di problema, algoritmo, rappresentazione di algoritmi, sintesi e analisi di algoritmi, strutture dati Complessità computazionale [3, 4-(4.2, 4.6)] Analisi asintotica, calcolo complessità algoritmi iterativi, metodi di risoluzione delle relazioni di ricorrenza per algoritmi ricorsivi, classificazione problemi e NP-completezza (cenni) [34.1, 1 Crescenzi] Algoritmi e Strutture dati Informazioni sul corso Università degli studi di Ferrara Maria Federico
Università degli studi di Ferrara Maria Federico Programma del corso Strutture dati statiche [slide; 2.1 Crescenzi] Array, record Algoritmi di ordinamento su array Iterativi: selection sort, insertion sort, bubble sort [2 Cormen + 2.2 Crescenzi)] Ricorsivi: merge sort, quick sort [4, 7-(7.3); 2.5 Crescenzi] Tempo lineare: Counting sort, Radix sort, Bucket sort [8] Algoritmi di ricerca su array [2.4 Crescenzi] Ricerca lineare, ricerca binaria Algoritmi e Strutture dati Informazioni sul corso Università degli studi di Ferrara Maria Federico
Università degli studi di Ferrara Maria Federico Programma del corso Heap e code con priorità [6; 8.1 e 8.2 Crescenzi] Operazioni su heap, Heapsort Strutture dati dinamiche [10, appendici B.4 e B.5; 3.1, 7.1, 7.3 Crescenzi] Pile, code, liste, grafi, alberi Algoritmi su alberi binari [12-(12.4); 4.1, 5.4 Crescenzi] Visita (con generalizzazione ad albero n-ario), ricerca e modifica per alberi binari di ricerca Algoritmi e Strutture dati Informazioni sul corso Università degli studi di Ferrara Maria Federico
Università degli studi di Ferrara Maria Federico Programma del corso Algoritmi su grafi [*21-(21.4); 22-(22.5), 23, *24-(24.5, 24.6); 7.4, 7.5.1 Crescenzi] Visita DFS e BFS, ordinamento topologico, algoritmi di Kruskal, Prim, Dijkstra, Bellman-Ford Hashing [*11] Tabelle hash, funzioni hash, indirizzamento diretto e aperto Programmazione dinamica [15-(15.4,15.5)] Algoritmi golosi [16.1, 16.2] * Le dimostrazioni non sono richieste Algoritmi e Strutture dati Informazioni sul corso Università degli studi di Ferrara Maria Federico
Università degli studi di Ferrara Maria Federico Esame Prova scritta 4 esercizi Disegno di algoritmi Analisi di algoritmi Applicazione di algoritmi visti a lezione Operazioni su strutture dati Prova orale Può riguardare qualunque argomento trattato a lezione è volta a verificare la padronanza dei concetti e delle tecniche oggetto dell'insegnamento È obbligatoria l’iscrizione on-line tramite il sito studiare UNIFE durante la prova scritta NON si possono usare appunti, libri, calcolatrici, cellulari, etc. Compitini??? Algoritmi e Strutture dati Informazioni sul corso Università degli studi di Ferrara Maria Federico
Università degli studi di Ferrara Maria Federico Domande? Algoritmi e Strutture dati Informazioni sul corso Università degli studi di Ferrara Maria Federico