Il programma enunciato di seguito è solo approssimativo. Argomenti ulteriori potrebbero essere inseriti durante il corso e/o, corrispondentemente, argomenti di minor rilevanza, elencati sotto, potrebbero essere omessi.
Modulo 1
- Fondamenti matematici: logica, insiemi, relazioni, funzioni, strutture algebriche fondamentali
- Insiemi finiti e infiniti; numerabilità e non numerabilità di insiemi
- Caratteristiche elementari dei linguaggi
- Grammatiche di Chomsky e loro gerarchia
- Generazione ed accettazione di linguaggi
- Riconoscimento di linguaggi: automi
- Automi a stati finiti determinitici e non deterministici; equivalenza tra essi
- Relazioni tra automi a stati finiti e grammatiche di tipo 3 (regolari)
- Pumping lemma per i linguaggi regolari
- Proprietà di chiusura dei linguaggi regolari
- Predicati decidibili sui linguaggi regolari
- Espressioni regolari e loro equivalenza con gli automi a stati finiti e con le grammatiche regolari
- Minimizzazione di automi a stati finiti
- Linguaggi context free
- Grammatiche di tipo 2: forme ridotte e forme normali (Chomsky, Greibach)
- Pumping lemma per i linguaggi context free
- Automi a pila e linguaggi context free
- Automi a pila deterministici
- Ambiguità
- Analisi lessicale e sintattica
- Introduzione alle Macchine di Turing
- Linguaggi di tipo 1 e automi lineari
- Linguaggi di tipo 0 (ricorsivamente enumerabili) e Macchine di Turing
Modulo 2
Parte 1, calcolabilità:
- Ancora sulle Macchine di Turing: trasduttori e riconoscitori, Macchine ad un nastro e a k nastri, Macchine deterministiche e non deterministiche. Macchina di Turing universale. - Linguaggi e funzioni. Linguaggi e linguaggi complemento. Accettabilità e decidibilità di linguaggi. Calcolabilità di funzioni. La tesi di Church-Turing e modello di calcolo equivalenti alla macchina di Turing.
- Cardinalità di insiemi. Insiemi numerabili e non numerabili. Diagonalizzazione. - Linguaggi non decidibili.
- Riducibilità tra linguaggi
Parte 2, complessità:
- Misure di complessità: DTIME, DSPACE, NTIME, NSPACE. - Classi di linguaggi. Gap theorem e funzioni time-constructible. Teoremi di compressione e di accelerazione. Definizione delle classi di complessità spaziale e temporale: P, NP, PSPACE, NPSPACE, EXP, coNP. Inclusione, inclusione propria, coincidenza. Completezza.
- Problemi e codifiche. Problemi decisionali e loro complemento. - La classe P. Riducibilità polinomiale e chiusura di P rispetto alla riducibilità polinomiale. Problemi in P: 2-SAT, 2-COLORABILITA'. Funzioni in FP: trasformazione di una funzione booleana in forma congiuntiva normale. - La classe NP. Linguaggi NP-completi e Teorema di Cook. Chiusura rispetto alla riduzione polinomiale. Esempi di dimostrazioni di NP-completezza: 3-SAT, Vertex Cover, 3-Colorability, Colorability, Independent Set, Clique, Hamiltonian Circuit/Path, Longest Path, Commesso Viaggiatore. Problemi NP-intermedi: il teorema di Ladner.
- Algoritmi pseudo-polinomiali, problemi numerici e NP-completezza in senso forte; il problema PARTIZIONE.
|