La tesi di Church-Turing e l`indecidibilità l indecidibilità

La tesi di Church-Turing e
l indecidibilità
l’indecidibilità
A t i e algoritmi
Automi
l
it i
`
`
`
LLa domanda
d
d ffondamentale
d
l della
d ll teoria
i d
della
ll
calcolabilità è:
Quali risultati possiamo e non possiamo ottenere
mediante algoritmi?
Per affrontare questa domanda dovremo basarci su
caratterizzazioni
i
i i precise,
i non intuitive,
i
i i delle
d ll nozioni
i i
di algoritmo e di sistema (macchina) che esegue
algoritmi.
La tesi di Church
Church-Turing
Turing fornisce elementi per una
caratterizzazione precisa della nozione di algoritmo
T i di Ch
Tesi
Church-Turing
hT i
Ognii ffunzione
O
i
calcolabile
l l bil mediante
di
un
algoritmo è calcolabile da una macchina di
Turing
funzione
calcolabile
mediante un
algoritmo
(nozione intuitiva)
funzione
calcolabile
l l bil d
da
MdT
(nozione precisa)
T i di Ch
Tesi
Church-Turing:
hT i
conseguenza!!
`
`
Conseguenza logica
C
l i d
della
ll T
Tesi:i
NON esiste una MdT per calcolare la funzione f?
Allora
NON esiste alcun algoritmo per calcolare la funzione f!
Quindi, non può esistere alcun calcolatore (presente,
passato, futuro)
f
) in
i grado
d di calcolare
l l
quella
ll ffunzione!
i
!
T i di Ch
Tesi
Church-Turing:
hT i
conseguenza!!
`
Conseguenza logica
C
l i d
della
ll T
Tesi:i
NON esiste una MdT per calcolare la funzione f?
Allora
NON esiste alcun algoritmo per calcolare la funzione f!
`
Come possiamo sapere se non esiste una MdT che
calcola la funzione f?
`
Avere una definizione formale della nozione di MdT ci
permette, in alcuni casi, di dimostrarlo
`
Nessuna dimostrazione di questo tipo sarebbe stata
possibile in mancanza di adeguata formalizzazione
T i
Turing
e la
l storia
t i dei
d i calcolatori
l l t i
`
Turing ha permesso lo sviluppo della teoria della
calcolabilità,
ca
co ab tà, ovve
ovvero
o della
e a disciplina
sc p a che
c e si
s occupa di
capire quali problemi possano essere risolti
algoritmicamente, proprio perché ha fornito elementi
per sostituire la nozione intuitiva di “algoritmo” con
quella ben più precisa,
quella,
precisa di “programma
programma per MdT”
MdT
L’analisi di Turing ha
T i
Turing
e la
l storia
t i permesso
dei
d i calcolatori
l di l t i
identificare problemi
Z1 (1938)
non risolvibili da MdT
e quindi,
quindi per la Tesi
Tesi,
non risolvibili da
alcun
l
sistema
i t
algoritmico
PC odierno
di
NASA Columbia
Supercomputer
(2004)
Colossus (1943)
Commodore 64
(1986)
ENIAC (1945)
EDVAC (1945)
T i di Church-Turing
Tesi
Ch
hT i
`
`
Questa
Q
t affermazione
ff
i
èd
detta
tt tesi,
t i e non teorema,
t
perché
hé
intrinsecamente indimostrabile
`
Dimostrare questa affermazione richiederebbe una definizione formale
dei termini in gioco
`
Abbiamo a disposizione una definizione formale dell’espressione
“calcolabile mediante un programma per MdT” (è stata fornita da Turing
stesso)
`
Il significato dell’espressione
dell espressione “calcolabile
calcolabile algoritmicamente
algoritmicamente” è
intrinsecamente intuitivo
La tesi di Church-Turing
Church Turing (tesi CT da ora in poi) fornisce
proprio elementi per una definizione formale della nozione
di “calcolabile
calcolabile algoritmicamente”
algoritmicamente
V
Verso
lle funzioni
f
i i non Turing-calcolabili
T i
l l bili
`
È stato dimostrato
di
t t che
h esistono
i
ffunzioni
i i non TuringT i
calcolabili
`
In base alla tesi CT, si conclude che esistono funzioni non
algoritmicamente calcolabili
`
Una di q
queste funzioni è relativa al cosiddetto
problema della fermata
`
Il diagramma
di
della
d ll diapositiva
di
i i successiva
i illustra
ill
lle
relazioni tra tesi CT ed esistenza di funzioni non
calcolabili
V
Verso
lle funzioni
f
i i non Turing-calcolabili
T i
l l bili
Tesi di Church-Turing
algoritmi
(nozione
i t iti )
intuitiva)
problema della
fermata
programmii
per MdT
(
(nozione
precisa)
funzioni
Turing
Turingcalcolabili
esistenza di funzioni non
Turing-calcolabili
funzioni
Esistono funzioni non Turingcalcolabili?
l l bili?
`
`
TEOREMA: EEsistono
TEOREMA
i
ffunzioni
i i non T
Turing-calcolabili
i
l l bili
A questo risultato si arriva dimostrando che l’insieme
delle MdT è più piccolo dell’insieme delle funzioni
ffunzioni
i i
Turingcalcolabili
funzioni
L’insieme delle MdT è più piccolo
d ll’i i
dell’insieme
delle
d ll ffunzioni
i i
La frase “l’insieme delle MdT è più piccolo dell’insieme
delle funzioni” solleva un PROBLEMA:
` L’insieme delle MdT è finito o infinito?
è INFINITO
`
L’insieme delle funzioni è finito o infinito?
è INFINITO
`
Com è possibile che un insieme infinito sia più piccolo
Com’è
di un altro insieme infinito?
G
Georg
Cantor
C t (1845-1918)
(1845 1918)
Cantor ha dimostrato che
un insieme infinito può
essere più piccolo di un
altro insieme infinito:
L’insieme dei numeri naturali
N = {0,1,2,3,…} è
infinito e più piccolo
dell’insieme dei numeri reali
Il tteorema di Cantor
C t
`
Il teorema di Cantor
C
gioca
i
un ruolo
l importante
i
nell
dimostrare l’esistenza di funzioni non Turing-calcolabili
DIMOSTRAZIONE PER ASSURDO del teorema di Cantor
`
Supponiamo che i numeri naturali siano tanti quanti
sono i numeri reali
`
Da q
questa affermazione deriviamo una contraddizione
`
Quindi, siamo costretti a negare l’assunzione iniziale
Teorema di Cantor: dimostrazione per
assurdo
d
`
`
Supponiamo che i numeri naturali siano tanti quanti i numeri reali
Allora, è possibile mettere in corrispondenza ogni numero
naturale con un numero reale
numeri naturali
1
numeri reali
1,02128384…
Teorema di Cantor: dimostrazione per
assurdo
d
`
`
Supponiamo che i numeri naturali siano tanti quanti i numeri reali
Allora, è possibile mettere in corrispondenza ogni numero
naturale con un numero reale
numeri naturali
1
2
numeri reali
1,02128384…
1,12528284…
Teorema di Cantor: dimostrazione per
assurdo
d
`
`
Supponiamo che i numeri naturali siano tanti quanti i numeri reali
Allora, è possibile mettere in corrispondenza ogni numero
naturale con un numero reale
numeri naturali
1
2
3
numeri reali
1,02128384…
1,12528284…
2 12528383
2,12528383…
Teorema di Cantor: dimostrazione per
assurdo
d
`
`
Supponiamo che i numeri naturali siano tanti quanti i numeri reali
Allora, è possibile mettere in corrispondenza ogni numero
naturale con un numero reale
numeri naturali
1
2
3
4
numeri reali
1,02128384…
1,12528284…
2 12528383
2,12528383…
2,39374532…
Teorema di Cantor: dimostrazione per
assurdo
d
`
`
Supponiamo che i numeri naturali siano tanti quanti i numeri reali
Allora, è possibile mettere in corrispondenza ogni numero
naturale con un numero reale
numeri naturali
1
2
3
4
5
numeri reali
1,02128384…
1,12528284…
2 12528383
2,12528383…
2,39374532…
2,56746383…
Teorema di Cantor: dimostrazione per
assurdo
d
`
`
Supponiamo che i numeri naturali siano tanti quanti i numeri reali
Allora, è possibile mettere in corrispondenza ogni numero
naturale con un numero reale…
reale e così
c sì via
ia all’infinit
all’infinito
numeri naturali
1
2
3
4
5
6
…
numeri reali
1,02128384…
1,12528284…
2 12528383
2,12528383…
2,39374532…
2,56746383…
3 27546453
3,27546453…
…
Teorema di Cantor: dimostrazione per
assurdo
d
`
Per ognii numero naturale
P
l n, cambiamo
bi
a piacere
i
l’l’nesimo decimale del numero reale
numeri naturali
1
2
3
4
5
6
…
numeri reali
1,02128384…
1,12528284…
2 12528383
2,12528383…
2,39374532…
2,56746383…
3 27546453
3,27546453…
…
Teorema di Cantor: dimostrazione per
assurdo
d
`
Per ognii numero naturale
P
l n, cambiamo
bi
a piacere
i
l’l’nesimo decimale del numero reale
numeri naturali
1
2
3
4
5
6
…
numeri reali
1,12128384…
1,12528284…
2 12528383
2,12528383…
2,39374532…
2,56746383…
3 27546453
3,27546453…
…
Teorema di Cantor: dimostrazione per
assurdo
d
`
Per ognii numero naturale
P
l n, cambiamo
bi
a piacere
i
l’l’nesimo decimale del numero reale
numeri naturali
1
2
3
4
5
6
…
numeri reali
1,12128384…
1,17528284…
2 12528383
2,12528383…
2,39374532…
2,56746383…
3 27546453
3,27546453…
…
Teorema di Cantor: dimostrazione per
assurdo
d
`
Per ognii numero naturale
P
l n, cambiamo
bi
a piacere
i
l’l’nesimo decimale del numero reale
numeri naturali
1
2
3
4
5
6
…
numeri reali
1,12128384…
1,17528284…
2 12328383
2,12328383…
2,39374532…
2,56746383…
3 27546453
3,27546453…
…
Teorema di Cantor: dimostrazione per
assurdo
d
`
Per ognii numero naturale
P
l n, cambiamo
bi
a piacere
i
l’l’nesimo decimale del numero reale
numeri naturali
1
2
3
4
5
6
…
numeri reali
1,12128384…
1,17528284…
2 12328383
2,12328383…
2,39394532…
2,56746383…
3 27546453
3,27546453…
…
Teorema di Cantor: dimostrazione per
assurdo
d
`
Per ognii numero naturale
P
l n, cambiamo
bi
a piacere
i
l’l’nesimo decimale del numero reale
numeri naturali
1
2
3
4
5
6
…
numeri reali
1,12128384…
1,17528284…
2 12328383
2,12328383…
2,39394532…
2,56741383…
3 27546453
3,27546453…
…
Teorema di Cantor: dimostrazione per
assurdo
d
`
Per ognii numero naturale
P
l n, cambiamo
bi
a piacere
i
l’l’nesimo decimale del numero reale
numeri naturali
1
2
3
4
5
6
…
numeri reali
1,12128384…
1,17528284…
2 12328383
2,12328383…
2,39394532…
2,56741383…
3 27546353
3,27546353…
…
Teorema di Cantor: dimostrazione per
assurdo
d
`
F
Formiamo
i
un numero reale
l mettendo
tt d insieme
i i
i decimali
d i li “rossi”:
“
i”
1,173913…
,
numeri naturali
1
2
3
4
5
6
…
numeri reali
1,12128384…
1,17528284…
2 12328383
2,12328383…
2,39394532…
2,56741383…
3 27546353
3,27546353…
…
Teorema di Cantor: dimostrazione per
assurdo
d
1,173913…
`
`
`
Questo è un numero reale; quindi, in base all’assunzione
all assunzione di
partenza, dovrebbe essere compreso nella tabella iniziale (prima
della modifica dei decimali) e associato a un naturale! Ma può
essere così?
NO! Perché è diverso da OGNI numero reale in quella lista per
UNA cifra decimale
QUINDI quel numero non figura nella colonna “numeri
QUINDI,
numeri reali”
reali , e
QUINDI non sta in corrispondenza con nessun numero naturale
numeri naturali
1
2
numeri reali
1,02128384…
1,12528284…
Il tteorema di Cantor:
C t
riepilogo
i il
Abbiamo svolto i seguenti
g
passi:
p
1. Assumiamo che i numeri reali siano tanti quanti i numeri
naturali
2 Q
2.
Quindi,
i di possiamo
i
ffar corrispondere
i
d
un numero reale
l a ognii
numero naturale
3. Identifichiamo un numero reale che non figura in quella
corrispondenza
4. Quindi, l’assunzione
l assunzione di partenza è da gettare: L
L’insieme
insieme
dei numeri reali è più grande dell’insieme dei
numeri naturali!
E i t
Esistono
ffunzioni
i i non Turing-calcolabili
T i
l l bili
Ora è possibile dimostrare che
Ora,
`
L insieme delle MdT è grande quanto ll’insieme
L’insieme
insieme dei
numeri naturali
`
l’insieme delle funzioni è grande quanto l’insieme dei
numeri reali
QUINDI ((in base al teorema di Cantor))
Q
Esistono funzioni che non sono
Turing-calcolabili!
( di il di
(vedi
diagramma ill
illustrativo
i alla
ll di
diapositiva
i i successiva)
i )
F
Funzioni
i i non Turing-calcolabili
T i
l l bili
programmi
per MdT
funzioni
(funzioni
(f
i iT
Turingi
calcolabili)
insieme dei
numeri
naturali
funzioni NON
u g ca co ab
Turing-calcolabili
F
Funzioni
i i non Turing-calcolabili
T i
l l bili
`
Vedremo
V
d
ora una funzione
f
non TuringT i
g, 1936))
calcolabile ((Turing,
problema della
fermata
programmi
per MdT
(funzioni
Turing
Turingcalcolabili)
funzioni
Il problema
bl
della
d ll fermata
f
t
`
Esiste un algoritmo (o una MdT,
MdT in base alla tesi CT)
per decidere se una qualsiasi MdT m si fermerà su un
qualsiasi
l i i iingresso w??
ingresso qualsiasi
2
#
$
a
%
3
^
MdT m
ingresso
MdT U
uscita
La MdT m si ferma/non si
ferma con l’ingresso w
Il problema
bl
della
d ll fermata
f
t
`
`
NOTA: esistono MdT per decidere se particolari MdT si
fermano su particolari ingressi
P i
Possiamo
studiare
t di
il comportamento
t
t della
d ll macchina
hi
“somma” e capire che si fermerà su qualsiasi ingresso
ingresso qualsiasi
2
#
$
a
%
3
^
MdT m
ingresso
MdT U
uscita
La MdT m si ferma/non si
ferma con l’ingresso w
Il problema
bl
della
d ll fermata
f
t
`
Ma noi vogliamo una MdT che sia in grado di decidere se
una qualsiasi MdT m si fermerà su un qualsiasi
ingresso w!
ingresso qualsiasi
2
#
$
a
%
3
^
MdT m
ingresso
MdT U
uscita
La MdT m si ferma/non si
ferma con l’ingresso w
P
Parentesi
t i
`
Il problema della fermata è analogo a molti problemi
dell’informatica odierna
`
Verifica di correttezza: valutare algoritmicamente se
g effettivamente il compito
p per
p
un certo software svolge
cui è stato progettato
`
Il problema in questo caso è quello di scrivere un
software che controlli il funzionamento di un altro
software
`
Pensate all
all’importanza
importanza della verifica di correttezza in
relazione ai software di controllo aerei o di diagnosi
medica!
di !
A
Ancor
prima
i
di d
dare una risposta…
i
t
`
`
Questo problema
Q
bl
sii bbasa sulla
ll capacità
i à di fornire
f
i una
qualche descrizione della MdT m alla MdT u!
Come fare?
ingresso qualsiasi
2
#
$
a
%
3
^
MdT m
ingresso
MdT U
uscita
La MdT m si ferma/non si
ferma con l’ingresso w
Rappresentazione di una MdT sul
nastro
t di un’altra
’ lt MdT
`
È possibile rappresentare un automa finito o un
automa
t
a pila
il ((e il loro
l
iingresso)) sull nastro
t di una
MdT
`
Mediante questo tipo di rappresentazione è possibile
costruire una MdT che simuli il comportamento di un
automa finito o di un automa a pila!
`
Come rappresentare una MdT, e il suo
ingresso sul nastro di un’altra MdT?
ingresso,
Rappresentazione di una MdT sul
nastro
t di un’altra
’ lt MdT
`
`
Possiamo
P
i
rappresentare le
l quintuple
i
l di una MdT sull
nastro di una MdT scegliendo un opportuno alfabeto
e sistema
i
di codifica!
difi !
Ad esempio,
p la qquintupla
p q1 0 Æ 1 D q2, interpretata
p
come
“se sei nello stato q1 e leggi il simbolo 0, allora scrivi 1, vai
pp
a destra,, e assumi lo stato q2”,, ppuò essere rappresentata
nel modo seguente:
1 0 1 D 2
`
(supponendo di interpretare il primo e l’ultimo simbolo
come rappresentazioni del numero dello stato)
Rappresentazione di una MdT sul
nastro
t di un’altra
’ lt MdT
Quindi,
Q
i di per costruire
i una MdT U che
h contenga una
codifica della MdT M:
1. codifichiamo sul nastro di U l’insieme delle istruzioni di
p
da un simbolo speciale
p
M, separate
2. poi inseriamo, di seguito, l’ingresso di M
`
MdT che codifica M e il suo ingresso
insieme di istruzioni di M
ingresso di M
L macchina
La
hi
universale
i
l
`
È possibile costruire una MdT U che simuli il
p
di una qqualsiasi MdT M ((sulla base di una
comportamento
codifica di M)
`
Questa macchina si chiama macchina universale
L macchina
La
hi
universale
i
l
Ingresso qualsiasi w
1
I
0
1
1
1
codifica sul nastro della MdT M
1
1
0
0
0
1
MdT
(che chiamiamo
universale)
uscita che avrebbe prodotto M se
avesse avuto w come ingresso
1
1
1
1
1
0
0
0
0
L macchina
La
hi
universale
i
l
`
L MdT universale
La
i
l U,
U con ingresso
i
w e lla codifica
difi di M
M,
`
restituisce l’uscita che avrebbe prodotto M con ingresso w, se M si
ferma
`
non si ferma, se M non si ferma sull’ingresso w
`
È importante notare che la macchina universale non è altro
che una MdT opportunamente programmata.
programmata Così come è
possibile costruire una MdT che calcoli la funzione “somma”, è
possibile costruire una macchina (la macchina universale,
appunto) che calcoli la funzione “simulazione della MdT M su
ingresso
g
w”,, dove M e w sono rappresentati
pp
sul suo nastro.
`
Per questo motivo, U può calcolare qualsiasi
funzione Turing-calcolabile!
La MdT universale è una macchina di
T i
Turing
opportunamente
t
t programmata!
t !
MdT UNIVERSALE:
simula qualsiasi altra
MdT
MdT che calcola la
SOMMA
MdT che ORDINA
ELEMENTI IN UN
INSIEME
MdT che CONDUCE
UNA PARTITA A
SCACCHI
MdT che calcola la
SOTTRAZIONE
T
Torniamo
i
all problema
bl
della
d ll fermata
f
t
`
L MdT universale
La
i
l U,
U con ingresso
i
w e la
l codifica
difi di M,
M
`
Restituisce l’uscita che avrebbe prodotto M con ingresso w, se
M si ferma
`
non si ferma
ferma, se M non si ferma sull’ingresso
sull ingresso w
`
PROBLEMA DELLA FERMATA.
FERMATA È possibile
ibil costruire
t i
una macchina universale che decida (fermandosi in
qualche
l h stato)
t t ) se una qualsiasi
l i i M sii fferma o no su un
qualsiasi ingresso w?
`
Si può dimostrare che NON ESISTE una MdT che
risolva questo problema
Macchine universali e problema della
f
fermata
t
`
Possiamo
P
ssiam ccostruire
str ire una
na MdT U che restituisca
restit isca in uscita
scita
ciò che un’altra MdT m produce (fermandosi)
sull’ingresso
ll’i
w
MA
`
NON possiamo costruire una MdT che decida se una
qualsiasi m si fermerà o no su un qualsiasi ingresso w
C
Conseguenze
del
d l teorema
t
della
d ll fermata
f
t
`
Le MdT (quindi i sistemi algoritmici, se accettiamo la tesi
di Church-Turing)
Church Turing) sono intrinsecamente limitate: non
possiamo costruire una MdT che decida se una qualsiasi
altra
lt MdT sii ferma
f
o no su un qualsiasi
l i i ingresso
i
w
Att
Attenzione!
i
!
Evitare l’errore
l errore comune di enunciare il problema della fermata
nel modo seguente:
“nessuna MdT può decidere se un’altra MdT m si ferma
sull’ingresso w”
`
Questo non è il problema della fermata! Infatti, possiamo
decidere algoritmicamente se
se, ad esempio
esempio, la MdT che esegue
la somma si fermerà sull’ingresso 110111!
`
Il problema della fermata è relativo all’esistenza di una MdT
che decida se qualsiasi MdT si ferma o no:
“nessuna MdT può decidere se una qualsiasi altra MdT m si
ferma su un qualsiasi ingresso w
w”
Appendice:
L MdT universale
La
i
l e lla programmazione
i
`
PROGRAMMARE una MdT consiste nello scrivere la
g
sul nastro
descrizione di una MdT e i dati di ingresso
della MdT universale
insieme di istruzioni di M
ingresso di M
A l
Analogamente…
t
`
Programmare un calcolatore
P
l l
significa
i ifi scrivere
i
un
programma e i suoi dati di ingresso nella memoria
d l calcolatore
del
l l
hard disk
memoria RAM
P
Programmare
un calcolatore
l l t
programma scritto in un
linguaggio di programmazione
1.
2.
3.
4.
5.
6.
7.
$cateto1 = 3;
$cateto2 = 4;
$quadratocateto1 = pow($cateto1,2);
$quadratocateto2 = pow($cateto2,2);
$sommaquadrati = $quadratocateto1 +
$quadratocateto2;
$ipotenusa = sqrt($sommaquadrati);
echo "L'ipotenusa è ".$ipotenusa;
E
Esecuzione
i
del
d l programma
1.
2.
3.
4.
5.
6.
7.
$cateto1 = 3;
$cateto2 = 4;
$quadratocateto1 = pow($cateto1,2);
$quadratocateto2 = pow($cateto2,2);
$sommaquadrati = $quadratocateto1 +
$quadratocateto2;
$ipotenusa = sqrt($sommaquadrati);
echo "L'ipotenusa
L ipotenusa è ".$ipotenusa;
.$ipotenusa;
Il processore centrale del PC
esegue quel programma su
quei dati di ingresso e
restituisce il risultato
M
Macchine
hi universali
i
li e calcolatori
l l t i odierni
di
i
`
Un PC che
U
h conserva nella
ll propria
i memoria
i un
programma che calcola la somma si comporta, in un
certo senso, da
d macchina
hi universale!
i
l !
`
Quel PC,
PC infatti,
infatti ha nella propria memoria la descrizione
di una “macchina” che esegue la somma e il suo
ingresso (analogamente al caso della macchina
universale, che conserva sul proprio nastro la descrizione
di un’altra
un altra macchina e il suo ingresso)
ingresso).
I li
linguaggii di programmazione
i
`
I linguaggi di programmazione servono per programmare
algoritmi su un calcolatore
1.
In base alla tesi CT, qualsiasi algoritmo scritto in uno
qualsiasi di questi linguaggi calcola una funzione che può
essere calcolata
l l da
d una MdT opportunamente
programmata.
2.
In base ai teoremi che abbiamo visto e alla tesi CT, nessun
programma scritto in uno di questi linguaggi potrà risolvere
il problema della fermata (ovvero, decidere se un
calcolatore qualsiasi restituirà un risultato su un ingresso
qualsiasi)…
3.
… né potrà risolvere alcun problema non Turing
Turingcalcolabile