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

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

Embed Size (px)

Citation preview

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

Funzioni calcolabiliFunzioni calcolabili

Precorsi di InformaticaPrecorsi di InformaticaDott. Antonio CisterninoDott. Antonio Cisternino

23-25 Settembre 200323-25 Settembre 2003

Page 2: Funzioni calcolabili Precorsi di Informatica Dott. Antonio Cisternino 23-25 Settembre 2003

Scambiamo 0 e 1Scambiamo 0 e 1 Le regole per la Macchina di Turing Le regole per la Macchina di Turing

Universale sono due e sono analoghe a Universale sono due e sono analoghe a quelle viste nella prima lezione:quelle viste nella prima lezione:

B S0S11 S1S01 IB S0S11 S1S01 I

Page 3: Funzioni calcolabili Precorsi di Informatica Dott. Antonio Cisternino 23-25 Settembre 2003

Numeriamo le MdTNumeriamo le MdT Con la Macchina di Turing Universale Con la Macchina di Turing Universale

abbiamo imparato ad esprimere il abbiamo imparato ad esprimere il programma di una macchina come una programma di una macchina come una stringastringa

Domanda: è possibile associare un Domanda: è possibile associare un numero in modo univoco ad ogni numero in modo univoco ad ogni Macchina possibile?Macchina possibile?

Risposta: è possibile associare un Risposta: è possibile associare un numero naturale ad ogni macchinanumero naturale ad ogni macchina

Page 4: Funzioni calcolabili Precorsi di Informatica Dott. Antonio Cisternino 23-25 Settembre 2003

Associamo cifre ai simboliAssociamo cifre ai simboli Lo schema di codifica che vedremo è Lo schema di codifica che vedremo è

uno tra i tantiuno tra i tanti L’idea è quella di trasformare un L’idea è quella di trasformare un

programma in cifre e quindi associare programma in cifre e quindi associare alla macchina il numero così ottenutoalla macchina il numero così ottenuto

I simboli necessari a definire le regole (e I simboli necessari a definire le regole (e quindi il programma) sono: {S, 0, 1, N}quindi il programma) sono: {S, 0, 1, N}

Associamo quindi i simboli a cifre: {S Associamo quindi i simboli a cifre: {S 2, 0 2, 0 0, 1 0, 1 1, N 1, N 3, B 3, B 4, I 4, I 5} 5}

Page 5: Funzioni calcolabili Precorsi di Informatica Dott. Antonio Cisternino 23-25 Settembre 2003

EsempioEsempio Associamo quindi un numero al Associamo quindi un numero al

programma visto all’inizio secondo la programma visto all’inizio secondo la regola stabilita:regola stabilita:

B S0S11 S1S01 I = 430311313015B S0S11 S1S01 I = 430311313015

Dato il numero siamo in grado di Dato il numero siamo in grado di ottenere la macchina? Certamente: ottenere la macchina? Certamente: basta usare l’associazione al contrariobasta usare l’associazione al contrario

Page 6: Funzioni calcolabili Precorsi di Informatica Dott. Antonio Cisternino 23-25 Settembre 2003

Codifichiamo l’inputCodifichiamo l’input Possiamo procedere in modo analogo per Possiamo procedere in modo analogo per

associare un numero all’input della associare un numero all’input della nostra macchina: {0 nostra macchina: {0 0, 1 0, 1 1, T 1, T 2, 2, N N 3} 3}

Esempio:Esempio:T01001001N = 2010010013T01001001N = 2010010013

Ancora una volta possiamo Ancora una volta possiamo riottenere l’input dal numeroriottenere l’input dal numero

Page 7: Funzioni calcolabili Precorsi di Informatica Dott. Antonio Cisternino 23-25 Settembre 2003

OsservazioniOsservazioni Siamo in grado di ottenere, data una Siamo in grado di ottenere, data una

macchina, un numero. Sappiamo anche macchina, un numero. Sappiamo anche tornare indietro a partire dal numerotornare indietro a partire dal numero

È sempre possibile dato un numero È sempre possibile dato un numero ottenere la macchina corrispondente?ottenere la macchina corrispondente?

La risposta è La risposta è nono, nella codifica che , nella codifica che abbiamo usato esistono numeri a cui abbiamo usato esistono numeri a cui non è possibile associare una macchinanon è possibile associare una macchina

Lo stesso si può dire per l’inputLo stesso si può dire per l’input

Page 8: Funzioni calcolabili Precorsi di Informatica Dott. Antonio Cisternino 23-25 Settembre 2003

