Cenni sulle Macchine di Turing corrado bonfanti - 2010.

Slides:



Advertisements
Presentazioni simili
…da von Neumann al computer quantistico
Advertisements

…da von Neumann al computer quantistico architettura dellelaboratore.
Automi temporizzati.
Sistemi dinamici discreti e computabilità intrinseca
Macchine di Turing e ricorsività generale
Modulo 4 – Seconda Parte Foglio Elettronico
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità E1 Dallanalisi del problema alla definizione dellalgoritmo.
Inizio… Linguaggi Linguaggi di programmazione Linguaggi di programmazione Linguaggi di programmazione Linguaggi di programmazione Linguaggi Formali Linguaggi.
Precorsi di Informatica Dott. Antonio Cisternino Settembre 2003
Deduzione naturale + Logica & Calcolabilità
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.
Indirizzi delle variabili A ogni variabile sono associati tre concetti fondamentali: il valore memorizzato; il tipo dati di appartenenza; lindirizzo. Il.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
MACCHINE DI TURING Le macchine di Turing sono dispositivi astratti per la manipolazione di simboli, ideati nel 1936 dal matematico e logico britannico.
Caratteri e stringhe di caratteri
Esercizi di esonero (a.a. 2007/2008) Compito C, terzo esercizio Data una sequenza di caratteri s1 ed una stringa s2 diciamo che s1 è contenuta in s2 se.
Analisi e Sintesi di circuiti sequenziali
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Introduzione agli Automi Cellulari
Algoritmi e Strutture Dati Introduzione. Gli argomenti di oggi Analisi della bontà degli algoritmi Modello Computazionale Tempo di esecuzione degli algoritmi.
Modelli simulativi per le Scienze Cognitive
Analisi e Sintesi di circuiti sequenziali. Definizione Una macchina sequenziale é un sistema nel quale, detto I(t) l'insieme degli ingressi in t, O(t)
Il Linguaggio Macchina
MACCHINE DI TURING e ALGORITMI
Corso di Laurea in Ingegneria per lAmbiente e il Territorio Informatica per lAmbiente e il Territorio Docente: Giandomenico Spezzano Tutor: Alfredo Cuzzocrea.
INSIEMI NUMERABILI L’analisi matematica introduce il concetto di insieme numerabile come insieme i cui elementi possono essere “contati” ossia che possiede.
L’AUTOMA ESECUTORE Un automa capace di ricevere dall’esterno una descrizione dello algoritmo richiesto cioè capace di interpretare un linguaggio (linguaggio.
LINGUAGGI DI PROGRAMMAZIONE
IL GIOCO DELLA LOGICA.
“Orme Profonde” Matera aprile 2012
RAPPRESENTAZIONE DELL'INFORMAZIONE
Algoritmi e Programmazione strutturata
INFORMATICA MATTEO CRISTANI.
Francesco Belardinelli Cortona - 30 Agosto 2005
L’inventore del calcolatore odierno
Antonio Cisternino La Macchina di Turing.
CHI ERA ALAN TURING? Turing fece parte del team di matematici che, a partire dalla base di Bletchley Park, decodificarono i messaggi scritti dalle macchine.
Un esempio: Calcolo della potenza n-esima di un numero reale
LA MACCHINA DI TURING Nel 1936 il matematico inglese A. M. Turing propose una definizione del concetto di algoritmo tramite un modello matematico di macchina.
Problemi facili, problemi difficili
BIOINFO3 - Lezione 201 Come in ogni corso di introduzione ad un linguaggio di programmazione, proviamo a scrivere lormai celebre primo programma di prova.
Programma di Informatica Classi Prime
La rappresentazione delle informazioni in un computer Seconda parte.
Modelli computazionali e macchine astratte
Tesina di fine corso Argomento: Corso: Professore: Autori:
GLI ALGORITMI VISIBILE SUL BLOG INFORMATICA ANNO SCOLASTICO 2013 / 2014 GABRIELE SCARICA 2°T.
Parte 3 Lo stato: variabili, espressioni ed assegnazioni
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Ingegneria del software Modulo 1 - Introduzione al processo software Unità didattica 3 - Modelli di fase d’analisi Ernesto Damiani Università degli Studi.
Vincenza Ferrara Novembre 2007 Fondamenti di Matematica e Informatica Laboratorio Informatica I anno a.a
L’esecuzione dei programmi
Macchine di Turing (1) Il modello di base ha un controllo finito, un nastro di input diviso in celle e una testa di lettura che esamina una cella alla.
Automi temporizzati.
Informatica e Informatica di Base
Io ho voluto dimostrarlo attraverso una delle mie passioni:
Problemi, algoritmi e programmazione
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 1 Marco D. Santambrogio – Ver. aggiornata al 24 Agosto 2015.
6. LIMITI Definizione - Funzioni continue - Calcolo dei limiti
Indecidibilità Limiti della calcolabilità Pigreco-day 14 marzo 2014 Matematica e Incertezza Prof. Antonio Iarlori Mathesis Lanciano-Ortona.
Algoritmi e Strutture Dati HeapSort. Select Sort: intuizioni L’algoritmo Select-Sort  scandisce tutti gli elementi dell’array a partire dall’ultimo elemento.
“ Pseudocodice ” Un programma per computer lavorerà su in insieme di “ variabili ” contenenti i dati del problema, soluzioni intermedie, soluzioni finali.
…da von Neumann al computer quantistico L’archittettura dell’elaboratore.
Analisi matematica Introduzione ai limiti
Informatica Problemi e algoritmi. una situazione che pone delle domande cui si devono dare risposte. Col termine problema o situazione problematica s’indica.
Unità di apprendimento 6
1 Informatica di Base Facoltà di Lingue e Letterature Straniere Corso di laurea in Relazioni Pubbliche.
Lezione n. Parole chiave: Corso di Laurea: Insegnamento: Docente: A.A Salvatore Cuomo La ricorsione 15 Approccio ricorsivo, esercizi sulla.
Le frazioni A partire da N vogliamo costruire un nuovo insieme numerico nel quale sia sempre possibile eseguire la divisione. Per fare ciò dobbiamo introdurre.
Transcript della presentazione:

Cenni sulle Macchine di Turing corrado bonfanti

AS * ( * su un foglio di carta ) area programma * matita gomma finestra nastro cella MACCHINA DI TURING

AS * ( * su un foglio di carta ) area programma * matita gomma finestra nastro cella MACCHINA DI TURING ?

Sembra opportuno qualche approfondimento, per il quale adotteremo un approccio elementare, senza chiamare in causa strumenti più sofisticati quali ad esempio le funzioni ricorsive primitive. In quello che segue, lEsempio, gli Esercizi proposti e le relative Soluzioni possono essere fruiti anche come una sorta di introduzione alla programmazione delle macchine (o automi) a stati finiti. MACCHINA DI TURING AS * ( * su un foglio di carta ) area programma * matita gomma finestra nastro cella ?

ELEMENTI COSTITUTIVI DI UNA MACCHINA DI TURING ELEMENTI COSTITUTIVI DI UNA MACCHINA DI TURING (TM: Turing Machine) Nastro: è suddiviso in celle e lo si suppone illimitato (ovvero prolungabile a piacere tanto a destra quanto a sinistra). Ogni cella contiene un solo carattere tra quelli ammessi, compresi nellalfabeto dei caratteri C = {c*,c 1,c 2, … c n } (vedi appresso). Il nastro, dietro apposito comando (vedi appresso), può rimanere fermo oppure scorrere di una cella verso destra o verso sinistra. Nastro Cella

ELEMENTI COSTITUTIVI DI UNA MACCHINA DI TURING Finestra di lettura/scrittura: individua una cella del nastro detta cella corrente e designata come CC. La finestra è in posizione fissa e il nastro può scorrere sotto di essa. La notazione (CC) designa il simbolo contenuto in CC. Finestra di lettura/scrittura (CC) Nastro CC Cella

Area di Controllo: una zona, designata come AC, destinata a contenere (uno alla volta) i simboli dellinsieme S = {s*,s 1,s 2, … s k }, che designano i cosiddetti stati della TM (vedi appresso). La notazione (AC) designa il simbolo contenuto di AC. (AC) Area di Controllo ELEMENTI COSTITUTIVI DI UNA MACCHINA DI TURING Finestra di lettura/scrittura (CC) Nastro Cella

Insiemi dei simboli C ed S sono linsieme dei simboli che, uno alla volta, possono comparire rispettivamente in una cella del nastro e nellarea di controllo. cella vuotastop C ed S sono definiti in relazione al compito che una specifica MT deve assolvere, ma devono contenere rispettivamente il simbolo c* (uno pseudosimbolo per la cella vuota) ed s* (stop), o loro equivalenti. I tre simboli di M comandano leventuale scorrimento del nastro: di una cella verso Destra; di una cella verso Sinistra; nastro Fermo. (AC) Area di Controllo ELEMENTI COSTITUTIVI DI UNA MACCHINA DI TURING Finestra di lettura/scrittura (CC) Nastro Cella Simboli Alfabeto dei caratteri C = {c*,c 1,c 2, … c n } Stati S = {s*,s 1,s 2, … s k } Movimenti M = {D,S,F}

ELEMENTI COSTITUTIVI DI UNA MACCHINA DI TURING (AC) Area di Controllo Finestra di lettura/scrittura (CC) Nastro Cella Simboli Alfabeto dei caratteri C = {c*,c 1,c 2, … c n } Stati S = {s*,s 1,s 2, … s k } Movimenti M = {D,S,F} s3s3... sksk s1s1 s2s2 c*c* c1c1 c2c2 c,m,s Programma cncn Istruzione con indirizzo c 2, s 2

Programma: tabella a doppia entrata (matrice) in cui - Le colonne sono intestate con tutti i simboli di stato compresi in S = {s*,s 1,s 2, … s k }, con lesclusione di s*. - Le righe sono intestate con tutti i caratteri dellalfabeto C = {c*,c 1,c 2, … c n }. Istruzione: è il contenuto di un elemento della tabella, costituito da una terna ordinata di simboli c,m,s in cui - c è un carattere dellalfabeto C = {c*,c 1,c 2, … c n }. - m è uno dei tre comandi di movimento compresi in M = {D,S,F}. - s è uno degli stati presenti in S = {s*,s 1,s 2, … s k }. ELEMENTI COSTITUTIVI DI UNA MACCHINA DI TURING s3s3... sksk s1s1 s2s2 c*c* c1c1 c2c2 c,m,s Programma Istruzione con indirizzo c 2,s 2 cncn Le coordinate dellelemento della tabella (c 2 e s 2 nella figura) definiscono lindirizzo dellistruzione in esso contenuta.

Listruzione da eseguire (istruzione corrente) è quella che sta scritta allindirizzo (CC),(AC) ovvero c 2,s 2. Lesecuzione consta di tre passi: s1s1 s2s2 c*c* c1c1 c2c2... c 1,S,s 5 AC s2s2 c2c2 c2c2 c3c3 c2c2 c3c3 c1c1 FUNZIONAMENTO DI UNA TM

Listruzione da eseguire (istruzione corrente) è quella che sta scritta allindirizzo (CC),(AC) ovvero c 2,s 2. Lesecuzione consta di tre passi: 1 - Si cancella (CC) e si trascrive c 1 (primo simbolo dellistruzione corrente) in CC. AC s2s2 s2s2 c2c2 c2c2 c3c3 c2c2 c3c3 c1c1 c2c2 c1c1 c3c3 c2c2 c3c3 c1c1 passo 1 s1s1 s2s2 c*c* c1c1 c2c2... c 1,S,s 5 FUNZIONAMENTO DI UNA TM

Listruzione da eseguire (istruzione corrente) è quella che sta scritta allindirizzo (CC),(AC) ovvero c 2,s 2. Lesecuzione consta di tre passi: 1 - Si cancella (CC) e si trascrive c 1 (primo simbolo dellistruzione corrente) in CC. 2 - Si sposta il nastro di una cella verso Sinistra, come indicato dal secondo simbolo dellistruzione corrente. AC s2s2 s2s2 s2s2 c2c2 c2c2 c3c3 c2c2 c3c3 c1c1 c2c2 c1c1 c3c3 c2c2 c3c3 c1c1 passo 1 passo 2 c1c1 c3c3 c2c2 c2c2 c3c3 c1c1 s1s1 s2s2 c*c* c1c1 c2c2... c 1,S,s 5 FUNZIONAMENTO DI UNA TM

Listruzione da eseguire (istruzione corrente) è quella che sta scritta allindirizzo (CC),(AC) ovvero c 2,s 2. Lesecuzione consta di tre passi: 1 - Si cancella (CC) e si trascrive c 1 (primo simbolo dellistruzione corrente) in CC. 2 - Si sposta il nastro di una cella verso Sinistra, come indicato dal secondo simbolo dellistruzione corrente. AC s2s2 s2s2 s5s5 c2c2 c2c2 c3c3 c2c2 c3c3 c1c1 c2c2 c1c1 c3c3 c2c2 c3c3 c1c1 passo 1 passo 2 c1c1 c3c3 c2c2 c2c2 c3c3 c1c1 passo 3 s1s1 s2s2 c*c* c1c1 c2c2... c 1,S,s Si cancella (AC) e si trascrive il terzo simbolo s 5 in AC. La prossima istruzione da eseguire è pertanto quella allindirizzo (CC),(AC) ovvero c 3,s 5 (non presente nella figura). N.b. Se il terzo simbolo fosse stato s*, la TM si sarebbe arrestata. FUNZIONAMENTO DI UNA TM

Adottiamo lalfabeto C = {c*,0,1,2,3,4,5,6,7,8,9} e programmiamo la TM in modo che essa fornisca in output il numero n+1, essendo n 0 il numero intero (input) scritto inizialmente sul nastro e delimitato da almeno una cella vuota a destra e a sinistra. Il tutto nella normale notazione decimale, con partenza e arresto sulla cella che contiene la cifra delle unità. Questo esempio è tratto, con adattamenti del docente, da: M.Italiani, G.Serazzi Elementi di informatica; Etas Kompass, 1973, pp ESEMPIO: la Macchina + 1

Adottiamo lalfabeto C = {c*,0,1,2,3,4,5,6,7,8,9} e programmiamo la TM in modo che essa fornisca in output il numero n+1, essendo n 0 il numero intero (input) scritto inizialmente sul nastro e delimitato da almeno una cella vuota a destra e a sinistra. Il tutto nella normale notazione decimale, con partenza e arresto sulla cella che contiene la cifra delle unità. Il programma qui a fianco risolve il problema con S = {s 1,s 2 } e ponendo inizialmente (AC) = s 1. Si veda qui appresso lo sviluppo completo del caso in cui n = 299. ESEMPIO: la Macchina ,S,s 2 5,S,s 2 7 8,S,s 2 7,S,s 2 8 9,S,s 2 8,S,s 2 9 0,D,s 1 9,S,s 2 s1s1 s2s2 c* 1,S,s 2 c*,D,s* 0 1,S,s 2 0,S,s 2 1 2,S,s 2 1,S,s 2 2 3,S,s 2 2,S,s 2 3 4,S,s 2 3,S,s 2 4 5,S,s 2 4,S,s 2 6 7,S,s 2 6,S,s 2 programma per la Macchina +1

sequenza delle istruzioni da eseguire (indirizzo // istruzione) 9,s 1 // 29 9 CC AC s1s1 ESEMPIO: la Macchina + 1 inizio 5 6,S,s 2 5,S,s 2 7 8,S,s 2 7,S,s 2 8 9,S,s 2 8,S,s 2 9 0,D,s 1 9,S,s 2 s1s1 s2s2 c* 1,S,s 2 c*,D,s* 0 1,S,s 2 0,S,s 2 1 2,S,s 2 1,S,s 2 2 3,S,s 2 2,S,s 2 3 4,S,s 2 3,S,s 2 4 5,S,s 2 4,S,s 2 6 7,S,s 2 6,S,s 2 programma per la Macchina +1 esecuzione del programma +1; inizio con n = 299 e (AC) iniziale = s 1

sequenza delle istruzioni da eseguire (indirizzo // istruzione) 9,s 1 // 29 9 CC AC s1s1 ESEMPIO: la Macchina ,S,s 2 5,S,s 2 7 8,S,s 2 7,S,s 2 8 9,S,s 2 8,S,s 2 9 0,D,s 1 9,S,s 2 s1s1 s2s2 c* 1,S,s 2 c*,D,s* 0 1,S,s 2 0,S,s 2 1 2,S,s 2 1,S,s 2 2 3,S,s 2 2,S,s 2 3 4,S,s 2 3,S,s 2 4 5,S,s 2 4,S,s 2 6 7,S,s 2 6,S,s 2 programma per la Macchina +1 esecuzione del programma +1; inizio con n = 299 e (AC) iniziale = s 1

29 9 CC AC s1s1 ESEMPIO: la Macchina + 1 sequenza delle istruzioni da eseguire (indirizzo // istruzione) 9,s 1 // 0,D,s 1 5 6,S,s 2 5,S,s 2 7 8,S,s 2 7,S,s 2 8 9,S,s 2 8,S,s 2 9 0,D,s 1 9,S,s 2 s1s1 s2s2 c* 1,S,s 2 c*,D,s* 0 1,S,s 2 0,S,s 2 1 2,S,s 2 1,S,s 2 2 3,S,s 2 2,S,s 2 3 4,S,s 2 3,S,s 2 4 5,S,s 2 4,S,s 2 6 7,S,s 2 6,S,s 2 programma per la Macchina +1 esecuzione del programma +1; inizio con n = 299 e (AC) iniziale = s 1

sequenza delle istruzioni da eseguire (indirizzo // istruzione) 9,s 1 // 0,D,s s1s CC AC s1s1 ESEMPIO: la Macchina ,S,s 2 5,S,s 2 7 8,S,s 2 7,S,s 2 8 9,S,s 2 8,S,s 2 9 0,D,s 1 9,S,s 2 s1s1 s2s2 c* 1,S,s 2 c*,D,s* 0 1,S,s 2 0,S,s 2 1 2,S,s 2 1,S,s 2 2 3,S,s 2 2,S,s 2 3 4,S,s 2 3,S,s 2 4 5,S,s 2 4,S,s 2 6 7,S,s 2 6,S,s 2 programma per la Macchina +1 esecuzione del programma +1; inizio con n = 299 e (AC) iniziale = s 1

sequenza delle istruzioni da eseguire (indirizzo // istruzione) 9,s 1 // 0,D,s 1 9,s 1 // 29 0 s1s CC AC s1s1 ESEMPIO: la Macchina + 1 esecuzione del programma +1; inizio con n = 299 e (AC) iniziale = s 1 5 6,S,s 2 5,S,s 2 7 8,S,s 2 7,S,s 2 8 9,S,s 2 8,S,s 2 9 0,D,s 1 9,S,s 2 s1s1 s2s2 c* 1,S,s 2 c*,D,s* 0 1,S,s 2 0,S,s 2 1 2,S,s 2 1,S,s 2 2 3,S,s 2 2,S,s 2 3 4,S,s 2 3,S,s 2 4 5,S,s 2 4,S,s 2 6 7,S,s 2 6,S,s 2 programma per la Macchina +1

sequenza delle istruzioni da eseguire (indirizzo // istruzione) 9,s 1 // 0,D,s 1 9,s 1 // 29 0 s1s CC AC s1s1 … e così avanti, istruzione per istruzione ,S,s 2 5,S,s 2 7 8,S,s 2 7,S,s 2 8 9,S,s 2 8,S,s 2 9 0,D,s 1 9,S,s 2 s1s1 s2s2 c* 1,S,s 2 c*,D,s* 0 1,S,s 2 0,S,s 2 1 2,S,s 2 1,S,s 2 2 3,S,s 2 2,S,s 2 3 4,S,s 2 3,S,s 2 4 5,S,s 2 4,S,s 2 6 7,S,s 2 6,S,s 2 programma per la Macchina +1 ESEMPIO: la Macchina + 1 esecuzione del programma +1; inizio con n = 299 e (AC) iniziale = s 1

sequenza delle istruzioni da eseguire (indirizzo // istruzione) 9,s 1 // 0,D,s 1 2,s 1 // 3,S,s 2 0,s 2 // 0,S,s 2 c*,s 2 // c*,D,s* 30 0 s2s s2s s*s* 30 0 s2s s1s s1s CC AC s1s1 ESEMPIO: la Macchina + 1 fine 5 6,S,s 2 5,S,s 2 7 8,S,s 2 7,S,s 2 8 9,S,s 2 8,S,s 2 9 0,D,s 1 9,S,s 2 s1s1 s2s2 c* 1,S,s 2 c*,D,s* 0 1,S,s 2 0,S,s 2 1 2,S,s 2 1,S,s 2 2 3,S,s 2 2,S,s 2 3 4,S,s 2 3,S,s 2 4 5,S,s 2 4,S,s 2 6 7,S,s 2 6,S,s 2 programma per la Macchina +1 esecuzione del programma +1; inizio con n = 299 e (AC) iniziale = s 1

Esercizi proposti 1 - Sviluppare lesecuzione della Macchina +1, ponendo come input numeri non negativi di vostra scelta. 2 - Costruire lalgoritmo +1 2 per numeri in notazione binaria, ovvero ponendo C = {c*,0,1} e lasciando invariate le altre condizioni date per +1. (Oltre a risultare più compatto, questo algoritmo avrà il pregio di rendere più evidente la logica ad esso sottostante.) 3 - Costruire la Macchina RdS (Riconoscitore di Sequenze): - RdS opera sullalfabeto C = {c*,a,b} - sul nastro è impressa, in celle contigue, una stringa disordinata, non nulla e finita, di simboli a e b, preceduta e seguita da (almeno) una cella vuota; - la CC iniziale è la prima cella di sinistra della stringa; - il compito di RdS consiste nellindividuare, se esiste, la prima occorrenza, entro la stringa, della sequenza di simboli abba in quattro celle contigue; - se tale sequenza viene individuata, RdS si arresta sulla cella di destra della sequenza; se essa non si presenta mai entro la stringa, RdS si arresta sulla prima cella vuota a destra della stringa. Una possibile soluzione di 2 e 3 è data nellAppendice.

La prima idea fondamentale in base alla quale Turing ha concepito la sua macchina consiste nello scomporre lalgoritmo di calcolo nei passi più elementari, si potrebbe dire atomici, a cui si può ridurre il modo di procedere di un calcolatore umano. Questi, reciprocamente, può eseguire il programma-algoritmo senza esplicare alcuna decisione o ragionamento intelligente. Infatti gli si chiede soltanto di armarsi di carta, matita e gomma da cancellare e di attenersi acriticamente alle istruzioni del programma e alle regole di funzionamento. Si tratta quindi di un procedimento puramente meccanico che, in linea di principio, può essere eseguito da una macchina dotata degli opportuni automatismi. Si noti che la descrizione della TM che abbiamo dato nelle slide precedenti (come pure la macchina +1 usata come esempio) è alquanto differente dallimpostazione originaria che Turing ha esposto nei paragrafi 1-5 del suo celebre articolo On Computable Numbers, with an Application to the Entscheidungsproblem. [1] [1] Larticolo (pubblicato nei Proceedings of the London Mathematical Society, vol.42, , pp ) si conclude con unappendice in cui Turing dimostra lequivalenza tra la sua nozione di computabilità e il λ-calcolo che Alonzo Church aveva introdotto in un articolo di poco precedente. Da un lato quindi Turing si metteva allaltezza del già rinomato Church e, dallatro, rivendicava la differenza e loriginalità del proprio approccio. Questa appendice Turing la scrisse durante il suo lungo soggiorno a Princeton (1936-8) durante il quale fu a contatto diretto con lo stesso Church e con altri personaggi delluniversità e dello IAS (p.e. Kleene e von Neumann). Subito dopo, sempre a Princeton, scrisse una breve nota per correggere alcune inesattezze formali che gli erano state segnalate da P. Bernays (la nota è nello stesso volume dei Proceedings, pp ). Commenti

La più appariscente delle differenze che abbiamo introdotto consiste nel fatto che Turing presenta listruzione della TM come una quintupla ordinata, i cui primi due simboli sono quelli che noi abbiamo scorporato dal formato dellistruzione (ridotto quindi a una terna) per usarli come indirizzo dellistruzione stessa. Altri autori propongono varianti ancora diverse; nella moderna teoria della computabilità si usano poi TM configurate con più di un nastro. Turing inoltre non introduce esplicitamente il comando s* (stop) né fa uso della nostra AC (Area di Controllo). Nella concezione originaria, infine, si fa distinzione tra linsieme dei simboli ausiliari (tra i quali il blank della cella vuota) e quello dei simboli significativi (chiamati figures); questultimo insieme è composto dai soli caratteri 0 e 1 (fatto che peraltro non ha alcuna attinenza con luso dellaritmetica binaria: un intero non negativo n viene infatti rappresentato sul nastro da una stringa di n+1 simboli 1 contigui, delimitata da almeno una cella vuota a destra e a sinistra). In ogni caso si tratta di varianti che non ledono la sostanza delle idee di Turing e che si è ritenuto utile adottare a scopo didattico, anche per dare più immediato risalto alla stretta analogia tra la TM e le logiche hardware / software dei computer reali a programma registrato.

La seconda idea fondamentale, il cui sviluppo non esaminiamo in questa sede, consiste nellaver dimostrato che esiste un programma universale che opera su un nastro su cui siano stati scritti (con una apposita codificazione) sia le istruzioni di un programma particolare, del tipo visto nellesempio, e sia i dati di input su cui tale programma deve operare. Il programma universale (che altro non è se non la Macchina Universale di Turing - UTM) produce lo stesso output che sarebbe stato prodotto da quel programma particolare applicato a quei dati di input. In simboli: input per UTM programma particolare P & dati di input per P UTM output di UTM output di (P applicato ai dati di input per P) Lobiettivo dellarticolo di Turing (esposto nel paragrafo finale) era peraltro di natura esclusivamente logica: risolvere (negativamente) il problema dellarresto (Halting Problem) per le TM, che è strettamente analogo al problema della decisione (lentscheidungsproblem, proposto da Hilbert allinizio del Novecento). Sotto questo aspetto, Turing si muoveva sulla stessa linea di pensiero seguita da Kurt Gödel per i suoi teoremi negativi pubblicati nel 1933 (incompletezza; non-decidibilità).

APPENDICE

Soluzione proposta per la Macchina +1 2 Soluzione proposta per la Macchina +1 2 s1s1 s2s2 c* 1,S,s 2 c*,D,s* 0 1,S,s 2 0,S,s 2 1 0,D,s 1 1,S,s 2 Si assuma (AC) iniziale = s 1 s1s1 s2s2 c* 1,S,s 2 c*,D,s* 0 1,S,s 2 0,S,s 2 1 0,D,s 1 1,S,s 2 Domanda In quale situazione viene eseguita listruzione evidenziata in giallo?

Soluzioni proposte per la Macchina RdS Si osservi che le istruzioni agli indirizzi c*,s 2, c*,s 3 e c*,s 4 sono forse eleganti ma certamente ridondanti; il seguente algoritmo risulta infatti più efficiente Si assuma (AC) iniziale = s 1 s1s1 s2s2 a a,S,s 2 a,S,s 1 a,S,s 1 a,F,s* b b,S,s 1 b,S,s 3 b,S,s 4 b,S,s 1 c* c*,F,s* c*,F,s 1 c*,F,s 1 c*,F,s 1 s3s3 s4s4 s1s1 s2s2 a a,S,s 2 a,S,s 1 a,S,s 1 a,F,s* b b,S,s 1 b,S,s 3 b,S,s 4 b,S,s 1 c* c*,F,s* c*,F, s* c*,F, s* c*,F, s* s3s3 s4s4