Programma preliminare del corso di Algoritmi e Strutture Dati con Laboratorio (Modulo I) Anno accademico 2009/2010 Introduzione al corso: o Concetto di algoritmo e di struttura dati o Concetti di correttezza ed efficienza o Cosa vuol dire analizzare un algoritmo Introduzione informale agli algoritmi: o Il problema del calcolo dell’n-esimo numero di Fibonacci o Un algoritmo numerico o Un algoritmo ricorsivo o Un algoritmo iterativo o Un altro algoritmo iterativo: risparmiare sulla memoria o Primi cenni sulla notazione asintotica o Un algoritmo basato sulle potenze ricorsive Modelli di Calcolo e metodologie di analisi o Modelli di calcolo o Notazione asintotica O, , , o, . o Delimitazioni inferiori e superiori o Metodi di analisi Caso peggiore, migliore, medio Analisi della ricerca sequenziale Un algoritmo più veloce: la ricerca binaria o Analisi di algoritmi ricorsivi o Metodo dell’iterazione, della sostituzione, teorema fondamentale delle ricorrenze e altre tecniche utili Strutture dati elementari o Tecniche per rappresentare collezioni di oggetti o Pile e code o Alberi Rappresentazioni indicizzate Rappresentazioni collegate Visite di alberi Ordinamento: o Ordinare in tempo quadratico o Heap sort o Merge sort o Quick sort o Integer sort e Bucket sort o Radix sort o Una delimitazione inferiore al numero di confronti Alberi di ricerca: o Alberi binari di ricerca o Alberi AVL Stringhe: o Distanza fra due stringhe: un algoritmo di programmazione dinamica