Macchine di Turing: somma di due numeri

Documenti analoghi
Informatica Teorica. Macchine a registri

Cap. 2 - Rappresentazione in base 2 dei numeri interi

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

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

Laboratorio di Informatica. Esercitazione su algoritmi e diagrammi di flusso

Somma di numeri binari

Appunti di informatica. Lezione 3 anno accademico Mario Verdicchio

Calcolo numerico e programmazione Rappresentazione dei numeri

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

Le Macchine di Turing

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

Modulo 1 Concetti di base della Tecnologia dell Informazione

Rappresentazione dell Informazione

Corso di Informatica di Base

Numeri interi (+/-) Alfabeto binario. Modulo e segno

Esercizi di Fondamenti di Informatica per la sicurezza. Stefano Ferrari

Lezione 4. Sommario. L artimetica binaria: I numeri relativi e frazionari. I numeri relativi I numeri frazionari

Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing

Somma di numeri floating point. Algoritmi di moltiplicazione e divisione per numeri interi

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

1.2f: Operazioni Binarie

PROBLEMI ALGORITMI E PROGRAMMAZIONE

Conversione di base. Conversione decimale binario. Si calcolano i resti delle divisioni per due

Lezioni di Informarica. Prof. Giovanni Occhipinti

Codifica dei Numeri. Informatica ICA (LC) 12 Novembre 2015 Giacomo Boracchi

Modulo e segno Complemento a 1 (CA1) Complemento a 2 (CA2)

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione dei numeri relativi

APPUNTI DI INFORMATICA

Architettura degli Elaboratori

Errori di misura Teoria

I.4 Rappresentazione dell informazione

Il concetto di calcolatore e di algoritmo

La codifica digitale

Architettura dei computer

In molte applicazioni sorge il problema di sapere in quanti modi possibili si può presentare un certo fenomeno.

in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

IL PRIMO PROGRAMMA IN C

Lezione 3. I numeri relativi

Codifica binaria. Rappresentazioni medianti basi diverse

Architettura di Von Neumann. Architettura di Von Neumann. Architettura di Von Neumann INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042)

Aritmetica dei Calcolatori Elettronici

Rappresentazione di numeri relativi (interi con segno) Rappresentazione di numeri interi relativi (con N bit) Segno e Valore Assoluto

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

Sistemi Web per il turismo - lezione 3 -

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

Rappresentazioni numeriche

Rappresentazione in complemento a 2: caratteristiche generali

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

Rappresentazione dell Informazione

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

Componenti di un processore

RAPPRESENTAZIONE DELLE INFORMAZIONI

Esercizio su MT. Svolgimento

Sistemi di numerazione

Rappresentazione dei numeri binari.

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Corso di Architettura degli Elaboratori

La Rappresentazione dell Informazione

Algoritmi. Pagina 1 di 5

Note sull implementazione in virgola fissa di filtri numerici

Informatica Generale 1 - Esercitazioni Flowgraph, algebra di Boole e calcolo binario

Rappresentazione con i diagrammi di flusso (Flow - chart)

2. Algoritmi e Programmi

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

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Sommario. Tabelle ad indirizzamento diretto e hash Funzioni Hash

Corso di Laurea in Fisica. Geometria. a.a Canale 3 Prof. P. Piazza Magiche notazioni

Richiami di Algebra di Commutazione

Aniello Murano Automi e Pushdown

MICROSOFT EXCEL / OPENOFFICE CALC LE FORMULE CONDIZIONALI

Codifica. Rappresentazione di numeri in memoria

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE

La memoria principale

Il processore. Istituzionii di Informatica -- Rossano Gaeta

= < < < < < Matematica 1

PARTE III MACCHINE A REGISTRI

Precorsi di matematica

Laboratorio di Informatica

Sviluppo di programmi

Algoritmi e Strutture Dati - II modulo Soluzioni degli esercizi

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Sistemi di numerazione

Transcript:

