Offerta Didattica
INFORMATICA
ALGORITMI E STRUTTURE DATI
Classe di corso: L-31 - Scienze e tecnologie informatiche
AA: 2015/2016
Sedi: MESSINA
SSD | TAF | tipologia | frequenza | moduli |
---|---|---|---|---|
INF/01 | Caratterizzante | Libera | Libera | No |
CFU | CFU LEZ | CFU LAB | CFU ESE | ORE | ORE LEZ | ORE LAB | ORE ESE |
---|---|---|---|---|---|---|---|
9 | 9 | 0 | 0 | 72 | 72 | 0 | 0 |
LegendaCFU: n. crediti dell’insegnamento CFU LEZ: n. cfu di lezione in aula CFU LAB: n. cfu di laboratorio CFU ESE: n. cfu di esercitazione FREQUENZA:Libera/Obbligatoria MODULI:SI - L'insegnamento prevede la suddivisione in moduli, NO - non sono previsti moduli ORE: n. ore programmate ORE LEZ: n. ore programmate di lezione in aula ORE LAB: n. ore programmate di laboratorio ORE ESE: n. ore programmate di esercitazione SSD:sigla del settore scientifico disciplinare dell’insegnamento TAF:sigla della tipologia di attività formativa TIPOLOGIA:LEZ - lezioni frontali, ESE - esercitazioni, LAB - laboratorio
Obiettivi Formativi
Il corso intende fornire gli strumenti per: 1) analizzare le principali tecniche di progettazione di algoritmi; 2) identificare le scelte algoritmiche fondamentali e valutarne i costi computazionali; 3) scegliere le strutture dati più adeguate al problema conoscendo i vari modi di implementarle.Learning Goals
Metodi didattici
Lezioni frontali con l'uso di lavagna, computer e videoproiettore.Teaching Methods
Prerequisiti
Elementi di aritmetica modulare. Proprietà delle funzioni di variabili reali. Linguaggio ANSI C.Prerequisites
Verifiche dell'apprendimento
Esame orale sui contenuti del corso.Assessment
Programma del Corso
1. Analisi di algoritmi. Costo computazionale di un algoritmo. Modello RAM. Analisi degli algoritmi. Notazione asintotica. Notazione asintotica per equazioni. Proprietà dei simboli della notazione asintotica. Complessità di un algoritmo. Istruzione dominante. Complessità di un problema. Funzioni di uso comune. Funzioni tetto e pavimento. Polinomi. Esponenziali e logaritmi. Fattoriale. Calcolo combinatorio. Strategie di sviluppo degli algoritmi. 2. Sommatorie e Ricorrenze. Sommatorie. Stima di sommatorie. Stima mediante integrali. Produttorie. Ricorrenze. Risoluzione per iterazione. Risoluzione con il metodo principale. 3. Algoritmi elementari. Precisione macchina. Aritmetica razionale. Massimo comune divisore, minimo comune multiplo. MCD con sottrazioni ripetute. MCD con divisioni ripetute. Algoritmo esteso di Euclide. Algoritmo binario. Potenza n-esima. Numeri di Fibonacci. Numeri di Fibonacci e sezione aurea. Un altro calcolo efficiente dell'n-esimo numero di Fibonacci. Analisi dell'algoritmo di Euclide. Generazione di numeri casuali. Il metodo della congruenza lineare. Il metodo della congruenza quadratica. Radice quadrata. Zeri di funzione. Metodo di bisezione. Metodo di Newton-Raphson. 4. Strutture dati. Dati astratti. Rappresentazione di dati astratti. Vettori e record. Matrici. Rappresentazione del tipo matrice in C. Matrici compatte. Liste. Liste semplici. Rappresentazione sequenziale. Rappresentazione collegata con array. Rappresentazione collegata con puntatori. Liste doppiamente puntate. Liste circolari. Liste composite. Alberi. Alberi binari. Rappresentazione sequenziale. Rappresentazione mediante lista. Rappresentazione collegata. Alberi binari di ricerca. Alberi n-ari. Visita di un albero. Tavole. 5. Algoritmi per gli array. Minimo e massimo di un array. Partizione di un array. Fusione di due array ordinati. Eliminazione doppioni da un array ordinato. Ordinamento per selezione diretta. Ordinamento per inserimento diretto. Ordinamento per interscambio. Ordinamento di Shell. Ricerca di un elemento in un array. Ricerca sequenziale. Ricerca binaria. Ricerca di Fibonacci. Ricerca interpolata. Ricerca adattativa. Ricerca calcolata (hash). 6. Quicksort, Mergesort, Heapsort. Ordinamento di Hoare (quicksort). Prestazioni del quicksort. Ordinamento per fusione (mergesort). Ordinamento per heap (heapsort). Code con priorità. Complessità degli algoritmi di ordinamento basati sui confronti. 7. Pile, Code, Liste ordinate. Pile: Implementazione delle operazioni primitive. Code: Implementazione delle operazioni primitive. Liste ordinate: Implementazione delle operazioni primitive. 8. Ordinamento di array in tempo lineare. Un caso semplice: ordinamento per permutazione. Ordinamento per conteggio. Bucket sort. 9. Alberi binari di ricerca. Alberi binari ordinati. Minimo, massimo, predecessore, successore. Ricerca in un albero binario ordinato. Inserimento e cancellazione di un nodo da un albero binario ordinato. Visita di un albero binario ordinato. Visita di un albero binario in preordine e postordine. Altezza di un albero binario ordinato. 10. Alberi Red Black. Alberi binari bilanciati. Proprietà degli alberi RB. Rotazioni. Inserimento, Ricerca e Cancellazione.Course Syllabus
Testi di riferimento: 1) F. Oliveri. Algoritmi e Programmazione in C. Aracne, 2009.
2) T. H. Cormen, C. E. Leiserson, R. L. Rivest. Introduzione agli algoritmi. Jackson Libri, 1999.
3) R. Sedgewick. Algoritmi in C. Addison-Wesley Masson, 1993.
Esami: Elenco degli appelli
Elenco delle unità didattiche costituenti l'insegnamento
ALGORITMI E STRUTTURE DATI
Docente: ALESSANDRO PROVETTI
Orario di Ricevimento - ALESSANDRO PROVETTI
Giorno | Ora inizio | Ora fine | Luogo |
---|---|---|---|
Martedì | 09:30 | 13:30 | Su appuntamento, prego annunciare la visita e i contenuti per e-mail. Stanza 11 della Sez. di Fisica teorica. Al primo piano dell'edificio principale dell'ex Facoltà di Scienze. V.le F. Stagno d'Alcontres, 31. Coordinate: @38.260658,15.599449 |
Note: Su appuntamento, prego annunciare la visita per e-mail.