Corso di laurea in Informatica (6 Cr)
Orario

    Martedì dalle 15:00-17:00 aula 3A
    Giovedì dalle 15:00-17:00 aula 3A

Contatto: vocca@unitus.it

Ricevimento: Su appuntamento all’indirizzo di posta elettronica o a dopo lezione.

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.

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.

Scricare il programma in formato .pdf

[wpfilebase tag=file id=96 tpl=download-button /]

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: 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.6-6.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]

  • [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
In questa sezione potrete trovare le slide presentate a lezione.
In questa sezione potrete trovare tutto il materiale di supporto al progetto.