GoëdelizzazioneGoëdelizzazione È possibile realizzare codifiche che È possibile realizzare codifiche che

associano ad ogni numero una associano ad ogni numero una macchina o un input sempre invertibilimacchina o un input sempre invertibili

Il procedimento di enumerare tutte le Il procedimento di enumerare tutte le Macchine di Turing è noto col termine di Macchine di Turing è noto col termine di GöedelizzazioneGöedelizzazione

ATTENZIONE!!!! Le macchine di Turing ATTENZIONE!!!! Le macchine di Turing sono tante quante i numeri naturali: sono tante quante i numeri naturali: sappiamo ottenere una macchina dato sappiamo ottenere una macchina dato un numero e viceversa!!!!!un numero e viceversa!!!!!

Page 9: Funzioni calcolabili Precorsi di Informatica Dott. Antonio Cisternino 23-25 Settembre 2003

La tesi di ChurchLa tesi di Church È giunto il momento di ricordare la tesi È giunto il momento di ricordare la tesi

di Churchdi Church La tesi di Church/Turing è la seguente: La tesi di Church/Turing è la seguente:

se una funzione è calcolabile secondo se una funzione è calcolabile secondo un un qualsiasiqualsiasi formalismo esistente formalismo esistente e none non allora lo è anche con una macchina di allora lo è anche con una macchina di TuringTuring

Le funzioni calcolabili quindi coincidono Le funzioni calcolabili quindi coincidono (secondo questa tesi) con le macchine (secondo questa tesi) con le macchine di Turingdi Turing

Page 10: Funzioni calcolabili Precorsi di Informatica Dott. Antonio Cisternino 23-25 Settembre 2003

|{|{f f | | f f è calcolabile}|???è calcolabile}|??? Quante sono le funzioni calcolabili?Quante sono le funzioni calcolabili? Sono di più dei numeri naturali? No, Sono di più dei numeri naturali? No,

visto che abbiamo associato in modo visto che abbiamo associato in modo univoco numeri e macchineunivoco numeri e macchine

Sono più dei numeri interi o razionali? Sono più dei numeri interi o razionali? No: entrambi gli insiemi sono No: entrambi gli insiemi sono enumerabilienumerabili

Sono più dei numeri reali? No!!! I Sono più dei numeri reali? No!!! I numeri reali sono più di quelli naturali!!!numeri reali sono più di quelli naturali!!!

Page 11: Funzioni calcolabili Precorsi di Informatica Dott. Antonio Cisternino 23-25 Settembre 2003

|{|{ff | | f:Nf:NNN}|???}|??? Quante sono le funzioni da numeri Quante sono le funzioni da numeri

naturali in numeri naturalinaturali in numeri naturali Sono enumerabili? NO!!!Sono enumerabili? NO!!! Come possiamo dimostrare che le Come possiamo dimostrare che le

funzioni da naturali in naturali non sono funzioni da naturali in naturali non sono enumerabili (non possono essere messe enumerabili (non possono essere messe in corrispondenza con i numeri interi)?in corrispondenza con i numeri interi)?

Si procede con un argomento proposto Si procede con un argomento proposto dal Matematico G. Cantor: la dal Matematico G. Cantor: la diagonalizzazionediagonalizzazione

Page 12: Funzioni calcolabili Precorsi di Informatica Dott. Antonio Cisternino 23-25 Settembre 2003

Considerazioni preliminariConsiderazioni preliminari Consideriamo i possibili sottoinsiemi dei Consideriamo i possibili sottoinsiemi dei

numeri naturali: {0}, {0, 1}, {2,5,7}…numeri naturali: {0}, {0, 1}, {2,5,7}… Per ogni sottoinsieme S di N possiamo Per ogni sottoinsieme S di N possiamo

costruire una funzione che associa ad costruire una funzione che associa ad ogni elemento di N 1 se questo ogni elemento di N 1 se questo appartiene ad S, 0 altrimentiappartiene ad S, 0 altrimenti

Le funzioni da N in N sono quindi Le funzioni da N in N sono quindi almeno quanto i sottoinsiemi di Nalmeno quanto i sottoinsiemi di N

Quanti sono i possibili sottoinsiemi di N?Quanti sono i possibili sottoinsiemi di N?

Page 13: Funzioni calcolabili Precorsi di Informatica Dott. Antonio Cisternino 23-25 Settembre 2003

I sottoinsiemi di NI sottoinsiemi di N Supponiamo per assurdo che i sottoinsiemi Supponiamo per assurdo che i sottoinsiemi

