Lezione n. 10 - Friday 22 October
2010 |
- Pumping Lemma per i problemi decidibili in tempo lineare. Separazione
tra la classe di complessita' lineare e quella quadratica.
Simulazione di algoritmi.
|
Lezione n. 11 - Tuesday 26 October
2010 |
- Macchine di Turing a seminastro. Equivalenza tra macchine di Turing a
seminastro e macchine di Turing.
Simulazione di algoritmi.
|
Lezione n. 12 - Friday 29 October
2010 |
- Definizione di macchine di Turing multinastro. Algoritmo associato ad
una macchina multinastro.
Teorema di simulazione delle macchine multinastro con le macchine a nastro
singolo.
|
Lezione n. 13 - Thursday 11 November
2010 |
- Dimostrazione del teorema di speedup.
Introduzione al concetto di computabilita'. Macchine di Turing
non-deterministiche. P vs NP. Problemi NP-completi.
|
Lezione n. 14 - Tuesday 16 November
2010 |
- Funzioni Ricorsive di Base
Operazioni di chiusura per le funzioni Turing Computabili: composizione,
concatenazione, ricorsione, minimalizzazione.
|
Lezione n. 15 - Thursday 18 November
2010 |
- Chiusura della classe delle funzioni Turing computabili rispetto allo
schema di ricorsione.
Chiusura della classe delle funzioni Turing computabili rispetto allo
schema di minimalizzazione.
|
Lezione n. 16 - Tuesday 23 November
2010 |
- Definizione della classe delle funzioni ricorsive.
Esempi di funzioni ricorsive.
|
Lezione n. 17 - Thursday 25 November
2010 |
- Generalizzazione dello schema di ricorsione alle funzioni a piu' valori.
Codifica ricorsiva delle coppie e piu' in generale di n-uple di naturali.
Equivalenza tra funzioni Turing computabili e funzioni ricorsive.
|
Lezione n. 18 - Friday 26 November
2010 |
- Dimostrazione che ogni funzione Turing computabile e' anche ricorsiva.
Definizione di funzioni ricorsive primitive e relazione con il concetto di
funzione ricorsiva totale. Funzione di Ackermann.
|
Lezione n. 19 - Thursday 2 December
2010 |
- Equivalena tra funzioni ricorsive e macchine di Turing (continua la
dimostrazione).
Ogni funzione calcolabile e' ricorsiva. Definizione di macchina di Turing
universale.
|
Lezione n. 20 - Friday 3 December
2010 |
- Implementazione del crivello di Eratostene in Java.
Costrutti tipici della programmazione object oriented: classi astratte,
pubbliche, private. Overloading di metodi, overriding, ereditarieta',
costruttori di classe.
|
Lezione n. 21 - Tuesday 7 December
2010 |
- Macchine di Turing Universali. Il problema dell'arresto. Indecidibilita'
del problema dell'arresto.
Introduzione e prime definizioni sul lambda calcolo. Induzione strutturale
sui lambda termini. Variabili libere e varibili legate.
|
Lezione n. 22 - Thursday 9 December
2010 |
- Introduzione al lambda calcolo. Definizione dell'insieme dei lambda
termini. Lambda termini come funzioni. Lambda termini come dati.
Astrazione e Applicazione. Variabili libere e variabili legate. Definizioni
per induzione strutturale. Definizione della sostituzione semplice.
Proprieta' di invarianza per permutazione della sostituzione. Lemma di non
dipendenza dalle sostituzioni su variabili che non sono variabili libere
del termine.
|
Lezione n. 23 - Friday 10 December
2010 |
- Derivazione delle classi del crivello di Eratostene per la gestione di
interi a precisione arbitraria.
Metodi ed attributi di classe (static). Attributi costanti (final).
Conversione da intero a stringa.
|
Lezione n. 24 - Thursday 16 December
2010 |
- Proprieta' della sostituzione. Relazioni sui lambda termini.
Definizione di alpha equivalenza. Definizione di relazione che passa al
contesto.
|
Lezione n. 25 - Tuesday 21 December
2010 |
- Sostituzione e sostituzione a meno di alpha-equivalenza, Beta riduzione,
Terminazione e Confluenza nel lambda calcolo.
Programmazione nel lambda calcolo. Interi, Coppie, Triple, Proiezioni,
Liste, Induzione sugli interi, Induzione sulle liste.
|