Informatica Teorica 2/2 M.Di Ianni Macchine di Turing: somma di due numeri Vogliamo definire una macchina di Turing che, presi in input due numeri n e m espressi in notazione binaria, calcola il valore n + m. Risolveremo questo problema definendo sia macchine di Turing ad nastro che macchine di Turing a 3 nastri. Macchine ad nastro Sia Σ = {,, +, }. Assumiamo che, all inizio della computazione, l input sia memorizzato sul nastro, a partire dalla cella, nella forma: seguito da [n] bin seguito dal carattere + seguito da [m] bin seguito da (dove [n] bin e [m] bin indicano, rispettivamente, la rappresentazione binaria di n e di m). Assumiamo anche che la testina sia posizionata sulla cella di indirizzo. Inoltre, decidiamo di memorizzare il risultato nella porzione di nastro ad indirizzi negativi, con la cifra meno significativa nella cella di indirizzo e di utilizzare la cella a destra dell ultimo carattere per memorizzare il valore del riporto. Rappresentazione di n e m con lo stesso numero di caratteri Per semplicità, iniziamo a descrivere una macchina di Turing T F che calcola la somma di n e m quando tali valori sono rappresentati con lo stesso numero di caratteri: ad esempio, se n = 5 e m = 8, allora [n] bin = e [m] bin =. In questo caso, l algoritmo implementato dalla macchina T F che andiamo a definire è il seguente:. nello stato iniziale q, sposta la testina a destra fino a quando non raggiungi l ultimo carattere di [n] bin (ossia, la sua cifra meno significativa), ricorda il carattere letto (ossia, entra nello stato q letto oppure q letto ) e cancellalo (ossia, sostituiscilo con il carattere + ): q,,,q,des q,,,q,des q,,,q,des q,+,+,q,sin q,,+,q letto,des q,,+,q letto,des Informatica Teorica, 2/2 Macchine di Turing: somma di due numeri

q,+,+,q,sin 2. sposta la testina a destra fino a raggiungere l ultimo carattere di [m] bin, ricordalo (ossia, entra nello stato q letto oppure q letto oppure q letto ) e cancellalo,,x,x,q letto,des x Σ { },x,x,q letto,des x Σ { },,,q ind,sin,,,q ind,sin,,,qletto,des,,,qletto,des,,,qletto,des,,,qletto,des 3. sposta la testina a destra sul carattere di riporto, modificalo opportunamente e ricorda il carattere della somma (ossia, entra nello stato q scrivi oppure q scrivi ):,,,qletto des,,,qletto des,,,qletto des,,,qscrivi sin,,,qscrivi sin,,,qscrivi sin,,,qscrivi sin,,,qscrivi sin,,,qscrivi sin,,,qscrivi sin,,,qscrivi sin,,,qscrivi sin ove queste ultime tre quintuple gestiscono il caso in cui vengono sommati i caratteri meno significativi di [n] bin e [m] bin e, quindi, il riporto non è ancora stato inizializzato; Informatica Teorica, 2/2 Macchine di Turing: somma di due numeri 2

4. sposta la testina sul primo a sinistra, scrivi il carattere calcolato e vai nello stato q 2 : q scrivi,x,x,q scrivi,sin x Σ q scrivi,x,x,q scrivi,sin x Σ q scrivi,,,q 2,des q scrivi,,,q 2,des 5. sposta la testina a destra fino a posizionarla sul primo carattere e torna nello stato q q 2,x,x,q 2,des x Σ { } q 2,,,q,des 6. se il carattere letto è diverso da e da allora esso è + e, quindi, la scansione di [n] bin (e di [m] bin ) è terminata: per completare il calcolo della somma è necessario aggiungere il valore del riporto, se diverso da, e poi entrare nello stato finale q f inale : q,+,+,q 2,des q 2,,,q 2,des q 2,,,q f inale, f er q 2,,,q 3,sin q 3,,,q 3,sin q 3,+,+,q 3,sin q 3,,,q 3,sin q 3,,,q 3,sin q 3,,,q f inale, f er Osserviamo che il funzionamento della macchina T F è definito solo quando l input è scritto sul nastro rispettando i vincoli precedentemente descritti: [n] bin e [m] bin sono codificati in binario utilizzando lo stesso numero di caratteri, la stringa è scritta sul nastro nella forma [n] bin + [m] bin. Se l input non soddisfa tali vincoli il comportamento della macchina non è definito. Osserviamo che è questo il concetto di precondizione: garantiamo il funzionamento di una porzione di codice solo se la precondizione è verificata. Informatica Teorica, 2/2 Macchine di Turing: somma di due numeri 3