di di NN siano enumerabili siano enumerabili Consideriamo la seguente tabella:Consideriamo la seguente tabella:

11 22 33 44 ……

ff00 00 11 11 00 ……

ff11 11 00 00 00 …………

ffii è la funzione che identifica l’è la funzione che identifica l’ii-esimo -esimo insiemeinsieme

Page 14: Funzioni calcolabili Precorsi di Informatica Dott. Antonio Cisternino 23-25 Settembre 2003

Una funzione specialeUna funzione speciale Costruiamo la seguente funzione:Costruiamo la seguente funzione:

11 22 33 44 ……

f f xx00 xx11 xx22 xx33 ……

dove dove xxii è 1 se l’è 1 se l’ii-esimo elemento della -esimo elemento della diagonale è 0, 0 altrimenti.diagonale è 0, 0 altrimenti.

Questa funzione definisce un sottoinsieme Questa funzione definisce un sottoinsieme di di NN ma non può apparire nella tabella!!!!ma non può apparire nella tabella!!!!

Quindi l’ipotesi che le funzioni che Quindi l’ipotesi che le funzioni che definiscono insiemi siano enumerabili non definiscono insiemi siano enumerabili non può essere verapuò essere vera

Page 15: Funzioni calcolabili Precorsi di Informatica Dott. Antonio Cisternino 23-25 Settembre 2003

Funzioni non calcolabiliFunzioni non calcolabili Abbiamo dimostrato che un Abbiamo dimostrato che un

sottoinsieme delle funzioni da sottoinsieme delle funzioni da NN a a NN non non è numerabileè numerabile

Quindi le funzioni sono più dei numeri Quindi le funzioni sono più dei numeri naturalinaturali

Ne consegue che Ne consegue che esistono funzioni che esistono funzioni che non sono calcolabilinon sono calcolabili poiché le macchine poiché le macchine di Turing sono quanti i numeri naturalidi Turing sono quanti i numeri naturali

Page 16: Funzioni calcolabili Precorsi di Informatica Dott. Antonio Cisternino 23-25 Settembre 2003

Il problema della fermataIl problema della fermata Vediamo un esempio di funzione non Vediamo un esempio di funzione non

calcolabile veramente significativo per calcolabile veramente significativo per gli informaticigli informatici

Il problema che ci poniamo è il Il problema che ci poniamo è il seguente: seguente: esiste una funzione che, dati esiste una funzione che, dati in ingresso un programma e un input, è in ingresso un programma e un input, è in grado di dire se la macchina di Turing in grado di dire se la macchina di Turing con quel programma terminerà la sua con quel programma terminerà la sua esecuzione su quell’Input?esecuzione su quell’Input?

Page 17: Funzioni calcolabili Precorsi di Informatica Dott. Antonio Cisternino 23-25 Settembre 2003

Il problema della fermataIl problema della fermata Il problema della fermata non ha una Il problema della fermata non ha una

risposta ovvia: in fondo se siamo riusciti risposta ovvia: in fondo se siamo riusciti a programmare l’interprete universale a programmare l’interprete universale perché non può esistere una tale perché non può esistere una tale funzione?funzione?

Intuizione: come posso verificare la Intuizione: come posso verificare la terminazione? Uso l’interprete terminazione? Uso l’interprete universale e se termina bene, altrimenti universale e se termina bene, altrimenti siamo costretti ad aspettare: chissà!siamo costretti ad aspettare: chissà!

Page 18: Funzioni calcolabili Precorsi di Informatica Dott. Antonio Cisternino 23-25 Settembre 2003

Diagonalizziamo?Diagonalizziamo? Per dimostrare che non può esistere una Per dimostrare che non può esistere una

tale funzione utilizziamo l’argomento della tale funzione utilizziamo l’argomento della diagonalizzazionediagonalizzazione

Assurdo: supponiamo che esista tale Assurdo: supponiamo che esista tale funzione Qfunzione Q

Come la costruiamo la tabella?Come la costruiamo la tabella? Poiché le MdT sono numerabili associamo ad Poiché le MdT sono numerabili associamo ad

ogni riga la macchina di Turing ogni riga la macchina di Turing corrispondentecorrispondente

Ad ogni colonna associamo tutti i possibili Ad ogni colonna associamo tutti i possibili inputinput

Page 19: Funzioni calcolabili Precorsi di Informatica Dott. Antonio Cisternino 23-25 Settembre 2003

La tabellaLa tabella La tabella diviene quindi:La tabella diviene quindi:

11 22 33 44 ……

