Cenni sulla Macchina di Turing c.bonfanti - 2007

21
Cenni sulla Macchina di Turing c.bonfanti - 2007

description

Cenni sulla Macchina di Turing c.bonfanti - 2007. Stazione di lettura/scrittura. (CC). Casella. Nastro. ELEMENTI COSTITUTIVI DI UNA MACCHINA DI TURING (TM: Turing Machine ). - PowerPoint PPT Presentation

Transcript of Cenni sulla Macchina di Turing c.bonfanti - 2007

Page 1: Cenni sulla Macchina di Turing c.bonfanti - 2007

Cenni sulla

Macchina di Turing

c.bonfanti - 2007

Page 2: Cenni sulla Macchina di Turing c.bonfanti - 2007

ELEMENTI COSTITUTIVI DI UNA MACCHINA DI TURING (TM: Turing Machine)

Nastro: è suddiviso in caselle e lo si suppone illimitato (ovvero prolungabile a piacere tanto a destra quanto a sinistra. Ogni casella contiene un solo carattere tra quelli ammessi, compresi nell’alfabeto C = {c*,c1,c2, … cn}. C è definito in relazione al compito che la macchina deve assolvere ma contiene comunque il carattere c* che si conviene rappresenti il contenuto della casella vuota. Il nastro, dietro apposito comando, può scorrere da una casella a una delle due adiacenti.

Stazione di lettura/scrittura: finestra che individua una casella del nastro detta casella corrente e denominata CC. La notazione (CC) significa: contenuto di CC.

Stazione di lettura/scrittura

(CC) NastroCasella

Page 3: Cenni sulla Macchina di Turing c.bonfanti - 2007

ELEMENTI COSTITUTIVI DI UNA MACCHINA DI TURING (TM: Turing Machine)

Controllo: una zona (p.e. un rettangolo disegnato su un foglio di carta) denominata AC (Area di Controllo), destinata a contenere uno dei simboli dell’insieme S = {s1,s2, … sk}, detti convenzionalmente stati della TM. La notazione (AC) significa: contenuto di AC.

(AC)

Area di Controllo

Stazione di lettura/scrittura

(CC) NastroCasella

Page 4: Cenni sulla Macchina di Turing c.bonfanti - 2007

ELEMENTI COSTITUTIVI DI UNA MACCHINA DI TURING (TM: Turing Machine)

Insiemi dei simboli

Alfabeto dei caratteri C = {c*,c1,c2, … cn}

Stati S = {s1,s2, … sk} S* = {s*,s1,s2, … sk}

Movimenti M = {de,si,fe}

(AC)

Area di Controllo

Stazione di lettura/scrittura

(CC) NastroCasella

Page 5: Cenni sulla Macchina di Turing c.bonfanti - 2007

ELEMENTI COSTITUTIVI DI UNA MACCHINA DI TURING (TM: Turing Machine)

(AC)

Area di Controllo

Stazione di lettura/scrittura

(CC) NastroCasella

Alfabeto dei caratteri C = {c*,c1,c2, … cn}

Stati S = {s1,s2, … sk} S* = {s*,s1,s2, … sk}

Movimenti M = {de,si,fe}

s3 ... sks1 s2

c*

c1

c2

...

c,m,s

Programma

Istruzione (c C; m M; s S*)

cn

Page 6: Cenni sulla Macchina di Turing c.bonfanti - 2007

Programma: tabella a doppia entrata (matrice) in cui

- Le colonne sono intestate con tutti i simboli di stato compresi in S = {s1,s2, … sk}; il numero degli stati dipende dal compito che la macchina deve assolvere. Lo speciale stato designato come s* (stop) non figura come intestazione di colonna.

- Le righe sono intestate con tutti i caratteri dell’alfabeto C = {c*,c1,c2, … cn}.

Istruzioni: sono gli elementi della tabella, costituiti da una terna ordinata di simboli c,m,s in cui:

c è un carattere dell’alfabeto C;

m è il comando di movimento che può assumere uno dei valori in M = {de,si,fe} che stanno per destra, sinistra, fermo;

s è uno degli stati presenti in S*, incluso quindi lo stop s*.

Le coordinate ci e sj dell’elemento della tabella si chiamano indirizzo dell’istruzione in esso contenuta.

Page 7: Cenni sulla Macchina di Turing c.bonfanti - 2007

L’istruzione da eseguire (istruzione corrente) è quella che sta scritta all’indirizzo c2 = (CC) e s2 = (AC) e l’esecuzione consta di tre passi:

Funzionamento della TM

s1 s2

c*

c1

c2

...

...

c1,si, s5

AC

s2c2 c2 c3 c2c3 c1

Page 8: Cenni sulla Macchina di Turing c.bonfanti - 2007

L’istruzione da eseguire (istruzione corrente) è quella che sta scritta all’indirizzo c2 = (CC) e s2 = (AC) e l’esecuzione consta di tre passi:

1 - Si trascrive c1 (primo simbolo dell’istruzione corrente) in CC.

Funzionamento della TM

AC

s2

s2

c2 c2 c3 c2c3 c1

c2 c1 c3 c2c3 c1passo 1

s1 s2

c*

c1

c2

...

...

c1,si, s5

Page 9: Cenni sulla Macchina di Turing c.bonfanti - 2007

L’istruzione da eseguire (istruzione corrente) è quella che sta scritta all’indirizzo c2 = (CC) e s2 = (AC) e l’esecuzione consta di tre passi:

1 - Si trascrive c1 (primo simbolo dell’istruzione corrente) in CC.

2 - Si sposta il nastro di una casella verso sinistra, come indicato dal secondo simbolo dell’istruzione corrente.

Funzionamento della TM

AC

s2

s2

s2

c2 c2 c3 c2c3 c1

c2 c1 c3 c2c3 c1passo 1

passo 2

c1 c3 c2c2c3 c1

s1 s2

c*

c1

c2

...

...

c1,si, s5

Page 10: Cenni sulla Macchina di Turing c.bonfanti - 2007

L’istruzione da eseguire (istruzione corrente) è quella che sta scritta all’indirizzo c2 = (CC) e s2 = (AC) e l’esecuzione consta di tre passi:

1 - Si trascrive c1 (primo simbolo dell’istruzione corrente) in CC.

2 - Si sposta il nastro di una casella verso sinistra, come indicato dal secondo simbolo dell’istruzione corrente.

3 - Se il terzo simbolo dell’istruzione corrente è s* allora la macchina si arresta, altrimenti si trascrive s5 in AC.

Funzionamento della TM

AC

s2

s2

s5

c2 c2 c3 c2c3 c1

c2 c1 c3 c2c3 c1passo 1

passo 2

c1 c3 c2c2c3 c1passo 3

s1 s2

c*

c1

c2

...

...

c1,si, s5

Page 11: Cenni sulla Macchina di Turing c.bonfanti - 2007

L’istruzione da eseguire (istruzione corrente) è quella che sta scritta all’indirizzo c2 = (CC) e s2 = (AC) e l’esecuzione consta di tre passi:

1 - Si trascrive c1 (primo simbolo dell’istruzione corrente) in CC.

2 - Si sposta il nastro di una casella verso sinistra, come indicato dal secondo simbolo dell’istruzione corrente.

3 - Si trascrive s5 (terzo simbolo dell’istruzione corrente) in AC. Se il terzo simbolo fosse stato s*, allora la macchina si sarebbe arrestata.

Si ripete il ciclo: la prossima istruzione è perciò quella all’indirizzo (CC),(AC) ovvero c3,s5.

Funzionamento della TM

AC

s2

s2

s5

c2 c2 c3 c2c3 c1

c2 c1 c3 c2c3 c1passo 1

passo 2

c1 c3 c2c2c3 c1passo 3

s1 s2

c*

c1

c2

...

...

c1,si, s5

Page 12: Cenni sulla Macchina di Turing c.bonfanti - 2007

Adottiamo l’alfabeto C = {c*,0,1,2,3,4,5,6,7,8,9} e programmiamo la MT in modo che essa fornisca in output x+1, essendo x 0 il numero intero scritto inizialmente sul nastro e delimitato da almeno una casella vuota a destra e a sinistra (input); il tutto nella normale notazione decimale, con partenza e arresto sulla casella che contiene le unità.

Il programma qui a fianco, dove S = {s1, s2}, risolve il problema per qualsiasi valore di x, ponendo inizialmente (AC) = s1.

Si veda qui appresso lo sviluppo completo del caso in cui x = 299.

s1 s2

c*

0

1

2

3

4

5

6

7

8

9

1,fe,s2 c*,de,s*

1,fe,s2 0,si,s2

2,fe,s2 1,si,s2

3,fe,s2 2,si,s2

4,fe,s2 3,si,s2

5,fe,s2 4,si,s2

6,fe,s2 5,si,s2

7,fe,s2 6,si,s2

8,fe,s2 7,si,s2

9,fe,s2 8,si,s2

0,de,s1 9,si,s2

ESEMPIO: La Macchina “+ 1”

Questo esempio è tratto, con adattamenti del docente, da: M.Italiani, G.Serazzi Elementi di informatica; Etas Kompass, 1973, pp.115-117.

Page 13: Cenni sulla Macchina di Turing c.bonfanti - 2007

9,s1

indirizzo (CC),(AC) istruzione

s19 92 inizio

CC AC

Page 14: Cenni sulla Macchina di Turing c.bonfanti - 2007

s19 92 inizio

CC ACindirizzo (CC),(AC) istruzione

9,s1 0,de,s1

Page 15: Cenni sulla Macchina di Turing c.bonfanti - 2007

9,s1 0,de,s1

indirizzo (CC),(AC) istruzione

s1

s1

9 92 inizio

9 02

CC AC

Page 16: Cenni sulla Macchina di Turing c.bonfanti - 2007

s1

s1

9 92 inizio

9 02

CC AC

9,s1 0,de,s1

indirizzo (CC),(AC) istruzione

9,s1

Page 17: Cenni sulla Macchina di Turing c.bonfanti - 2007

9,s1 0,de,s1

9,s1 0,de,s1

2,s1 3,fe,s2

3,s2 3,si,s2

0,s2 0,si,s2

c*,s2 c*,de,s*

indirizzo (CC),(AC) istruzione

s1

s1

s1

s2

s2

s2

s2

9 92 inizio

9 02

0 02

0 03

0 03

0 03

0 03 fine

CC AC

Page 18: Cenni sulla Macchina di Turing c.bonfanti - 2007

La prima idea fondamentale in base alla quale Turing ha concepito la sua “macchina” consiste nello scomporre l’algoritmo 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.

In tal modo, Turing ha fornito per la prima volta una definizione soddisfacente del concetto di algoritmo.

Si noti che la descrizione della MT che abbiamo dato nelle slide precedenti (come pure la macchina “+1” usata quale esempio) è alquanto differente dall’impostazione originaria che Turing ha esposto nei paragrafi 1-5 del suo celebre articolo On Computable Numbers, with an Application to the Entscheidungsproblem.[1]

[1] L’articolo (pubblicato nei Proceedings of the London Mathematical Society, vol.42, 1936-7, pp.230-265) si conclude con un’appendice in cui Turing dimostra l’equivalenza 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 all’altezza del già rinomato Church e, dall’atro, rivendicava la differenza e l’originalità 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 dell’università e dello IAS (p.e. Kleene e von Neumann). Subito dopo, sempre a Princeton, scrisse una breve nota per correggere alcuni errori formali che gli erano stati segnalati da P. Bernays (nota apparsa nello stesso volume dei Proceedings, pp.544-546).

Page 19: Cenni sulla Macchina di Turing c.bonfanti - 2007

La più appariscente delle differenze che abbiamo introdotto consiste nel fatto che Turing presenta l’istruzione della MT come una quintupla ordinata[2] i cui primi due simboli sono quelli che noi abbiamo scorporato dal formato dell’istruzione (ridotto quindi a una terna) per usarli come “indirizzo” dell’istruzione stessa.

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 l’insieme dei simboli ausiliari (tra i quali il “blank” della cella vuota) e quello dei simboli “significativi” (chiamati “figures”); quest’ultimo insieme, che equivale grosso modo al nostro alfabeto C, è composto dai soli caratteri 0 e 1, fatto che peraltro non ha alcuna attinenza con l’uso dell’aritmetica binaria.

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 MT e le logiche hardware / software del computer a programma registrato.

[2] Alcuni autori riducono la quintupla a una quadrupla in virtù del fatto che Turing raggruppa i comandi di scrittura e di spostamento (terzo e quarto simbolo) sotto l’unica denominazione di “operations”.

Page 20: Cenni sulla Macchina di Turing c.bonfanti - 2007

Macchina Universale di Turing (UTM)

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)

La UTM stabilisce il paradigma concettuale del calcolatore a programma registrato; concetto che sarà ripreso da von Neumann nella sua “architettura” e quindi implementato sotto forma di “macchina fisica”.

Page 21: Cenni sulla Macchina di Turing c.bonfanti - 2007

La seconda idea fondamentale, consiste nell’aver 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 nell’esempio, 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[3]) produce lo stesso output che sarebbe stato prodotto da quel programma particolare applicato a quei dati di input.

L’obiettivo dell’articolo di Turing (esposto nel paragrafo finale) era peraltro di natura esclusivamente logica: risolvere il problema della decisione (l’entscheidungsproblem, proposto da Hilbert) con un teorema analogo ai teoremi “negativi” che Kurt Gödel aveva pubblicato nel 1933 (incompletezza; non-decidibilità).

Turing infatti definì e risolse negativamente il problema che chiamò problema dell’arresto (halting problem) che è sostanzialmente isomorfo al problema di Hilbert e alla non-decidibilità di Gödel.

[3] La UTM è descritta nei paragrafi 6 e 7 dell’articolo citato.