ALGORITMI E STRUTTURE DATI 2
Semestre: primo
Nome insegnamento: Algoritmi e strutture dati 2 (6 crediti)
Titolare del corso: Prof.ssa Paola Vocca ([email protected])
Presentazione
Il corso è un esame a scelta del 3° anno del corso di Laurea in Informatica.
Obiettivi
Alla fine del corso, lo studente dovrebbe essere in grado di usare progettare ed analizzare
algoritmi per la risoluzione di problemi non banali e valutare ed implementare strutture dati
avanzate.
Prerequisiti
Sebbene non obbligatorio, è fortemente consigliato il superamento dei seguenti insegnamenti:
 Fondamenti di Informatica
 Algoritmi e Strutture dati
 Programmazione
Articolazione
Sono previste lezioni frontali. Tutto il materiale esposto a lezione è disponibile sulla pagina web
del corso.
Frequenza
Per questo insegnamento la frequenza non è obbligatoria, e non saranno fatte distinzioni in sede
di esame tra studenti frequentanti e non frequentanti. Tuttavia, gli studenti che non frequentano
devono prevedere di dedicare maggior tempo individuale per la preparazione l’organizzazione
del materiale didattico.
Argomenti
Tecniche algoritmiche:
 Divide et impera: Ricorrenze. Metodi risolutivi. Teorema fondamentale (no dimostrazione).
Case study: Moltiplicazione veloce di interi, moltiplicazione fra matrici, Il problema della
coppia più vicina. [CGGR cap 3 §§ 3.1-3.2, 3.5-3.6-3.7]
 Tecnica greedy: Struttura delle tecniche greedy. Problemi di scheduling. Scheduling ad
intervallo. Scheduling su più macchine (Interval Partition): Lower bound e ottimalità
dell’algoritmo greedy. Minimizzazione del ritardo nello scheduling (Scheduling to
Minimizing Lateness) (no dimostrazione). Problema della gestione della cache. Caching
offline (no dimostrazione). [KT cap 4 §§4.1-4.2-4.3]
 Compressione dei dati: codici prefissi e codice di Huffman: Descrizione e
complessità.(tutto) [KT cap 4 §4.8]
 Programmazione dinamica: P paradigma della programmazione dinamica. Successione di
Fibonacci. Complessità dell'algoritmo ricorsivo. Versione in programmazione dinamica
dell'algoritmo e complessità. Problema del resto. Algoritmo greedy per il problema del
resto ed esempi di ottimalità e non ottimalità.(tutto) [CGGR cap 6 §6.1-6.2] Sequenza
ottima di moltiplicazioni (Lucidi)(tutto). Sotto-sequenza comune più lunga. Partizione di un
insieme di interi. Problema della bisaccia e della bisaccia rilassato (tutto). [CGGR cap 6
§6.3-6.5]. Pseudo polinomialità e programmazione dinamica. (tutto) [CGGR cap 6 §6.8].
Struttura secondaria dell’RNA. (tutto) [KT cap 6 §6.5]
 Allineamento di sequenze: Confronto fra sequenze. Allineamento globale. Allineamento di
sequenze in spazio lineare. Allineamento locale e penalità di gap. (tutto) [KT cap 6 §§6.66.7]
Analisi Ammortizzata: Tecniche di analisi ammortizzata. Problema giocattolo: incremento di un
contatore. Metodo dei crediti: Array dinamici (tutto). Metodo di aggregazione: Unione e
appartenenza di insiemi disgiunti (tutto). Metodo del potenziale. [Lucidi e CGGR cap 5 §§5.3 e 5.5].
Algoritmi on-line e analisi competitiva. Definizione. Ski-rental, Compravendita di azioni. Liste ad
auto-organizzazione, algoritmo MTF (no dimostrazione)[Lucidi e CGGR cap 5 §5.4]. Algoritmi
TRANS (transpose FC (frequency count). Problema del paging. Algoritmo LRU (no dimostrazione)[
(Last Recentely Used) Analisi e ottimalità (tutto) (Lucidi).
Algoritmi probabilistici: Definizioni e proprietà. Quicksort randomizzato: descrizione ed analisi.
Selezione randomizzata: descrizione e analisi [Lucidi e CGGR cap 5 §5.1 ]. Risoluzione dei conflitti
in un sistema distribuito: analisi di un protocollo randomizzato. Taglio minimo: descrizione ed
analisi dell’algoritmo randomizzato (tutto)[KT cap 13 §§13.1 e13.2]. Problema 2-sat: Algoritmo
polinomiale e algoritmo deterministico Algoritmo probabilistico per 2-sat: descrizione ed analisi
(no dimostrazione)(Lucidi).
Dizionari: Definizione dei dizionari. Realizzazione tramite tabelle hash. Indirizzamento diretto.
Proprietà delle funzioni hash e hash perfetto. Liste di trabocco, indirizzamento aperto, teorema
del costo ammortizzata. Balls and bins. Paradosso del compleanno (tutto). Problema del
collezionista(no dimostrazione). Numero massimo di palline in un cestello (no dimostrazione).
Hashing universale. Implementazione randomizzata dei dizionari. [CGGR Cap.4 §§4.1 e 4.3, Lucidi
e dispense]
NP-completezza e Complessità di problemi di ottimizzazione. Problemi intrattabili. Classi P e NP.
Certificati polinomiali. Problemi NP-completi. Riducibilità polinomiale. NP completezza. Definizione
dei problemi di ottimizzazione. Relazione fra i problemi di decisione. Classe PO e NPO. [CGGR
Cap.8 §§8.1-8.4, 8.6, Lucidi]
Algoritmi approssimati e schemi di approssimazione: Definizione, rapporto di approssimazione e
errore relativo, algoritmi r-approssimanti. Algoritmi di approssimazione per Max-Sat. Problemi
approssimabili e non approssimabili. Problema del commesso viaggiatore: NP completezza e non
approssimabilità. Tecnica del gap e risultati di non approssimabilità. Vertex Cover: definizione;
algoritmo di approssimazione basato su una tecnica greedy con rapporto di approssimazione
logaritmico; algoritmo di approssimazione con rapporto di approssimazione.(tutto) [CGGR Cap.8
§§ 8.10,8.11, lucidi]
Schemi di approssimazione PTAS e FPTAS. Partition : Esempio di schema di approssimazione.
polinomiale. Esempio di schema di approssimazione pienamente polinomiale: Knapsack. [Lucidi]
Classi di approssimabilità: APX, PTAS e FPTAS e relazioni fra di esse. [Lucidi]
Modalità d'esame
L’esame si compone di una verifica orale su tutto il programma del corso comprese le
dimostrazioni ove non specificato diversamente. Il voto potrà essere migliorato da una tesina di
approfondimento di una parte del corso, con eventuale implementazione degli algoritmi proposti.
Testi d’esame

[CGGR] Crescenzi - Gambosi - Grossi - Rossi STRUTTURE DI DATI E ALGORITMI (Progettazione, analisi e programmazione ) -PEARSON
EDUCATION ITALIA -2012.

[KT] Kleinberg- Tardos "Algoritm Design" PEARSON International Edition-2006

Lucidi e dispense
Materiale del corso on-line
Il materiale del corso è disponibile sulla pagina del corso del sito web
http://www.informatica.uniroma2.it/.
Per informazioni o domande, è possibile scrivere per posta elettronica alla Prof.ssa Paola Vocca
[email protected].