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)