Diario delle Lezioni





9 Ottobre 2019

NP Completezza (CLRS, Cap. 34)

  • Presentazione ragionata del corso. Programma preliminare.
  • Classi di problemi: problemi indecidibili, intrinsecamente esponenziali, intrattabili, polinomiali.
  • Problemi astratti e problemi decisionali. Riduzione da problemi di ottimizzazione a problemi decisionali. Esempio: SHORTEST UNWEIGHTED PATH.
  • Il problema dell'encoding: problemi astratti e problemi concreti.


10 Ottobre 2019
  • Encoding ragionevoli.
  • Linguaggi formali. Problemi concreti e linguaggi associati.
  • Decisione di un linguaggio in tempo polinomiale: la classe P: definizione.
  • Verificabilità in tempo polinomiale: introduzione.
  • Algoritmo di verifica per HAMILTON.
  • Verificabilità in tempo polinomiale: definizione.
  • La classe NP. Teorema: P è un sottoinsieme di NP.
  • Riducibilità: HAMILTON e TSP


11 Ottobre 2019
  • Riducibilità in tempo polinomiale.
  • Caratteristiche delle funzioni di riduzione.
  • Teorema: Se L1 < L2 e L2 è in P, allora L1 è in P.
  • Le classi NPH e NPC.
  • Corollario: se L e' sia in NPC che in P, allora P=NP.
  • Il problema BC-SAT. Definizione.
  • Il teorema di Cook: 1) Algoritmo di verifica polinomiale per BC-SAT. 2) Riduzione di ogni linguaggio in NP a BC-SAT (idea della riduzione).


16 Ottobre 2019
  • Il teorema di Cook: prova.
  • Il problema FORMULA-SAT. Definizione. Riduzione non polinomiale da BC-SAT.
  • Riduzione polinomiale da BC-SAT a FORMULA-SAT.


17 Ottobre 2019
  • Il problema 3CNF-SAT. Riduzione da BC-SAT.
  • Il problema CLIQUE. Definizione e riduzione da 3CNF-SAT.
  • Definizione dei problemi VERTEX-COVER e INDEPENDENT-SET.


18 Ottobre 2019
  • VERTEX-COVER e INDEPENDENT-SET: riduzioni da CLIQUE.
  • Il problema SUBSET SUM. Definizione e riduzione da 3CNF-SAT.
  • Esercizio: Difficoltà del Testing di Circuiti Booleani.


23 Ottobre 2019

Esercitazioni su NP completezza

  • Oggni linguaggio in NP ammette decisione (esponenziale)
  • HALTING problem è in NPH
  • Proprietà dei linguaggi complementari e la classe Co-NP
  • KNAPSACK problem è in NPC


24 Ottobre 2019

Esercitazioni su NP completezza

  • Costruzione di una soluzione a partire da un oracolo per il problema decisionale: applicazione a SUBSET-SUM
  • LONG-PATH problem è in NPC
  • DOMINATING SET problem è in NPC

Algoritmi di Approssimazione (CLRS, Cap. 35)

  • Definizione di algoritmo di approssimazione.


25 Ottobre 2019
  • Schemi di approssimazione polinomiali e pienamente polinomiali (PTAS e FPTAS)
  • Algoritmo di 2-approssimazione per VERTEX COVER: definizione e analisi.
  • Inefficiacia dell'algoritmo per il calcolo di una clique.
  • Spiegazione informale: le riduzioni in tempo polinomiale non preservano l'approssimazione.


30 Ottobre 2019
  • TSP: definizione e NP-Completezza
  • Inapprossimabilità del TSP generale
  • Definizione di TRIANGLE-TSP e prova di NP-completezza
  • Algoritmo di 2-approssimazione per TRIANGLE-TSP


31 Ottobre 2019
  • Algoritmo di Christofides per la 3/2-approssimazione di TRIANGLE-TSP
  • Cenni ai risultati di inapprossimabilità per TRIANGLE-TSP
  • Cenni all'approssimabilità di EUCLIDEAN-TSP


6 Novembre 2019
  • Definizione del problema SET-COVER e NP-completezza.
  • Analisi di log-approssimazione per SET-COVER
  • Analisi più fine per SET-COVER


7 Novembre 2019
  • FPTAS per SUBSET-SUM: l'algoritmo enumerativo.
  • FPTAS per SUBSET-SUM: l'algoritmo approssimato.
  • FPTAS per SUBSET-SUM: determinazione del fattore di approssimazione.


8 Novembre 2019
  • FPTAS per SUBSET-SUM: complessita' in tempo.
  • Approssmazione randomizzata: definizione.
  • MAX-SAT. Definizione, NP-completezza e algoritmo randomizzato di 8/7 approssimazione.
  • Tecnica del rilassamento lineare e del rounding: applicazione a weighted vertex cover.


13 Novembre 2019

Esercitazioni su Algoritmi di Approssimazione

  • MAX-CUT, 2-approssimazione deterministica
  • MAX-CUT, 2-approssimazione randomizzata.
  • Impossibilità di un FPTAS per VERTEX-COVER
  • SUBSET-SUM, algoritmo greedy di 2-approssimazione


