Diario delle Lezioni A.A. 2022/23





27 Febbraio 2023
  • Introduzione al corso: iscrizioni, modalità di esame.
  • Presentazione del libro di testo (CLRS).
  • Obiettivi del corso: paradigmi algoritmici e algoritmi per problemi notevoli.
  • Ricapitolazione: prerequisiti da ripassare (App. A e B e Capp. 1, 2 e 3 del CLRS).
  • Definizione di problema, istanza, taglia di un'istanza e algoritmo che risolve un problema.
  • Esempi di specifica di problemi computazionali: somma di interi, raggiungibilità su grafi diretti


28 Febbraio 2023
  • Esempi di specifica di problemi computazionali: ordinamento.
  • Analisi di un algoritmo: correttezza e complessità
  • Complessità in tempo di un algoritmo su una singola istanza. Metriche riassuntive di complessità: caso peggiore, migliore, medio .

Il paradigma Divide-and-Conquer.

  • Proprietà di sottostruttura


6 Marzo 2023
  • Algoritmo generale per il Divide-and-Conquer.
  • Albero delle Chiamate
  • Analisi della correttezza di un algoritmo Divide-and-Conquer con l'induzione (Sez. 4.1, 4.3-4.5 del CLRS)
  • Specifica dell'algoritmo MAX per calcolare il massimo di un array di interi.


7 Marzo 2023
  • Analisi della correttezza di MAX
  • Analisi della complessità di un algoritmo Divide-and-Conquer: ricorrenze.
  • Applicazione a MAX della tecnica dell'unfolding.
  • Verifica di una ricorrenza e cenni alla tecnica del guess e induzione parametrica.


13 Marzo 2023
  • Induzione parametrica: applicazione a MAX.
  • Limiti dell'induzione parametrica.
  • Analisi dell'albero della ricorrenza.

Esercitazione su ricorrenze

  • Unfolding, induzione parametrica e analisi dell'albero delle chiamate della ricorrenza di Mergesort


14 Marzo 2023

Formula generale per la risoluzione di un'ampia classe di ricorrenze Divide-and-Conquer.

  • Definizione delle funzioni s(n), f(n), w(n).
  • Funzioni iterate: definizione e proprietà.
  • Informazioni associate ai nodi dell'albero della ricorrenza.
  • La formula chiusa.
  • Formula generale: esempi di applicazione.


20 Marzo 2023
  • Il Master Theorem: enunciato
  • Il Master Theorem: prova. (Si veda anche CLRS: Sez. 4.6)


21 Marzo 2023
  • Il Master Theorem: estensione a valori arbitrari del parametro
  • Il Master Theorem: casi di inapplicabilità
  • Il Master Theorem: la condizione di regolarità per polinomi.

Algoritmi per operazioni tra matrici

  • Istanze e modello di costo.
  • Algoritmi iterativi di somma e sottrazione.


27 Marzo 2023
  • Algoritmo di moltiplicazione iterativo
  • Algoritmo ricorsivo cubico.


28 Marzo 2023
  • L'algoritmo di Strassen. Definizione dei sottoprodotti. Correttezza e studio della complessità asintotica. (CLRS, Sez. 4.2)
  • Risoluzione esatta della ricorrenza associata al'algoritmo di Strassen. Confronto con l'algoritmo basato sulla definizione.
  • Algoritmi ibridi. Applicazione a Strassen. Ricorrenza parametrica per la determinazione del punto di transizione tra i due algoritmi. (Controlla il Materiale On-line ).


3 Aprile 2023

Esercitazioni sul paradigma Divide-and-Conquer

  • Algoritmi Divide and Conquer efficienti per matrici supercircolanti
  • L'esponenziazione di operatori associativi: approcci ricorsivi e iterativi


4 Aprile 2023

I polinomi e la FFT (CLRS, Cap. 30)

  • Rappresentazione per coefficienti e rappresentazione per punti.
  • Somma e prodotto nella rappresentazione per coefficienti. L'operatore di convoluzione lineare.
  • Somma e prodotto nella rappresentazione per punti.
  • Conversioni: valutazione e interpolazione.
  • Valutazione: regola di Horner.
  • Interpolazione: sistema lineare a matrice di Vandermonde.


17 Aprile 2023
  • Interpolazione: formula di Lagrange. Approccio al calcolo della formula di Lagrange (controlla il Materiale On-line ).
  • La Discrete Fourier Transform (DFT): definizione.
  • Il teorema di convoluzione.
  • DFT come operazione di valutazione. DFT inversa. La matrice di Fourier.
  • Le radici n-sime dell'unità. Definizione.


