Programma del corso di Algoritmi e strutture Dati. 2009

Programma del corso di Algoritmi e strutture Dati.
2009-2010 - Modulo 1.
Prof. Sabrina Mantaci
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Introduzione ai concetti di algoritmi e strutture dati. Un esempio complesso, il
problema della connettività.
Algoritmi di union find per il problema della connettività. Quick-find, Quick-union e
Quick-union peseta
La complessità degli algoritmi. Le notazioni O grande, Omega e Theta.
Analisi degli algoritmi. Caso migliore, caso peggiore e caso medio.
Analisi degli algoritmi ricorsivi. Il metodo di iterazione. il metodo di Sostituzione.
E sempi di applicazione dei metodi di iterazione e sostituzione.
Riepilogo dei principali concetti del linguaggio C. Le funzioni clock, time, rand and
srand.
Il teorema Fondamentale delle Ricorrenze. E sempi di applicazione del teorema
E sercitazione in laboratorio sul problema della connettività con calcolo delle diverse
prestazioni degli algoritmi quick-find, quick-union e quick union pesata.
Dimostrazione del lower bound di n log n per gli algoritmi di ordinamento basati su
confronti
Algoritmi di sorting. Gli ordinamenti quadratici (selectionsort, Insertionsort,
bubblesort), loro analisi e proprietà.Un algoritmo ottimale, Il Mergesort
E sercitazione in laboratorio su algoritmi di ordinamento, con conteggio del numero
di confronti
E sercizi su funzioni ricorsive
Descrizione della struttura dati heap. Heapsort. Algoritmo ed Analisi. Counting sort.
Bucketsort. Radixsort
Implementazione in C dell’algoritmo Heapsort
Il Quicksort. Algoritmo e Analisi. Counting sort. Bucketsort. Radixsort
Implementazione degli algoritmi Quicksort, Counting-Sort, Bucket-Sort Radix-Sort
Riepilogo delle principali proprietà dei diversi algoritmi di sorting. Metodi per il
calcolo di somme finite o infinite. E sercitazioni.
Ordinamento di stringhe secondo il numero di scambi che occorrono per ordinarle.
E sercitazione
Strutture dati elementari. Implementazione di Pile, Code, Alberi.
Rappresentazione di un’espressione aritmetica mediante alberi binari e loro
valutazione tramite pile
Programmazione dinamica. Valutazione del calcolo ricorsivo della funzione di
Fibonacci. Funzione di Fibonacci, versione programmazione dinamica.
Programmazione dinamica. Distanza di Hamming fra due stringhe. Paradigma
Greedy. Il distributore automatico di resto.
E sercitazione su Programmazione dinamica. La massima sottosequenza comune.
Rappresentazioni di grafi. Liste di archi, liste di adiacenza, liste di incidenza,
matrice delle adiacenze, matrice di incidenza. Algoritmo generico delle visite di
grafi.
Visita B F S . Calcolo della minima distanza fra due vertici del grafo. Visita DF S
iterativa e ricorsiva.
Implementazione in C delle visite B F S e DF S.