Programma preliminare del corso di
Elementi di Algoritmi e Strutture Dati
Anno accademico 2006/2007
-
-
Gli algoritmi e la loro analisi: Concetti di correttezze e complessita'.
o Problema del calcolo dell'n-esimo numero di Fibonacci fibo(n)
o Un algoritmo ricorsivo poco efficiente.
o Due algoritmi iterativi piu' efficienti che eseguono un numero lineare (in n) di
operazioni. Loro occupazione di memoria.
Complessita' asintotica di algoritmi e problemi
Studio della crescita delle funzioni usando le notazioni asintotiche O, Omega, Theta.
Complessita' asintotica di algoritmi e problemi
Osservazione sulla effettiva dimensione dell'input per il problema del calcolo dell'n-esimo
numero di Fibonacci.
Un algoritmo per il calcolo di fibo(n) di complessita' temporale asintotica O(log n).
-
Il problema dell'ordinamento
o Selection Sort: Correttezza e complessita' temporale asintotica.
o Insertion Sort: Correttezza e complessita' temporale asintotica nel caso peggiore
o Bubble Sort: Correttezza e complessita' temporale asintotica nel caso peggiore
o Heap Sort
 La struttura dati Heap: Estrazione minimo, mantenimento, inserimento.
Correttezza e complessita' temporale delle precedenti operazioni.
 Algoritmo heapsort: complessita' nel caso peggiore.
o Lower bound sulla complessita' del problema
o Ricerca Binaria
o Merge Sort, Quick Sort, Counting Sort.
-
Stutture dati:
o Array, Pile, Code, Liste.
o Alberi, alberi binari di ricerca
 Ricerca, inserimento e cancellazione
o Alberi binari di ricerca bilanciati: Alberi AVL
 Ribilanciamento di un albero AVL a seguito di inserimento e cancellazione
(rotazioni)