La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Precorsi di Informatica Dott. Antonio Cisternino Settembre 2003

Presentazioni simili


Presentazione sul tema: "Precorsi di Informatica Dott. Antonio Cisternino Settembre 2003"— Transcript della presentazione:

1 Precorsi di Informatica Dott. Antonio Cisternino 23-25 Settembre 2003
Funzioni calcolabili Precorsi di Informatica Dott. Antonio Cisternino 23-25 Settembre 2003

2 Scambiamo 0 e 1 Le regole per la Macchina di Turing Universale sono due e sono analoghe a quelle viste nella prima lezione: B S0S11 S1S01 I

3 Numeriamo le MdT Con la Macchina di Turing Universale abbiamo imparato ad esprimere il programma di una macchina come una stringa Domanda: è possibile associare un numero in modo univoco ad ogni Macchina possibile? Risposta: è possibile associare un numero naturale ad ogni macchina

4 Associamo cifre ai simboli
Lo schema di codifica che vedremo è uno tra i tanti L’idea è quella di trasformare un programma in cifre e quindi associare alla macchina il numero così ottenuto I simboli necessari a definire le regole (e quindi il programma) sono: {S, 0, 1, N} Associamo quindi i simboli a cifre: {S  2, 0  0, 1  1, N  3, B  4, I  5}

5 Esempio Associamo quindi un numero al programma visto all’inizio secondo la regola stabilita: B S0S11 S1S01 I = Dato il numero siamo in grado di ottenere la macchina? Certamente: basta usare l’associazione al contrario

6 Codifichiamo l’input Esempio: T01001001N = 2010010013
Possiamo procedere in modo analogo per associare un numero all’input della nostra macchina: {0  0, 1  1, T  2, N  3} Esempio: T N = Ancora una volta possiamo riottenere l’input dal numero

7 Osservazioni Siamo in grado di ottenere, data una macchina, un numero. Sappiamo anche tornare indietro a partire dal numero È sempre possibile dato un numero ottenere la macchina corrispondente? La risposta è no, nella codifica che abbiamo usato esistono numeri a cui non è possibile associare una macchina Lo stesso si può dire per l’input

8 Goëdelizzazione È possibile realizzare codifiche che associano ad ogni numero una macchina o un input sempre invertibili Il procedimento di enumerare tutte le Macchine di Turing è noto col termine di Göedelizzazione ATTENZIONE!!!! Le macchine di Turing sono tante quante i numeri naturali: sappiamo ottenere una macchina dato un numero e viceversa!!!!!

9 La tesi di Church È giunto il momento di ricordare la tesi di Church
La tesi di Church/Turing è la seguente: se una funzione è calcolabile secondo un qualsiasi formalismo esistente e non allora lo è anche con una macchina di Turing Le funzioni calcolabili quindi coincidono (secondo questa tesi) con le macchine di Turing

10 |{f | f è calcolabile}|??? Quante sono le funzioni calcolabili?
Sono di più dei numeri naturali? No, visto che abbiamo associato in modo univoco numeri e macchine Sono più dei numeri interi o razionali? No: entrambi gli insiemi sono enumerabili Sono più dei numeri reali? No!!! I numeri reali sono più di quelli naturali!!!

11 |{f | f:NN}|??? Quante sono le funzioni da numeri naturali in numeri naturali Sono enumerabili? NO!!! Come possiamo dimostrare che le funzioni da naturali in naturali non sono enumerabili (non possono essere messe in corrispondenza con i numeri interi)? Si procede con un argomento proposto dal Matematico G. Cantor: la diagonalizzazione

12 Considerazioni preliminari
Consideriamo i possibili sottoinsiemi dei numeri naturali: {0}, {0, 1}, {2,5,7}… Per ogni sottoinsieme S di N possiamo costruire una funzione che associa ad ogni elemento di N 1 se questo appartiene ad S, 0 altrimenti Le funzioni da N in N sono quindi almeno quanto i sottoinsiemi di N Quanti sono i possibili sottoinsiemi di N?