18 Aprile 2023
  • Radici n-sime: proprietà di gruppo e lemmi di cancellazione, dimezzamento e somma.
  • Proprietà di sottostruttura per il calcolo della DFT: valutazione di un polinomio di grado limitato da n tramite valutazioni di due polinomi di grado limitato da n/2.
  • FFT: pseudocodice, correttezza e complessità
  • Inversa della matrice di Fourier. La trasformata inversa di Fourier: espressione analitica.
  • Approccio al calcolo della trasformata inversa: valutazione su potenze negative della radice principale n-sima dell'unita'.


2 Maggio 2023
  • Calcolo della trasformata inversa tramite il reverse della DFT.
  • Calcolo della convoluzione lineare in tempo O(nlog n)

Esercitazioni sulla Trasformata Discreta di Fourier

  • Trasformate notevoli.
  • Trasformata di vettori (n,k)-sparsi.
  • Esponenziazione di polinomi


8 Maggio 2023

La Programmazione Dinamica

  • Critica al paradigma divide-and-conquer: problema della mancanza di memoria nella risoluzione di sottoistanze ripetute.
  • Utilizzo di tabelle e risoluzione bottom-up. I numeri di Fibonacci: algoritmo iterativo lineare.
  • La memoizzazione di un algoritmo divide-and-conquer: sviluppo e analisi. I numeri di Fibonacci: algoritmo memoizzato.
  • I problemi di ottimizzazione: definizione algebrica. Caratteristiche generali dei problemi risolvibili con programmazione dinamica: sottostruttura ottima, sottoproblemi ripetuti, spazio dei sottoproblemi ristretto.
  • Paradigma generale per lo sviluppo di un algoritmo di programmazione dinamica: proprietà di sottostruttura ottima, scrittura della ricorrenza sui costi, informazione addizionale, risoluzione bottom-up o memoizzata.


9 Maggio 2023
  • Stringhe: alfabeto, sottostringhe, prefissi, suffissi, sottosequenze.
  • Il problema della Longest Common Subsequence (LCS).
  • LCS: Proprietà di sottostruttura ottima


15 Maggio 2023
  • LCS: Ricorrenza e sottoproblemi ripetuti, (CLRS, pagg. 350-355).
  • LCS: Informazione addizionale.
  • LCS: Codice iteratvo bottom-up: sviluoppo e analisi
  • LCS: Stampa della LCS.
  • LCS: Codice memoizzato e analisi


16 Maggio 2023
  • Il problema della Matrix Chain Multiplication (MCM). Definizione, applicazioni, approccio enumerativo esponenziale. (CLRS, pp. 370-378)
  • MCM: Proprietà di sottostruttura ottima.
  • MCM: Ricorrenza sui costi e informazione addizionale.
  • MCM: Sottoproblemi ripetuti
  • MCM: Approccio iterativo bottom-up: codifica e analisi.
  • MCM: Uso dell'informazione addizionale


22 Maggio 2023

Esercitazioni sulla Programmazione Dinamica

  • Allineamento di stringhe di DNA
  • Sottosequenza palindroma di lunghezza massima
  • Memoizzazione (solo enunciato, da risolvere a casa)


23 Maggio 2023

Il Paradigma Greedy

  • Critica alla programmazione dinamica e idea dell'approccio greedy: scelta greedy e risoluzione top-down di un solo sottoproblema.
  • Selezione delle attività: Algoritmo ricorsivo top-down lineare e eliminazione della tail recursion: algoritmo iterativo lineare. (Si studi anche l'approccio alternativo di CLRS, pp.415-418.)


29 Maggio 2023
  • Selezione delle attività: enunciato e prova delle proprietà di scelta greedy
  • Selezione delle attività: enunciato e prova delle proprietà di di sottostruttura ottima
  • Introduzione alla compressione dei dati: codici a lunghezza fissa, codici a lunghezza variabile, codici liberi da prefissi (prefix codes).
  • Rappresentazione ad albero (trie) dei codici prefissi e formulazione del problema di ottimizzazione su trie


30 Maggio 2023
  • Codici di Huffman: idea generale e algoritmo (CLRS, pp. 428-437)
  • Codici di Huffman: Proprietà di scelta greedy
  • Codici di Huffman: Proprietà di sottostruttura ottima


5 Giugno 2023

Esercitazioni sul Paradigma Greedy

  • Masterizzazione compatta di tracce su CD
  • (2,1)-boxing
  • Shortest-first job scheduling (solo enunciato, da risolvere a casa)


6 Giugno 2023
  • Correzione della simulazione di esame


Ultimo aggiornamento: 23 maggio 2023 Vai alla pagina iniziale