Upload
annalisa-lisa
View
217
Download
0
Embed Size (px)
Citation preview
Funzioni calcolabiliFunzioni calcolabili
Precorsi di InformaticaPrecorsi di InformaticaDott. Antonio CisterninoDott. Antonio Cisternino
23-25 Settembre 200323-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
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
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}
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
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
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
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!!!!!
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
|{|{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!!!
|{|{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
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?
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
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
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
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?
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à!
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
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
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
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
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)
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!
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