Macchina di Turing Universale

Documenti analoghi
Macchine di Turing: somma di due numeri

Informatica teorica Lez. n 7 Macchine di Turing. Macchine di Turing. Prof. Giorgio Ausiello Università di Roma La Sapienza

Macchine di TURING. Alan Mathison Turing ( )

Macchine di Turing. Francesco Paoli. Istituzioni di logica, Francesco Paoli (Istituzioni di logica, ) Macchine di Turing 1 / 29

Fondamenti di informatica Esercizi Svolti Macchine di Turing. Realizzati da: Roberto Quaranta Matr

Esercizi: Macchine di Turing

ELEMENTI DI PROGRAMMAZIONE a.a. 2012/13 MACCHINE, ALGORITMI, PROGRAMMI

Elementi di Informatica e Programmazione

Macchina di Turing ... !!... !!! a b b! b a! Nastro di Input. testina. s t q i. s r. Unità di Controllo q j S / D / F

Le Macchine di Turing

Informatica Generale Homework di Recupero 2016

Turing, i nastri e le macchine

Fondamenti d Informatica: Le Macchine di Turing. Barbara Re, Phd

Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing

Varianti Macchine di Turing

Fondamenti d Informatica: Le Macchine di Turing. Barbara Re, Phd

Principio di composizione delle MT

ELEMENTI DI PROGRAMMAZIONE a.a. 2013/14 UNA GERARCHIA DI MACCHINE

Esercizio su MT. Svolgimento

Informatica Teorica. Macchine a registri

Fondamenti di Informatica. Algoritmo. Algoritmo funzionale. Prof.ssa Enrica Gentile Informatica e Comunicazione Digitale a.a.

Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili

PARTE III MACCHINE A REGISTRI

Quiz sui linguaggi regolari

Il concetto di calcolatore e di algoritmo

Macchine RAM. API a.a. 2013/2014 Gennaio 27, 2014 Flavio Mutti, PhD

Esercizio. Sia a R non nullo e siano m, n numeri interi non nulli con m n. Allora a m /a n è uguale a. [1] 1/a n m [2] 1/a m n [3] 1/a n m [4] a n m

Laboratorio di Informatica. Esercitazione su algoritmi e diagrammi di flusso

acuradi Luca Cabibbo e Walter Didimo Esercizi di Informatica teorica - Luca Cabibbo e Walter Didimo 1

un nastro di carta prolungabile a piacere e suddiviso in celle vuote o contenenti al più un unico carattere;

La macchina di Turing

Problemi, algoritmi, calcolatore

ALGORITMI: PROPRIETÀ FONDAMENTALI

I.3 Porte Logiche. Elisabetta Ronchieri. Ottobre 13, Università di Ferrara Dipartimento di Economia e Management. Insegnamento di Informatica

Appunti di informatica. Lezione 3 anno accademico Mario Verdicchio

I POLINOMI. La forma normale di un polinomio. Un polinomio è detto in FORMA NORMALE se in esso non compaiono monomi simili.

Introduzione agli Algoritmi

Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 30/06/2016/ Foglio delle domande / VERSIONE 1

La macchina universale

Appunti del corso di Informatica 1 (IN110 Fondamenti) 3 Modelli di calcolo

Elementi di informatica

Appunti di informatica. Lezione 4 anno accademico Mario Verdicchio

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);

Esercizio FAT 1. Soluzione: 1. Capacità del disco: 2 24 blocchi (3 byte=24 bit) 2

Esercizi di Fondamenti di Informatica per la sicurezza. Stefano Ferrari

Elaborazione dell informazione

Lezione 6 programmazione in Java

Programmazione I Paolo Valente /2017. Lezione 6. Notazione posizionale

Dispensa 2. Data una grammatica context free esistono tre metodi diversi per costruirne la parsing table per un parser LR:

Algoritmi e Strutture Dati - II modulo Soluzioni degli esercizi

Rappresentazione dell Informazione

La tesi di Church-Turing

Architettura di un Computer

11.4 Chiusura transitiva