Rappresentazione di n e m con numero arbitrario di caratteri Assumiamo ora che i valori n e m sono rappresentati in binario utilizzando il minor numero di caratteri possibile: così, se n = 5 e m = 8, allora rappresentiamo [n] bin = e [m] bin =. La macchina T V che calcola n + m in queste ipotesi differisce da T F soltanto per le questioni elencate di seguito. Se il numero di caratteri [n] bin di [n] bin è maggiore del numero di caratteri [m] bin di [m] bin allora, dopo aver letto l ultimo carattere di [n] bin ed essere entrata nello stato q letto o q letto, al punto 2. sopra, che descrive T F, T V potrebbe non trovare alcun carattere di [m] bin ; allora, è necessario sommare ciascuno dei rimanenti caratteri di [n] bin con il riporto (ricalcolando ogni volta il valore del riporto) ed aggiungere i caratteri così calcolati al risultato. In definitiva, alle istruzioni del punto 2. devono essere aggiunte le seguenti 2. se nello stato q ind oppure q ind leggi il carattere + (e, quindi, tutti i caratteri di [m] bin sono già stati considerati), entra nello stato q m f inito o, rispettivamente, q m f inito e sposta la testina a destra fino a posizionarla sul carattere del riporto; poi calcola il nuovo carattere di riporto ed il carattere da aggiungere all output f inito,+,+,qm,des f inito,+,+,qm,des,,,q m f inito,des,,,q m f inito,des,,,q scrivi,des,,,q scrivi,des,,,q scrivi,des,,,q scrivi,des Se [n] bin < [m] bin allora, al punto 7. sopra, che descrive T F, se la testina legge il carattere + mentre la macchina è nello stato q non si può concludere che la computazione è terminata, ma è necessario verificare che sia stata terminata la scansione di tutti i caratteri di [m] bin. Allora, il punto 7. deve essere sostituito dal seguente 7. se il primo carattere a destra del primo carattere è + allora la scansione di [n] bin è terminata: la macchina entra nello stato q n f inito e verifica se è terminata anche la scansione di [m] bin (e deve calcolare l eventuale carattere dovuto al riporto) oppure se deve aggiungere altri caratteri all output (analogamente alle operazioni descritte al punto 2.): q,+,+,q n f inito,des q n f inito,+,+,q n f inito,des q n f inito,,,q rip,des q rip,,,q rip,des q rip,,,q scrivi,sin q rip,,,q f inale, f er q n f inito,,,q letto,des q n f inito,,,q letto,des Nelle ultime due istruzioni la macchina entra nello stato q letto in quanto ha scoperto che esistono ancora caratteri di [m] bin ma che non esistono più caratteri di [n] bin : il singolo carattere di [m] bin (che dovrà essere sommato al riporto, analogamente al punto 2.) avrà sempre lo stesso valore della sua somma con. Osserviamo che, come nel caso di T F, anche T V opera correttamente solo se sono rispettate le sue precondizioni. Osserviamo anche esplicitamente che una delle precondizioni per il corretto funzionamento di entrambe le macchine è che [n] bin > e [m] bin >. Informatica Teorica, 2/2 Macchine di Turing: somma di due numeri 4