13 I sottoinsiemi di N Supponiamo per assurdo che i sottoinsiemi di N siano enumerabili Consideriamo la seguente tabella: f … f … fi è la funzione che identifica l’i-esimo insieme

14 Una funzione speciale Costruiamo la seguente funzione: f x0 x1 x2 x3 …
f x0 x1 x2 x3 … dove xi è 1 se l’i-esimo elemento della diagonale è 0, 0 altrimenti. Questa funzione definisce un sottoinsieme di N ma non può apparire nella tabella!!!! Quindi l’ipotesi che le funzioni che definiscono insiemi siano enumerabili non può essere vera

15 Funzioni non calcolabili
Abbiamo dimostrato che un sottoinsieme delle funzioni da N a N non è numerabile Quindi le funzioni sono più dei numeri naturali Ne consegue che esistono funzioni che non sono calcolabili poiché le macchine di Turing sono quanti i numeri naturali

16 Il problema della fermata
Vediamo un esempio di funzione non calcolabile veramente significativo per gli informatici Il problema che ci poniamo è il seguente: esiste una funzione che, dati in ingresso un programma e un input, è in grado di dire se la macchina di Turing con quel programma terminerà la sua esecuzione su quell’Input?

17 Il problema della fermata
Il problema della fermata non ha una risposta ovvia: in fondo se siamo riusciti a programmare l’interprete universale perché non può esistere una tale funzione? Intuizione: come posso verificare la terminazione? Uso l’interprete universale e se termina bene, altrimenti siamo costretti ad aspettare: chissà!

18 Diagonalizziamo? Per dimostrare che non può esistere una tale funzione utilizziamo l’argomento della diagonalizzazione Assurdo: supponiamo che esista tale funzione Q Come la costruiamo la tabella? Poiché le MdT sono numerabili associamo ad ogni riga la macchina di Turing corrispondente Ad ogni colonna associamo tutti i possibili input

19 La tabella La tabella diviene quindi: 1 2 3 4 … 1 y n y y …
1 y n y y … 2 n n y y … All’incrocio (i, j) scriviamo y se la funzione Q dice che la macchina i termina sull’input j, scriviamo n in caso contrario

20 L’argomento Come abbiamo già fatto in precedenza costruiamo la funzione (artificiosa) prendendo i valori della diagonale e scambiando y con n e viceversa: n y … Questa funzione non occorre nella tabella (differisce sempre per l’elemento sulla diagonale) La funzione Q quindi non è in grado di esprimersi su tutte le funzioni: ciò contraddice l’ipotesi

21 Uno sguardo alla funzione
Com’è fatta la funzione che abbiamo utilizzato per trovare la contraddizione? È una funzione che ha in posizione i il valore opposto rispetto al valore Q(i, i) Ma cosa significa Q(i, i)? Q(i, i) vale y se la macchina i con input i termina la sua esecuzione, n altrimenti Quindi F(i) = opposto(Q(i, i)) Per opposto intendiamo che cambia y in n e viceversa

22 Un’altra via per dimostrare
Si suppone per assurdo che esista la funzione Q e si costruisce una funzione F(i) che applica la macchina i a sé stessa: se Q(i, i) indica y allora non termina altrimenti termina Un’altra possibile dimostrazione del fatto che la funzione Q non è calcolabile poggia sulla definizione di F(i)

23 L’assurdo Troviamo quindi un assurdo: cosa vale Q(F, F)?
Supponiamo Q(F, F) = y: non si può verificare poiché F termina solo se Q(F, F) non termina Supponiamo Q(F, F) = n: non si può verificare per la stessa ragione Abbiamo quindi un assurdo che non può derivare se non dal fatto che abbiamo postulato l’esistenza di Q: Q non può esistere!

24 Conclusioni In questa lezione abbiamo visto come esistano limiti al calcolo che non possono essere oltrepassati Questo risultato ci insegna inoltre che i modelli aiutano a comprendere meglio un problema Abbiamo visto poi un importante esempio di uso reale del modello delle Macchine di Turing


Scaricare ppt "Precorsi di Informatica Dott. Antonio Cisternino Settembre 2003"

Presentazioni simili


Annunci Google