STRINGHE di un ALFABETO. Consideriamo un alfabeto di simboli V V è un insieme finito e non vuoto. Alfabeto della lingua inglese I={a,b,c,..

Tipologie di macchine di Turing

Dall algoritmo al programma

ESERCIZI SULLA TECNICA BACKTRACKING e BRANCH & BOUND

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

Sistemi di numerazione

Le macchine di Turing

Corso di Informatica di Base

Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing

Note per la Lezione 6 Ugo Vaccaro

Algoritmi e Principi dell Informatica

La Macchina RAM Shepherdson e Sturgis (1963)

Prodotti notevoli Quadrato di un binomio

Cosa si intende con stato

Transcript:

Informatica Teorica 2010/2011 M.Di Ianni Macchina di Turing Universale Vogliamo definire una macchina di Turing U che, presi in input la descrizione di una macchina di Turing ad un nastro T ed un input x di T, esegua una computazione identica a T (x). In quanto segue, per evitare confusione fra i simboli utilizzati per la macchina T e per la macchina universale U che ci accingiamo a definire, indichiamo gli stati della generica macchina di Turing T con Q T = {ω 0,...,ω m }, ove ω 0 è lo stato iniziale, ed il suo alfabeto di lavoro con Σ T = {σ 1,...,σ n }. La macchina di Turing universale U che andiamo a definire è una macchina di Turing che utilizza 3 nastri: N 1, il nastro su cui memorizziamo l input x della macchina di Turing T la cui computazione T (X) deve essere simulata da U; N 2, il nastro contenente la descrizione delle quintuple di T ; N 3, il nastro su cui è memorizzato lo stato attuale della macchina T. Presentiamo inizialmente una descrizione ad alto livello di U, che utilizza gli stessi simboli utilizzati da T. Assumiamo che le quintuple di T siano scritte sul nastro N 2 una di seguito all altra e separate dal carattere *, che l input x sia scritto sul nastro N 1, che lo stato iniziale di T, ω 0, sia scritto sul nastro N 3, e che le testine siano tutte posizionate sui primi caratteri scritti sui rispettivi nastri. La macchina U esegue sostanzialmente l algoritmo seguente, in cui si utilizza la convenzione per cui rimangono ferme le testine delle quali non viene specificato il movimento: 1) nello stato q 0, inizia la ricerca di una quintupla su N 2 che abbia come primo simbolo lo stesso simbolo letto dalla testina di N 3 e come secondo simbolo lo stesso simbolo letto dalla testina di N 1 : (a) se nello stato q 0 legge lo stesso simbolo sui nastri N 2 ed N 3, sposta la testina di N 2 a destra ed entra nello stato q statocorretto ; la testina di N 1 rimane ferma i. se nello stato q statocorretto legge lo stesso simbolo sui nastri N 2 ed N 1, allora ha trovato la quintupla da eseguire; pertanto, sposta la testina di N 2 a destra ed entra nello stato q scrivi ; la testina di N 1 rimane ferma ii. se nello stato q statocorretto legge simboli differenti sui nastri N 2 ed N 1, allora la quintupla che sta scandendo su N 2 non è quella da eseguire; pertanto, cambiando stato, sposta la testina di N 2 a destra fino a posizionarla sul primo simbolo successivo al primo * che incontra e, se tale simbolo non è, entra nello stato q 0, altrimenti entra nello stato di rigetto (b) se nello stato q 0 legge simboli differenti sui nastri N 2 ed N 3, allora la quintupla che sta scandendo su N 2 non è quella da eseguire; pertanto, cambiando stato, sposta la testina di N 2 a destra fino a posizionarla sul primo simbolo successivo al primo * che incontra e, se tale simbolo non è, entra nello stato q 0, altrimenti entra nello stato di rigetto Informatica Teorica, 2010/2011 Macchina di Turing Universale 1

