08/10/2014 Corso • Docente Algoritmi e strutture di dati 2 o Paola Vocca o Orario di ricevimento: • Dopo le lezioni • Su appuntamento o Indirizzo e-mail: [email protected] • Orario o Martedì (14:00-16:00) lezione frontale Aula 3A o Giovedì (14:00-16:00) lezione frontale Aula 3A • Corso Paola Vocca Lezione 0: Presentazione o 6cr, o 8 ore credito di lezione o 48 ore – 24 lezioni-12 settimane Algoritmi e strutture di dati 2 Algoritmi e strutture di dati 2 1 2 Programma Programma • Tecniche algoritmiche: o Divide et impera: : Ricorrenze. Metodi risolutivi. Teorema fondamentale. Dimostrazione. Case study: Moltiplicazione veloce di interi, moltiplicazione fra matrici, Il problema della coppia più vicina. o 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. o Compressione dei dati: codici prefissi e codice di Huffman: Descrizione e complessità. Algoritmi e strutture di dati 2 • Tecniche algoritmiche: o Programmazione dinamica: : 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à. Sequenza ottima di moltiplicazioni (Lucidi). Sotto-sequenza comune più lunga. Partizione di un insieme di interi. Problema della bisaccia e della bisaccia rilassato. Pseudo polinomialità e programmazione dinamica. Struttura secondaria dell’RNA. o Allineamento di sequenze: Confronto fra sequenze. Allineamento globale. Allineamento di sequenze in spazio lineare. Allineamento locale e penalità di gap. Algoritmi e strutture di dati 2 3 4 1 08/10/2014 Programma Programma • 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. • Algoritmi on-line e analisi competitiva. Definizione. Ski-rental, Compravendita di azioni. Liste ad auto-organizzazione, algoritmo MTF. Algoritmi TRANS -transpose FC (frequency count). Problema del paging. Algoritmo LRU (Last Recentely Used) Analisi e ottimalità. • Algoritmi probabilistici: Definizioni e proprietà. Quicksort randomizzato: descrizione ed analisi. Selezione randomizzata: descrizione e analisi. Risoluzione dei conflitti in un sistema distribuito: analisi di un protocollo randomizzato. Taglio minimo: descrizione ed analisi dell’algoritmo randomizzato. Problema 2-sat: Algoritmo polinomiale e algoritmo deterministico Algoritmo probabilistico per 2-sat: descrizione ed analisi. • 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. • 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. Algoritmi e strutture di dati 2 Algoritmi e strutture di dati 2 5 Programma 6 Testi e Materiale didattico • 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. • Schemi di approssimazione PTAS e FPTAS. Partition : Esempio di schema di approssimazione. polinomiale. Esempio di schema di approssimazione pienamente polinomiale: Knapsack. Classi di approssimabilità: APX, PTAS e FPTAS e relazioni fra di esse. • Crescenzi - Gambosi - Grossi - Rossi – STRUTTURE DI DATI E ALGORITMI (Progettazione, analisi e programmazione ) PEARSON EDUCATION ITALIA -2012 • Kleinberg- Tardos – Algoritm Design PEARSON International Edition-2006 • Appunti e dispense • Tutto il materiale del corso è sulla pagina del corso, dove troverete anche informazioni ed avvisi. Algoritmi e strutture di dati 2 Algoritmi e strutture di dati 2 7 8 2 08/10/2014 Esame Prerequisiti • Algoritmi e strutture dati di base (corso di Algoritmi e strutture dati 1) • Programmazioen con Laboratorio Algoritmi e strutture di dati 2 • La prova d’esame consiste: • Prova orale: Tutto il programma comprese le dimostrazioni • Eventualmente una tesina di approfondimento per migliorare la votazione (inutile per chi sceglie l’esame come idoneità) Algoritmi e strutture di dati 2 9 10 3