11 yy nn yy yy ……

22 nn nn yy yy …… All’incrocio (All’incrocio (ii, , jj) scriviamo ) scriviamo yy se la se la

funzione Q dice che la macchina funzione Q dice che la macchina ii termina sull’input termina sull’input jj, scriviamo , scriviamo nn in caso in caso contrariocontrario

Page 20: Funzioni calcolabili Precorsi di Informatica Dott. Antonio Cisternino 23-25 Settembre 2003

L’argomentoL’argomento Come abbiamo già fatto in precedenza Come abbiamo già fatto in precedenza

costruiamo la funzione (artificiosa) costruiamo la funzione (artificiosa) prendendo i valori della diagonale e prendendo i valori della diagonale e scambiando scambiando yy con con nn e viceversa: e viceversa:nn yy … …

Questa funzione non occorre nella tabella Questa funzione non occorre nella tabella (differisce sempre per l’elemento sulla (differisce sempre per l’elemento sulla diagonale)diagonale)

La funzione Q quindi non è in grado di La funzione Q quindi non è in grado di esprimersi su tutte le funzioni: ciò esprimersi su tutte le funzioni: ciò contraddice l’ipotesicontraddice l’ipotesi

Page 21: Funzioni calcolabili Precorsi di Informatica Dott. Antonio Cisternino 23-25 Settembre 2003

Uno sguardo alla funzioneUno sguardo alla funzione Com’è fatta la funzione che abbiamo Com’è fatta la funzione che abbiamo

utilizzato per trovare la contraddizione?utilizzato per trovare la contraddizione? È una funzione che ha in posizione È una funzione che ha in posizione ii il il

valore opposto rispetto al valore valore opposto rispetto al valore Q(i, i)Q(i, i) Ma cosa significa Ma cosa significa Q(i, i)Q(i, i)?? Q(i, i)Q(i, i) vale vale yy se la macchina se la macchina ii con input con input ii

termina la sua esecuzione, termina la sua esecuzione, n n altrimentialtrimenti Quindi Quindi F(i) = opposto(Q(i, i))F(i) = opposto(Q(i, i)) Per Per opposto opposto intendiamo che cambia intendiamo che cambia yy in in

nn e viceversa e viceversa

Page 22: Funzioni calcolabili Precorsi di Informatica Dott. Antonio Cisternino 23-25 Settembre 2003

Un’altra via per dimostrareUn’altra via per dimostrare Si suppone per assurdo che esista la Si suppone per assurdo che esista la

funzione funzione QQ e si costruisce una funzione e si costruisce una funzione F(i)F(i) che applica la macchina che applica la macchina ii a sé a sé stessa: se stessa: se Q(i, i)Q(i, i) indica indica yy allora non allora non termina altrimenti terminatermina altrimenti termina

Un’altra possibile dimostrazione del Un’altra possibile dimostrazione del fatto che la funzione fatto che la funzione QQ non è calcolabile non è calcolabile poggia sulla definizione di poggia sulla definizione di F(i)F(i)

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

L’assurdoL’assurdo Troviamo quindi un assurdo: cosa vale Troviamo quindi un assurdo: cosa vale Q(F, Q(F,

F)F)?? Supponiamo Supponiamo Q(F, F) = yQ(F, F) = y: non si può : non si può

verificare poiché verificare poiché FF termina solo se termina solo se Q(F, F)Q(F, F) non terminanon termina

Supponiamo Supponiamo Q(F, F) = nQ(F, F) = n: non si può : non si può verificare per la stessa ragioneverificare per la stessa ragione

Abbiamo quindi un assurdo che non può Abbiamo quindi un assurdo che non può derivare se non dal fatto che abbiamo derivare se non dal fatto che abbiamo postulato l’esistenza di postulato l’esistenza di QQ: : Q non può Q non può esistere!esistere!

Page 24: Funzioni calcolabili Precorsi di Informatica Dott. Antonio Cisternino 23-25 Settembre 2003

ConclusioniConclusioni In questa lezione abbiamo visto come In questa lezione abbiamo visto come

esistano limiti al calcolo che non esistano limiti al calcolo che non possono essere oltrepassatipossono essere oltrepassati

Questo risultato ci insegna inoltre che i Questo risultato ci insegna inoltre che i modelli aiutano a comprendere meglio modelli aiutano a comprendere meglio un problemaun problema

Abbiamo visto poi un importante Abbiamo visto poi un importante esempio di uso esempio di uso realereale del modello delle del modello delle Macchine di TuringMacchine di Turing