2) nello stato q scrivi, inizia l esecuzione della quintupla che ha individuato sul nastro N 2 scrivendo il nuovo simbolo su N 1 : dunque, nello stato q scrivi, scrive su N 1 il simbolo che legge su N 2 ed entra nello stato q cambiastato muovendo a destra la testina di N 2 3) nello stato q cambiastato, prosegue l esecuzione della quintupla che ha individuato sul nastro N 2 modificando il contenuto del nastro N 3 : dunque, nello stato q cambiastato, scrive su N 3 il simbolo che legge su N 2 ed entra nello stato q muovi muovendo a destra la testina di N 2 4) nello stato q muovi, termina l esecuzione della quintupla che ha individuato sul nastro N 2 muovendo la testina del nastro N 1 : dunque, nello stato q muovi, muove la testina di N 1 in accordo con il simbolo letto su N 2 ed entra nello stato q riavvolgi muovendo a sinistra la testina di N 2 5) nello stato q riavvolgi, riposiziona la testina del nastro N 2 sul primo simbolo in esso contenuto: rimane nello stato q riavvolgi muovendo a sinistra la testina di N 2 fino a quando non legge un su N 2 e poi entra nello stato q 0 muovendo a destra la testina di N 2. La descrizione dell algoritmo sopra riportata è ad alto livello perché utilizza come alfabeto di lavoro l insieme Σ T Q T. Poiché U deve simulare le computazioni di qualsiasi macchina di Turing, questa non è, ovviamente, una assunzione ragionevole. Per ovviare a tale problema, assumiamo, allora, che l alfabeto di lavoro di U sia l insieme Σ = {0,1,,,B} (ricordiamo che il carattere blank è sempre esterno all alfabeto di lavoro e che tale simbolo non può essere scritto) e che, all inizio della computazione, la macchina U si trovi nello stato globale descritto nel seguito. I simboli dell alfabeto utilizzato da T sono codificati in binario, tutti con lo stesso numero χ di cifre. L input di T è memorizzato sul nastro N 1, preceduto e seguito dal carattere - e con i simboli separati dal carattere -. Inoltre, il primo simbolo di input è preceduto da una sequenza di χ caratteri B preceduta, a sua volta da. Gli stati di T sono codificati in binario, tutti con lo stesso numero di cifre. Lo stato iniziale ω 0 di T è memorizzato (sempre codificato in binario) sul nastro N 3, preceduto e seguito dal carattere. Il movimento della testina in ciascuna quintupla è codificato in binario secondo le convenzioni seguenti: 0 corrisponde a fermo, 10 destra, 11 sinistra. L insieme delle quintuple che descrivono T sono memorizzate (codificando ciascun simbolo in binario) sul nastro N 2 ; le quintuple sono separate l una dall altra dal carattere e gli elementi di ciascuna quintupla sono separati dal carattere. Se una quintupla contiene il come secondo elemento (ossia, se richiede che venga letto un ) allora esso viene codificato con una sequenza di χ caratteri B. La testina di N 3 è sul primo carattere di ω 0 scritto su N 3, la testina di N 1 è sul primo simbolo dell input, la testina di N 2 sul primo simbolo della prima quintupla. Le parti non descritte di tutti i nastri sono riempite di blank. La macchina U si trova nello stato q 0. Prima di presentare una descrizione formale della macchina U, osserviamo che, nella descrizione ad alto livello riportata sopra, la verifica dell uguaglianza degli stati letti sui nastri N 2 ed N 3 oppure dei caratteri letti sui nastri N 2 ed N 1 al punto 1) avviene con una singola istruzione, in quanto consiste nel confronto di due simboli dell alfabeto Σ T Q T. Quando passiamo all alfabeto Σ tali confronti diventano confronti fra stringhe binarie (della stessa lunghezza) e, quindi, richiedono l utilizzo di cicli (che corrispondono a quintuple in cui lo stato di arrivo coincide con lo stato di partenza) che, a loro volta, comportano l introduzione di un certo numero di stati intermedi. In definitiva, la computazione di U che simula T (x) è descritta nel seguito. 1 ) Nello stato q 0, inizia la ricerca di una quintupla su N 2 che abbia come primo simbolo lo stesso simbolo letto dalla testina di N 3 e come secondo simbolo lo stesso simbolo letto dalla testina di N 1. Informatica Teorica, 2010/2011 Macchina di Turing Universale 2