Macchine a più nastri Le macchine di Turing possono essere definite anche con un numero arbitrario (ma costante) di nastri su ciascuno dei quali opera una diversa testina di lettura/scrittura. Nastri differenti possono essere utilizzati, ad esempio, per contenere porzioni dell input cui sono associati diversi significati (ad esempio, le macchine di Turing che definiamo in questa sezione utilizzano un nastro per contenere n ed uno per contenere m), oppure un nastro può essere dedicato all output, o, ancora, uno o più nastri possono essere utilizzati come nastri di lavoro. In ogni caso, come vedremo in questa sezione, l utilizzo di più nastri, in generale, semplifica il progetto della macchina. Consideriamo macchine di Turing a più nastri di due tipi differenti. In una macchina di Turing a testine solidali, in ogni istruzione, le celle dei nastri scandite dalle testine di lettura/scrittura hanno il medesimo indirizzo: così, assumendo che all inizio della computazione le testine siano posizionate sulle celle di indirizzo dei rispettivi nastri, all istante esse saranno tutte posizionate sulle celle di indirizzo + oppure oppure (dipendentemente dal movimento specificato dalla quintupla eseguita). In generale, se dopo un certo numero di passi le testine sono posizionate sulle celle di indirizzo h, al passo successivo (ricordiamo che un passo corrisponde all esecuzione di una quintupla) esse saranno tutte posizionate sulle celle di indirizzo h + oppure h oppure h. Una quintupla di una macchina di Turing a k nastri a testine solidali ha la forma q i,s,s 2,q j,mov, dove s = (s,s 2,...,s k ), s 2 = (s 2,s 22,...,s 2k ) e mov {sin, f er,des}. Il significato di una quintupla è il seguente: se la macchina è nello stato q i, la testina legge il simbolo s sul nastro, la testina 2 legge il simbolo s 2 sul nastro 2,..., e la testina k legge il simbolo s k sul nastro k, allora la testina scrive il simbolo s 2 sul nastro, la testina 2 scrive il simbolo s 22 sul nastro 2,..., la testina k scrive il simbolo s 2k sul nastro k, la macchina entra nello stato q j e tutte le testine eseguono il movimento mov. In una macchina di Turing a testine indipendenti, in seguito all esecuzione di una quintupla le testina si muovono indipendentemente le une dalle altre. Dunque, dopo l esecuzione di un certo numero di passi, la posizione di una testina non ha alcuna relazione con la posizione delle altre testine. Una quintupla di una macchina di Turing a k nastri a testine indipendenti ha quindi la forma q i,s,s 2,q j,mov, dove s = (s,s 2,...,s k ), s 2 = (s 2,s 22,...,s 2k ), mov = (mov,mov 2,...,mov k ) e mov h {sin, f er,des}, per h =,...,k. Il significato di una quintupla è il seguente: se la macchina è nello stato q i, la testina legge il simbolo s sul nastro, la testina 2 legge il simbolo s 2 sul nastro 2,..., e la testina k legge il simbolo s k sul nastro k, allora la testina scrive il simbolo s 2 sul nastro, la testina 2 scrive il simbolo s 22 sul nastro 2,..., la testina k scrive il simbolo s 2k sul nastro k, la macchina entra nello stato q j e la testina esegue il movimento mov, la testina 2 esegue il movimento mov 2,..., e la testina k esegue il movimento mov k. Risolviamo il problema della somma di due numeri definendo macchine a 3 nastri: il nastro N per l input n, il nastro N 2 per l input m, ed il nastro N 3 per l output. Osserviamo che, avendo dedicato ciascun nastro alla memorizzazione di una sola entità, non abbiamo bisogno di caratteri separatori nell alfabeto. Sia allora Σ = {, }. Assumiamo che, all inizio della computazione, l input sia memorizzato, sui nastri N ed N 2, a partire dalle celle e che le testine siano posizionate sulle celle che contengono i caratteri meno significativi di [n] bin e [m] bin, ossia, sulle celle di indirizzo max{ [n] bin, [m] bin }. Al solito, le macchine che andiamo a definire garantiscono il proprio operato a condizione che le precondizioni siano verificate. In questo caso, le precondizioni sono: all inizio della computazione, entrambe le testine che scandiscono i nastri input leggono un carattere diverso da e che ogni cella del nastro N 3 contiene. Macchina a testine solidali L algoritmo implementato dalla macchina T S è, in questo caso, immediato: Informatica Teorica, 2/2 Macchine di Turing: somma di due numeri 5

. nello stato iniziale q, leggi i due caratteri di input sui nastri N ed N 2, calcola il primo carattere del risultato e scrivilo sul nastro N 3, calcola il valore del riporto e memorizzalo nel nuovo stato e, infine, sposta le testine a sinistra: q,(,, ),(,,),q r,sin, q,(,, ),(,,),q r,sin, q,(,, ),(,,),q r,sin, q,(,, ),(,,),q r,sin ; 2. nello stato q r, la macchina sa che la somma effettuata al passo precedente non ha generato riporti; pertanto, se esistono ancora caratteri da sommare sia su N che su N 2, allora q r,(,, ),(,,),q r,sin, q r,(,, ),(,,),q r,sin, q r,(,, ),(,,),q r,sin, q r,(,, ),(,,),q r,sin, se rimangono ancora caratteri da sommare solo su N, allora q r,(,, ),(,,),q r,sin, q r,(,, ),(,,),q r,sin, se rimangono ancora caratteri da sommare solo su N 2, allora q r,(,, ),(,,),q r,sin, q r,(,, ),(,,),q r,sin, se non vi sono più caratteri da sommare, poiché il valore del riporto è, allora non viene scritto alcun nuovo carattere sul nastro N 3 e la computazione termina q r,(,, ),(,, ),q f inale,sin ; 3. nello stato q r, la macchina sa che la somma effettuata al passo precedente ha generato un riporto; pertanto, se esistono ancora caratteri da sommare sia su N che su N 2, allora q r,(,, ),(,,),q r,sin, q r,(,, ),(,,),q r,sin, q r,(,, ),(,,),q r,sin, q r,(,, ),(,,),q r,sin, Informatica Teorica, 2/2 Macchine di Turing: somma di due numeri 6