14 Novembre 2019

Esercitazioni su Algoritmi di Approssimazione

  • MAX-IS, max-degree-approssimazione dell'algoritmo greedy
  • LOAD-BALANCING, 2-approssimazione e cenni alla 3/2-approssimazione
  • Impossibilità di un FPTAS per VERTEX-COVER
  • SUBSET-SUM, algoritmo greedy di 2-approssimazione

Algoritmi di Teoria dei Numeri (CLRS, Cap. 31)

  • Divisibilità: definizioni e proprietà.
  • Il massimo comun divisore (gcd): definizioni e proprietà.


15 Novembre 2019
  • Identità di Bezout.
  • L'algoritmo di Euclide: correttezza.
  • L'algoritmo di Euclide: complessità.
  • L'algoritmo di Euclide Esteso: : correttezza e complessità.


20 Novembre 2019
  • Aritmetica modulare: la struttura quoziente Zn: definizione e proprietà di gruppo rispetto alla somma.
  • Il sottoinsieme Z*n: definizione
  • Z*n è un gruppo moltiplicativo. Calcolo dell'inverso con EXTENDED-EUCLID.
  • La funzione di Eulero. Il teorema di Eulero e il piccolo teorema di Fermat.
  • Il Teorema cinese dei resti: enunciato


21 Novembre 2019
  • Il Teorema cinese dei resti: prova e corollari
  • Definizione di criptosistema e criptosistema a chiave pubblica.
  • Dettagli di RSA: calcolo della chiave pubblica e della chiave segreta: algoritmo cubico basato sull'esponenziazione veloce.
  • Protocolli di comunicazione e autenticazione.
  • Prova di correttezza: la funzione di codifica e decofica sono una l'inversa dell'altra.


22 Novembre 2019
  • Attacchi a RSA.
    1. Decomposizione di n=pq se p e q sono molto vicini tra loro.
    2. Attacchi per scelte di chiavi pubbliche con lo stesso esponente.
    3. Attacchi per scelte di chiavi pubbliche con lo stesso modulo.
    4. Attacchi basati sull'autenticazione


27 Novembre 2019
  • Pseudoprimi in base a e test semplice per numeri casuali. I numeri di Carmichael.
  • Estrazione casuale di primi: il teorema di Pomerance e analisi probabilistica dell'algoritmo basato sul test di pseudoprimalità in base 2.
  • Esponenziazione modulare e radici quadrate non banali dell'unità
  • Il test randomizzato di Miller-Rabin. Certificato di nonprimalità basato sul teorema di Fermat e sull'esistenza di una radice quadrata non banale dell'unità. Complessità.


28 Novembre 2019
  • Miller-Rabin: analisi della correttezza per numeri non di Carmichael.

Esercitazioni

  • Algoritmo di divisione intera
  • Calcolo del minimo comune multiplo
  • Unicità dell'inverso moltiplicativo


29 Novembre 2019
  • Introduzione agli algoritmi randomizzati: algoritmi Monte Carlo e Las Vegas.
  • Analisi in media e in alta probabilità
  • Le diseguaglianze di Markov e implicazioni rispetto all'analisi al caso medio.
  • I bound di Chernoff sulla distribuzione di probabilità di somme di Bernoulliane.


4 Dicembre 2019
  • Il bound di Chernoff: enunciati equivalenti.
  • Introduzione a Quicksort randomizzato: intuizione sull'efficienza computazionale
  • Applicazione dei bound di Chernoff all'analisi in alta probabilità di Quicksort
  • Analisi al caso medio di Quicksort tramite la seconda diseguaglianza di Markov


5 Dicembre 2019
  • Definizione del problema del taglio minimo su multigrafi
  • Definizione di contrazione di un multigrafo rispetto a un arco e proprieà rispetto ai tagli.
  • L'algoritmo di Min-Cut di Karger: codice


6 Dicembre 2019
  • L'algoritmo di Min-Cut di Karger: analisi
  • L'algoritmo di Min-Cut di Karger-Stein: descrizione e analisi della strategia divide-and-conquer


11-12 Dicembre 2019
    Lezioni soppresse per missione all'estero del docente.


13 Dicembre 2019
  • Il problema del polling
  • Il problema del coupon collecting
  • Generazione di bit senza bias da bit con bias
  • Approssimazione randomizzata: Independent Set


18 Dicembre 2019

Algoritmica per Data Stream

  • Il modello di streaming
  • Campionamento di elementi di uno stream: il reservoir sampling
  • Calcolo dell'elemento di maggioranza: algoritmo di Boyer Moore


19 Dicembre 2019
  • Estrazione degli elementi frequenti da uno stream di n elementi (n noto)
  • Estrazione degli elementi frequenti da uno stream di n elementi (n non noto): lo sticky sampling


20 Dicembre 2019
  • Calcolo del numero di elementi distinti di uno stream: probabilistic counters e median trick.


8,9 e 10 Gennaio 2020

Esercitazioni su tutti gli argomenti trattati durante il corso



15,16 e 17 Gennaio 2020

Presentazioni delle tesine di esonero





Ultimo aggiornamento: 7 settembre 2020 Vai alla pagina iniziale