(a) Se nello stato q 0 legge sui nastri N 2 ed N 3 uguali sequenze di 0 e 1, sposta la testina di N 2 a destra ed entra nello stato q statocorretto ; la testina di N 1 rimane ferma q 0,(a,x,x),(a,x,x),q 0,( f erma,destra,destra) a Σ { }, x {0,1} q 0,(a,, ),(a,, ),q statocorrettoind,( f erma,destra,sinistra) a Σ { } ora è necessario riportare la testina di N 3 sul primo simbolo q statocorrettoind,(a,x,y),(a,x,y),q statocorrettoind,( f erma, f erma,sinistra) a Σ { }, x,y Σ q statocorrettoind,(a,x, ),(a,x, ),q statocorretto,( f erma, f erma,destra) a Σ { }, x Σ. i. Se nello stato q statocorretto legge sui nastri N 2 ed N 1 uguali sequenze di 0, 1, B, allora ha trovato la quintupla da eseguire; pertanto, sposta la testina di N 2 a destra ed entra nello stato q scrivi ; la testina di N 1 rimane ferma. Iniziamo a descrivere le quintuple relative al caso in cui la la testina di N 1 non legge (ossia, essa è posizionata a destra della sequenza corrispondente all ultimo carattere sul nastro di T ) q statocorretto,(a,a,x),(a,a,x),q statocorretto,(destra,destra, f erma) a {0,1,B}, x Σ q statocorretto,(,,x),(,,x),q scriviind,(sinistra, f erma, f erma) x Σ ora è necessario riportare la testina di N 1 sul primo simbolo q scriviind,(a,x,y),(a,x,y),q scriviind,(sinistra, f erma, f erma) a {0,1,B}, x,y Σ q scriviind,(,x,y),(,x,y),q scrivi,( f erma, f erma,destra) x,y Σ. Descriviamo ora le quintuple relative al caso in cui la testina di N 1 legge : q statocorretto,(,b,x),(b,b,x),q scrivi,( f erma, f erma, f erma) x Σ. ii. Se nello stato q statocorretto legge simboli differenti sui nastri N 2 ed N 1, allora la quintupla che sta scandendo su N 2 non è quella da eseguire; pertanto, la testina di N 1 si muove a sinistra fino a posizionarsi all inizio del simbolo di input che stava scandendo, e la testina di N 2 si muove a destra fino a raggiungere il primo simbolo successivo al primo * che incontra e, se tale simbolo non è, entra nello stato q 0, altrimenti entra nello stato di rigetto. Decriviamo prima le quintuple in cui viene riavvolto il nastro N 1 : q statocorrettob,(x,y,z),(x,y,z),q riavvolgin1,(sinistra, f erma, f erma) x,y,z Σ : x y q riavvolgin1,(x,y,z),(x,y,z),q riavvolgin1,(sinistra, f erma, f erma) x Σ { } y,z Σ q riavvolgin1,(,y,z),(,y,z),q prossimaquintupla,(destra,destra, f erma) z Σ y Σ { }. Nell ultima istruzione sopra inizia il movimento della testina di N 2, che continua come segue q prossimaquintupla,(x,y,z),(x,y,z),q prossimaquintupla,( f erma,destra, f erma) x,z Σ y Σ { } q prossimaquintupla,(x,,z),(x,,z),q quintuplefinite?,( f erma,destra, f erma) x,z Σ q prossimaquintupla,(x,y,z),(x,y,z),q 0,( f erma, f erma, f erma) x,y,z Σ q quintuplefinite?,(x,,z),(x,,z),q rigetto,( f erma, f erma, f erma) x,z Σ. (b) se nello stato q 0 legge simboli differenti sui nastri N 2 ed N 3, allora la quintupla che sta scandendo su N 2 non è quella da eseguire; pertanto, sposta la testina di N 3 a sinistra fino a posizionarla sul primo simbolo a destra del carattere e sposta la testina di N 2 a destra fino a posizionarla sul primo simbolo successivo al primo che incontra e, se tale simbolo non è, entra nello stato q 0, altrimenti entra nello stato di rigetto: q 0,(a,x,y),(a,x,y),q riavvolgin3,( f erma, f erma,sinistra) a Σ { }, x,y Σ : x y q riavvolgin3,(a,x,y),(a,x,y),q riavvolgin3,( f erma, f erma,sinistra) a Σ, x Σ y {0,1} q riavvolgin3,(,x,y),(,x,y),q prossimaquintupla,( f erma, f erma,destra) x Σ y {0,1}. Informatica Teorica, 2010/2011 Macchina di Turing Universale 3

