| | | corso | | | | |
Algoritmica e Laboratorio
Codice: | 008AA | Crediti: | 12 | Semestre: | 2 | Sigla: | AlL | |
|
Settore disciplinare: | INF/01 - Informatica |
Docente
Giuseppe Prencipe
Tel. 0502213148Prerequisiti
Conoscenza dei basilari Principi di Programmazione e del Linguaggio C. In particolare, per un più proficuo utilizzo delle ore di laboratorio, si consiglia
fortemente di studiare approfonditamente i primi 5 capitoli del libro
di testo consigliato per le attività di laboratorio (Il Linguaggio C).
Obiettivi di apprendimento
Argomenti trattati:
Problemi Computazionali
Array e liste
Alberi e grafi
Dizionari
Pile e code
NP-completezza
Programma
Introduzione al Corso
Introduzione informale agli algoritmi
I numeri di Fibonacci
Algoritmo numerico
Algoritmo ricorsivo
Algoritmo iterativo
Occupazione di memoria e altro algoritmo iterativo
Algoritmo basato su potenze ricorsive
Nota sulla dimensione dell'istanza in ingresso
Modelli di calcolo e metodologie di analisi
Modelli di calcolo
Criteri di costo (uniforme e logaritmico)
La notazione asintotica (O, O, T)
Costo degli algoritmi e complessità dei problemi
Metodi di analisi (caso peggiore, migliore e medio)
Ricerca sequenziale
Ricerca binaria
Analisi di algoritmi ricorsivi
Metodo iterativo
Metodo della sostituzione
Analisi dell'albero di ricorrenza
Metodo del cambiamento di variabile
Master Theorem (con dimostrazione)
Esercitazione
Strutture dati elementari
Ordinamento con confronti
Limite inferiore al problema
Algoritmi quadratici: Selection Sort, Insertion Sort, Bubble Sort
Heapsort
Mergesort
Quicksort, con analisi di complessità nel caso medio
Altri tipi di ordinamento
Selezione del k-esimo elemento
Laboratorio C n. 1. Per la lezione, è di fondamentale importanza conoscere:
Selezione del k-esimo elemento
Heapselect
Quickselect
Mediano dei mediani
Alberi di ricerca
Alberi binari di ricerca
Alberi AVL
Alberi 2-3
Panoramica sui B-Alberi
Tabelle hash
-
Laboratorio C n. 2.
Fibonacci numerico
Fibonacci ricorsivo (esponenziale)
Fibonacci iterativo con array
Fibonacci iterativo con 3 variabili
Tecniche algoritmiche
Divide et impera
Programmazione dinamica
Prima verifica intermedia
Laboratorio C n. 3.
Tecniche algoritmiche
Stringhe
Definizioni
Distanza fra 2 stringhe
Massima sottosequenza comune (LCS)
String matching
Stringhe e automi a stati finiti
Algoritmo di Knuth, Morris e Pratt
-
Definizioni
Rappresentazione di grafi
Visite (ampiezza e profondità)
Componenti connesse di un grafo non orientato
Componenti fortemente connesse di un brafo orientato
Minimo albero di copertura
Kruskal
Prim
Boruvka
-