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. 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). Problema della gestione della cache. Caching offline. [KT cap 4 §§4.1-4.2-4.3] Compressione dei dati: codici prefissi e codice di Huffman: Descrizione e complessità. [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à. [CGGR cap 6 §6.1-6.2] Sequenza ottima di moltiplicazioni (Lucidi). Sotto-sequenza comune più lunga. Partizione di un insieme di interi. Problema della bisaccia e della bisaccia rilassato. [CGGR cap 6 §6.3-6.5]. Pseudo polinomialità e programmazione dinamica. [CGGR cap 6 §6.8]. Struttura secondaria dell’RNA. [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. [KT cap 6 §§6.6-6.7] Analisi Ammortizzata: Tecniche di analisi ammortizzata. Problema giocattolo: incremento di un contatore. Metodo dei crediti: Array dinamici. Metodo di aggregazione: Unione e appartenenza di insiemi disgiunti. 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 [Lucidi e CGGR cap 5 §5.4]. Algoritmi TRANS (transpose FC (frequency count). Problema del paging. Algoritmo LRU (Last Recentely Used) Analisi e ottimalità (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 [KT cap 13 §§13.1 e13.2]. Problema 2-sat: Algoritmo polinomiale e algoritmo deterministico Algoritmo probabilistico per 2-sat: descrizione ed analisi (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. Problema del collezionista. Numero massimo di palline in un cestello. 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. [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. 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.digirome.com/vocca/archives/320 . Per informazioni o domande, è possibile scrivere per posta elettronica alla Prof.ssa Paola Vocca [email protected].