se rimangono ancora caratteri da sommare solo su N, allora q r,(,, ),(,,),q r,sin, q r,(,, ),(,,),q r,sin, se rimangono ancora caratteri da sommare solo su N 2, allora q r,(,, ),(,,),q r,sin, q r,(,, ),(,,),q r,sin, se non vi sono più caratteri da sommare, poiché il valore del riporto è, allora viene scritto il carattere sul nastro N 3 e la computazione termina q r,(,, ),(,,),q f inale,sin. Macchina a testine indipendenti L algoritmo implementato dalla macchina T I è identico a quello del caso precedente. Lo ripetiamo al solo scopo di illustrare le differenze nella struttura delle quintuple:. nello stato iniziale q, leggi i due caratteri di input sui nastri N ed N 2, calcola il primo carattere del risultato e scrivilo sul nastro N 3, calcola il valore del riporto e memorizzalo nel nuovo stato e, infine, sposta le testine a sinistra: q,(,, ),(,,),q r,(sin,sin,sin), q,(,, ),(,,),q r,(sin,sin,sin), q,(,, ),(,,),q r,(sin,sin,sin), q,(,, ),(,,),q r,(sin,sin,sin) ; 2. nello stato q r, la macchina sa che la somma effettuata al passo precedente non ha generato riporti; pertanto, se esistono ancora caratteri da sommare sia su N che su N 2, allora q r,(,, ),(,,),q r,(sin,sin,sin), q r,(,, ),(,,),q r,(sin,sin,sin), q r,(,, ),(,,),q r,(sin,sin,sin), q r,(,, ),(,,),q r,(sin,sin,sin), se rimangono ancora caratteri da sommare solo su N, allora q r,(,, ),(,,),q r,(sin,sin,sin), q r,(,, ),(,,),q r,(sin,sin,sin), Informatica Teorica, 2/2 Macchine di Turing: somma di due numeri 7

se rimangono ancora caratteri da sommare solo su N 2, allora q r,(,, ),(,,),q r,(sin,sin,sin), q r,(,, ),(,,),q r,(sin,sin,sin), se non vi sono più caratteri da sommare, poiché il valore del riporto è, allora non viene scritto alcun nuovo carattere sul nastro N 3 e la computazione termina q r,(,, ),(,, ),q f inale,(sin,sin,sin) ; 3. nello stato q r, la macchina sa che la somma effettuata al passo precedente ha generato un riporto; pertanto, se esistono ancora caratteri da sommare sia su N che su N 2, allora q r,(,, ),(,,),q r,(sin,sin,sin), q r,(,, ),(,,),q r,(sin,sin,sin), q r,(,, ),(,,),q r,(sin,sin,sin), q r,(,, ),(,,),q r,(sin,sin,sin), se rimangono ancora caratteri da sommare solo su N, allora q r,(,, ),(,,),q r,(sin,sin,sin), q r,(,, ),(,,),q r,(sin,sin,sin), se rimangono ancora caratteri da sommare solo su N 2, allora q r,(,, ),(,,),q r,(sin,sin,sin), q r,(,, ),(,,),q r,(sin,sin,sin), se non vi sono più caratteri da sommare, poiché il valore del riporto è, allora viene scritto il carattere sul nastro N 3 e la computazione termina q r,(,, ),(,,),q f inale,(sin,sin,sin). Informatica Teorica, 2/2 Macchine di Turing: somma di due numeri 8