VII. 6. La macchina di Turing
E' abbastanza sorprendente che un dispositivo semplice come la
macchina
di Turing [104] rappresenti il più potente strumento di
calcolo conosciuto, nel senso che per ogni problema per cui è
nota una procedura di soluzione è possibile formulare un
algoritmo eseguibile da una macchina di Turing.
La macchina di Turing contiene un insieme finito di stati, un
alfabeto finito (comprendente un simbolo nullo) e un insieme
finito di istruzioni. E' composta da una testina che possiede uno
stato interno e può muoversi lungo un nastro infinito diviso in
celle. Ogni cella contiene una lettera dell'alfabeto. Una
istruzione è una quintupla del tipo (s, v, s',
v', m), dove s indica lo stato attuale
della testina, v il valore della cella sulla quale è
posizionata la testina, s' il nuovo stato, v'
il nuovo valore e m una azione di movimento (destra o
sinistra). Per maggiori dettagli è utile visitare il sito Come osservare una macchina
di Turing [105].
Ecco come vengono eseguite le istruzioni: se lo stato interno è
uguale a s e il valore sotto la testina è v,
la macchina passa allo stato interno s', scrive sul
nastro il valore v' ed esegue il movimento specificato
da m. L'esecuzione termina quando la macchina si trova
in una condizione per la quale non è specificata alcuna
istruzione. Per facilitare la comprensione di questo meccanismo
è disponibile una simulazione
[106] della macchina di Turing.
Ci sono alcune convenzioni comunemente usate nella macchina di
Turing: i numeri sono rappresentati in notazione unaria e il
numero intero n è rappresentato da una sequenza di n+1 1
consecutivi.
Malgrado l'estrema (o voluta) semplicità di questa macchina,
essa risulta capace (con un adatto assegnamento di istruzioni) di
risolvere problemi di grande complessità, ma la sua importanza
non sta ovviamente in tale capacità (per la quale sono molto
più convenienti gli elaboratori reali), ma nell'essere uno
strumento concettuale che permette di definire rigorosamente gli
algoritmi e di ottenere risultati di grande generalità. Le
ricerche finora condotte fanno pensare che qualsiasi algoritmo
possa essere realizzato mediante una macchina di Turing. Tale
ipotesi viene detta "ipotesi fondamentale della teoria degli
algoritmi" e l'accettarla significa che si considera la
teoria degli algoritmi coincidente con la teoria della macchina
di Turing.