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.
- Decomposizione di n=pq se p e q sono molto vicini
tra loro.
- Attacchi per scelte di chiavi pubbliche con lo stesso esponente.
- Attacchi per scelte di chiavi pubbliche con lo stesso modulo.
- 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
|