Programma




Programma preliminare del corso

  1. Introduzione agli argomenti del corso. Richiami: definizione di problema e algoritmo; modello computazionale; modello di costo; uso dello pseudolinguaggio

  2. Il paradigma divide-and-conquer:
    • Caratteristiche generali e strumenti per l'analisi;
    • Casi di studio:
      • Moltiplicazione di interi: algoritmo di Karatsuba;
      • Moltiplicazione di matrici: algoritmo di Strassen;
      • Moltiplicazione di polinomi: la Fast Fourier Trasform.


  3. Il paradigma dynamic programming:
    • Caratteristiche generali: sottoproblemi ripetuti e tecniche di risoluzione;
    • Casi di studio:
      • Algoritmo di Matrix-chain multiplication;
      • Problemi su stringhe: Longest Common Subsequence.


  4. Il paradigma greedy:
    • Problemi risolvibili con l'approccio greedy e tecniche di risoluzione;
    • Casi di studio:
      • Il problema della selezione di attività
      • I codici di Huffman per la compressione dei dati.


  5. La teoria della NP-Completezza:
    • Classi di complessità P, NP, co-NP e NPC;
    • Tecniche di riducibilità in tempo polinomiale e riduzioni notevoli.

Ultimo aggiornamento: 28 Settembre 2012 Vai alla pagina iniziale