2) nello stato q scrivi, inizia l esecuzione della quintupla che ha individuato sul nastro N 2 scrivendo il nuovo simbolo su N 1 : dunque, nello stato q scrivi, copia su N 1 la sequenza di χ 0 e 1, riavvolge il nastro N 2 di χ posizioni e poi entra nello stato q cambiastato con la testina di N 2 che posizionata sul primo carattere che descrive lo stato in cui T deve entrare q scrivi,(a,x,y),(x,x,y),q scrivi,(destra,destra, f erma) a Σ { }, x Σ { } y Σ q scrivi,(,,y),(,,y),q scritto,(sinistra,destra, f erma) y Σ q scritto,(a,x,y),(a,x,y),q scritto,(sinistra, f erma, f erma) a Σ { }, x,y Σ q scritto,(,x,y),(,x,y),q cambiastato,(destra, f erma, f erma) x Σ { } y Σ. 3) nello stato q cambiastato, prosegue l esecuzione della quintupla che ha individuato sul nastro N 2 modificando il contenuto del nastro N 3 : dunque, nello stato q cambiastato, scrive su N 3 la sequenza di χ caratteri che legge su N 2, riavvolge il nastro N 3 ed entra nello stato q muovi con la testina di N 2 posizionata sul primo simbolo che descrive il movimento che T deve eseguire q cambiastato,(a,x,y),(a,x,x),q scrivi,( f erma,destra,destra) a Σ, x,y {0,1,B} q cambiastato,(a,, ),(a,, ),q statocambiato,( f erma,destra,sinistra) a Σ q statocambiato,(a,x,y),(a,x,y),q statocambiato,( f erma, f erma,sinistra) a Σ, x Σ y {0,1,B} q statocambiato,(a,x, ),(a,x, ),q muovi,( f erma, f erma,destra) a Σ, x Σ. 4) nello stato q muovi, termina l esecuzione della quintupla che ha individuato sul nastro N 2 muovendo opportunamente la testina del nastro N 1. Se il carattere letto sul nastro N 2 è 0, allora non deve spostare la testina di N 1 e, semplicemente, entra nello stato q mosso : q muovi,(a,0,y),(a,0,y),q mosso,( f erma, f erma, f erma) a Σ, y Σ. Se il carattere letto sul nastro N 2 è 1, è necessario capire quale sia il carattere successivo per entrare nello stato q destra oppure q sinistra : q muovi,(a,1,y),(a,1,y),q prossimobit,( f erma,destra, f erma) a Σ, y Σ q prossimobit,(a,0,y),(a,0,y),q sinistra,( f erma, f erma, f erma) a Σ, y Σ q prossimobit,(a,1,y),(a,1,y),q destra,( f erma, f erma, f erma) a Σ, y Σ. Nello stato q destra, muove a destra la testina di N 1 fino a posizionarla sul carattere successivo al primo che incontra: q destra,(a,x,y),(a,x,y),q destra,(destra, f erma, f erma) a Σ { }, x,y Σ q destra,(,x,y),(,x,y),q riavvolgi,(destra, f erma, f erma) x,y Σ. Nello stato q sinistra, muove a sinistra la testina di N 1 fino a posizionarla sul carattere precedente al primo che incontra: se tale carattere non è si muove a destra di due posizioni (posizionandosi sul primo carattere a Informatica Teorica, 2010/2011 Macchina di Turing Universale 4

destra di ), altrimenti scrive una sequenza di χ B preceduta da e poi si posiziona sul primo carattere 0 o 1 a destra che incontra q sinistra,(a,x,y),(a,x,y),q sinistra,(sinistra, f erma, f erma) a Σ { }, x,y Σ q sinistra,(,x,y),(,x,y),q primosimbolo?,(sinistra, f erma, f erma) x,y Σ q primosimbolo?,(a,x,y),(a,x,y),q destra,(destra, f erma, f erma) a Σ x,y Σ q primosimbolo?,(,x,y),(b,x,y),q k,(destra, f erma, f erma) x,y Σ q i,(,x,y),(b,x,y),q i 1,(destra, f erma, f erma) x,y Σ i = 2,...,k q 1,(,x,y),(,x,y),q destra,(destra, f erma, f erma) x,y Σ. 5) nello stato q riavvolgi, riposiziona la testina del nastro N 2 sul primo carattere in esso contenuto: rimane nello stato q riavvolgi muovendo a sinistra la testina di N 2 fino a quando non legge un (o B) su N 2 e poi entra nello stato q 0 muovendo a destra la testina di N 2 : q riavvolgi,(a,x,y),(a,x,y),q riavvolgi,( f erma,sinistra, f erma) a,x,y Σ q riavvolgi,(,x,y),(b,x,y),q 0,( f erma,destra, f erma) x,y Σ q riavvolgi,(b,x,y),(b,x,y),q 0,( f erma,destra, f erma) x,y Σ. Informatica Teorica, 2010/2011 Macchina di Turing Universale 5