la "macchina" universale di Turing



Documenti analoghi
4 3 4 = 4 x x x 10 0 aaa

Appunti sulla Macchina di Turing. Macchina di Turing

ESEMPIO 1: eseguire il complemento a 10 di 765

SISTEMI DI NUMERAZIONE E CODICI

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO

Le Macchine di Turing

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Algebra Di Boole. Definiamo ora che esiste un segnale avente valore opposto di quello assunto dalla variabile X.

I sistemi di numerazione

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Dispense di Informatica per l ITG Valadier

4. Operazioni aritmetiche con i numeri binari

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

Appunti di Sistemi Elettronici

Alessandro Pellegrini

Lezione 8. La macchina universale

Informazione analogica e digitale

la scienza della rappresentazione e della elaborazione dell informazione

Obiettivi dell Analisi Numerica. Avviso. Risoluzione numerica di un modello. Analisi Numerica e Calcolo Scientifico

Utilizzo delle formule in Excel

Origini e caratteristiche dei calcolatori elettronici

Calcolatori: Algebra Booleana e Reti Logiche

Il sapere tende oggi a caratterizzarsi non più come un insieme di contenuti ma come un insieme di metodi e di strategie per risolvere problemi.

Elementi di Informatica e Programmazione

Sistema di numerazione binario, operazioni relative e trasformazione da base due a base dieci e viceversa di Luciano Porta

Capitolo 2. Operazione di limite

Strutturazione logica dei dati: i file

Convertitori numerici in Excel

BIT? Cosa c è dietro a questo nome? Che cos è il bit? Perché si usa? Come si converte un numero binario?

ALGEBRA DELLE PROPOSIZIONI

Algoritmi e Complessità

La programmazione. Sviluppo del software

Lezioni di Matematica 1 - I modulo

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

la scienza della rappresentazione e della elaborazione dell informazione

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

- Sistemi di numerazione 1 - Sistemi di Numerazione

Informatica per le discipline umanistiche 2 lezione 14

Sistema operativo. Sommario. Sistema operativo...1 Browser...1. Convenzioni adottate

Algoritmi e strutture dati. Codici di Huffman

Varianti Macchine di Turing

Rappresentazione dei numeri in un calcolatore

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico

= 1*2^7 + 1*2^6 + 0*2^5 + 1*2^4 + 0*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 210

Sistemi Web! per il turismo! - lezione 3 -

Laboratorio di Informatica di Base Archivi e Basi di Dati

Corrispondenze e funzioni

Le macchine di Turing

Aritmetica: operazioni ed espressioni

4. Operazioni elementari per righe e colonne

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

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6

Appunti del corso di Informatica 1 (IN110 Fondamenti) 2 Algoritmi e diagrammi di flusso

I Sistemi di numerazione e la rappresentazione dei dati

Laurea Specialistica in Informatica

Lezione 2 OPERAZIONI ARITMETICHE E LOGICHE ARCHITETTURA DI UN ELABORATORE. Lez2 Informatica Sc. Giuridiche Op. aritmetiche/logiche arch.

SISTEMI DI NUMERAZIONE IL SISTEMA DECIMALE

Iniziamo con un esercizio sul massimo comun divisore: Esercizio 1. Sia d = G.C.D.(a, b), allora:

PROPRIETA' ASSOCIATIVA La somma di tre o più addendi non cambia se al posto di alcuni di essi si sostituisce la loro somma.

I SISTEMI DI NUMERAZIONE

Operazioni binarie fondamentali

Appunti di informatica. Lezione 2 anno accademico Mario Verdicchio

Introduzione allo Scilab Parte 1: numeri, variabili ed operatori elementari

LA NOTAZIONE SCIENTIFICA

La prof.ssa SANDRA VANNINI svolge da diversi anni. questo percorso didattico sulle ARITMETICHE FINITE.

(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, = 1, 431 0, = 0, 862 0, = 1, 792 0, = 1, 448 0, = 0, 896

Codici Numerici. Modifica dell'informazione. Rappresentazione dei numeri.

I SISTEMI DI NUMERAZIONE

LABORATORIO DI MATEMATICA RENDITE, AMMORTAMENTI, LEASING CON EXCEL

1. PRIME PROPRIETÀ 2

Schemi delle Lezioni di Matematica Generale. Pierpaolo Montana

L analisi dei dati. Capitolo Il foglio elettronico

Il principio di induzione e i numeri naturali.

Fondamenti di Informatica. Computabilità e Macchine di Turing. Prof. Franco Zambonelli Gennaio 2011

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Fondamenti di calcolo booleano

Anno 3. Funzioni: dominio, codominio e campo di esistenza

Cosa è un foglio elettronico

Fasi di creazione di un programma

Modulo 1: Motori di ricerca

Come costruire una presentazione. PowerPoint 1. ! PowerPoint permette la realizzazione di presentazioni video ipertestuali, animate e multimediali

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

MAPPE DI KARNAUGH. Nei capitoli precedenti si è visto che è possibile associare un circuito elettronico o elettrico ad una funzione logica.

Logica Numerica Approfondimento 1. Minimo Comune Multiplo e Massimo Comun Divisore. Il concetto di multiplo e di divisore. Il Minimo Comune Multiplo

LINGUAGGI DI PROGRAMMAZIONE

Uso di base delle funzioni in Microsoft Excel

Prodotto libero di gruppi

Funzioni inverse Simmetrie rispetto alla bisettrice dei quadranti dispari. Consideriamo la trasformazione descritta dalle equazioni : = y

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Informatica Generale (Prof. Luca A. Ludovico) Presentazione 5.1 Operazioni aritmetiche nel sistema binario

ALGORITMI e PROGRAMMI Programmazione: Lavoro che si fa per costruire sequenze di istruzioni (operazioni) adatte a svolgere un dato calcolo

I Problemi e la loro Soluzione. Il Concetto Intuitivo di Calcolatore. Risoluzione di un Problema. Esempio

Macchine a stati finiti. Sommario. Sommario. M. Favalli. 5th June 2007

+ / operatori di confronto (espressioni logiche/predicati) / = > < Pseudo codice. Pseudo codice

Lezione 2 Circuiti logici. Mauro Piccolo piccolo@di.unito.it

Scopo della lezione. Informatica. Informatica - def. 1. Informatica

Informatica. Rappresentazione dei numeri Numerazione binaria

Dispensa di Informatica I.1

APPUNTI DI MATEMATICA ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1)

Le equazioni. Diapositive riassemblate e rielaborate da prof. Antonio Manca da materiali offerti dalla rete.

Transcript:

la "macchina" universale di Turing Nel 1854, il matematico britannico George Boole (1815-1864), elaborò una matematica algebrica che da lui prese il nome. Nell'algebra booleana le procedure di calcolo si possono effettuare grazie a operatori matematici (AND, OR, NOT, ecc.) corrispondenti alle leggi della logica. L'algebra di Boole entrò prepotentemente alla ribalta nel 1936, quando il matematico britannico Alan Mathison Turing (1912-1954), immaginò una "macchina" o "automa" - esistente unicamente a livello teorico - con la quale dimostrò formalmente la possibilità di eseguire qualsiasi algoritmo: una procedura di calcolo o, più in generale, la sequenza delle operazioni necessarie per risolvere un problema in un numero finito di operazioni. In tal modo, Turing aprì la strada al campo di quelle ricerche informatiche che prendono il nome di intelligenza artificiale (v. test di Turing), e l'algebra di Boole si rivelò di fondamentale importanza nella progettazione degli odierni computer. ricerca di un algoritmo Per Alan Turing, la prima questione da risolvere consisteva nel precisare le azione elementari che compiamo quando eseguiamo un calcolo. In effetti, una semplice operazione di somma viene appresa facilmente fin dalle scuole elementari: è un'operazione che effettuiamo meccanicamente ogni giorno, quando per esempio acquistiamo due oggetti dallo stesso fornitore, o quando contabilizziamo il denaro che abbiamo in tasca. L'addizione è dunque un'operazione banale... ma sappiamo precisare i passaggi necessari per effettuarla, cioé definirne l'algoritmo? "Programmi" per risolvere manualmente problemi numerici sono noti fin dal 1800 a.c., quando i matematici babilonesi del tempo di Hammurabi precisarono le regole per risolvere alcuni tipi di equazioni. Le regole consitevano in procedimenti dettagliati passo dopo passo applicati dettagliatamente a particolari esempi numerici. In particolare, il termine "algoritmo" si rintraccia dall'ultima parte del nome del matematico persiano Abu Ja'far Mohammed ibn Mûsâ al-khowârizmî, il cui testo di arirmetica esercitò una notevole influenza per molti secoli. Per far questo, supponiamo di eseguire una somma di due numeri (naturali), per fissare le idee, 2 + 4 Visualizzando una sequenza di numeri naturali ordinati in successione, consideriamo il numero 2 e ripetiamo 4 volte l'operazione di passaggio al numero successivo: da 2 a 3, da 3 a 4, da 4 a 5, da 5 a 6. Il numero 6 è il risultato richiesto. Per ottenere il risultato della somma proposta, dobbiamo quindi seguire questi passaggi:

individuare un numero (quello di partenza); passare al numero immediatamente successivo; controllare se si è raggiunto il numero di ripetizioni previste (n = 4, in questo caso); ripetere un'operazione (quella di passaggio al numero successivo) Questo è dunque l'algoritmo della somma di due numeri. La sequenza di operazioni esaminata, si presta anche per eseguire moltiplicazioni. Per esempio, 2 x 6 equivale ad addizionare 6 volte il numero 2 (o 2 volte il mumero 6) Per ottenere il risultato della moltiplicazione proposta, dobbiamo seguire questi passaggi: individuare un numero (quello di partenza); passare al numero immediatamente successivo; controllare se si è raggiunto il numero di ripetizioni previste per il primo ciclo (n = 2, in questo caso); ripetere un'operazione (quella di passaggio al numero successivo); controllare se si è raggiunto il numero di ripetizioni previste per il secondo ciclo (k = 6, in questo caso) Come si vede, si è aggiunto un secondo controllo. Con analogo procedimento, è possibile anche l'elevazione a potenza. Per esempio, 2 3 = 2 x 2 ripetuta 3 volte. In questo caso, si dovrà aggiungere un terzo controllo. Si potrebbe vedere (ma la questione è irrilevante per questa discussione) che il procedimento utilizzato per addizioni, moltiplicazioni ed elevazione a potenza, vale anche per le operazioni inverse: sottrazione, divisione (una successione di sottrazioni: 17/5 = 17-5 - 5-5 = 3 con il riporto di 2), estrazione di radice. la macchina di Turing Dimostrata l'esistenza di algoritmi per effettuare le operazione matematiche fondamentali, la seconda questione da risolvere consisteva nel precisare l'occorrente per sviluppare la sequenza di operazioni previste... naturalmente non ci riferiamo a carta e penna, ma a qualcosa di più raffinato. Ricordando che la prima calcolatrice, la pascalina, fu inventata nel 1642 da Blaise Pascal, per comprendere l'importanza della macchina o automa di Turing, dobbiamo fare una distizione tra le calcolatrici ed i moderni calcolatori. La linea di separazione può essere individuata nel fatto che le calcolatrici riescono ad eseguire un certo numero di operazioni ma non possono essere programmate: manca la possibilità di specificare alla macchina processi di calcolo articolati e complessi, definiti in base ad opportune sequenze di comandi che possano essere eseguiti in modo completamente automatico. L'idea fondamentale alla base del calcolatore programmabile (elaboratore o computer), è che qualsiasi tipo di computazione consiste nella manipolazione di simboli (ne bastano solo 2 come nei calcolatori digitali) seguendo un'insieme di regole (algoritmo). Con questo modello nasce l'idea di "calcolatore universale". Il metodo di programmazione di Turing, essenzialmente descriveva una macchina che utilizzava alcuni semplici istruzioni. Fare sviluppare ad un computer un compito particolare, era soltanto una questione di dividere il problema in una serie di problemi più semplici (un'operazione identica al processo affrontato dagli odierni programmatori) risolvibili appunto con semplici operazioni.

Una macchina o automa di Turing è definita da un insieme di regole che definiscono il comportamento della macchina su un nastro di Input-Output (lettura e scrittura). Il nastro può essere immaginato come una sottile striscia di carta divisa in quadratini dette celle e di lunghezza adeguata per eseguire qualsiasi algoritmo. Ogni cella contiene un simbolo oppure è vuota. L'automa utilizza una testina che si sposta lungo il nastro leggendo, scrivendo oppure cancellando simboli nelle celle del nastro. La macchina analizza il nastro, una cella alla volta, iniziando dalla cella che contiene il simbolo più a sinistra nel nastro. Da quanto esposto, una macchina di Turing puo' essere immaginata come una sorta di registratore a nastro con una testina di lettura, scrittura e cancellazione. La testina possiede un indicatore che determina, per ogni passaggio di calcolo, lo stato specifico in cui la macchina si trova mentre sta leggendo il simbolo che corrisponde alla particolare cella del nastro sul quale è posizionata. Definita la macchina, devono essere specificate le regole l equivalente del moderno software che indichino che cosa fare in corrispondenza della combinazione di stati e di simboli letti sul nastro. In generale, un automa di Turing deve poter effettuare le seguenti operazioni: conservare la memoria del suo stato interno; leggere il simbolo scritto in una cella; sovrascrivere o cancellare il simbolo scritto in una cella; scorrere il nastro cella dopo cella, verso destra o verso sinistra; non fare alcuna operazione. Per esempio, la seguente istruzione contenuta in tabella, impone che se l indicatore di stato è in posizione 1 e la testina sta leggendo il simbolo A, l istruzione consiste nel cancellare il simbolo, far avanzare la testina e cambiare lo stato della macchina a 2. stato iniziale legge scrive 1 A cancella > 2 azione stato finale Per dare ragione dell'universalità della macchina di Turing, occorrerebbe mostrare come effettuare le 4 operazioni fondamentali (addizione, sottrazione, moltiplicazione e divisione) in quanto tutte le altre sono riducibili a queste. Tuttavia, ci limiteremo ad esaminare solo l'operazione di somma perché la programmazione di una macchina di Turing è laboriosa in quanto richiede un linguaggio di basso livello, "comprensibile" dalla macchina (oggi gli elaboratori possono utilizzare linguaggi di alto livello che sono più vicini alla logica umana). La tabella seguente contiene le istruzioni per addizionare un certo numero di "A" (per esempio, 4) ad una sequenza di "A" (per esempio, 2). E' da notare che le istruzioni non vengono necessariamente eseguite sequenzialmente, ovverosia una dopo l'altra, bensì in base allo stato dell'automa. stato iniziale legge scrive azione stato finale 4 A A > 4 4 - A > 3 3 - A > 2 2 - A > 1 1 - A STOP 0 Per esempio, nel caso della somma proposta (addizionare 4 volte "A"), la prima istruzione prevede che se l'automa si trova nello stato iniziale 4 e legge la lettera "A", deve riscrivere la lettera, poi l'automa si sposta di una casella verso destra e mantiene il suo stato interno (4) finquando trova una A da leggere.

A questo punto, poiché l'automa (nello stato 4) non legge una "A" ma trova una casella vuota, deve scrivere nella casella sottostante una lettera A, spostarsi a destra e passare allo stato 3 l'automa nello stato 3 non legge una "A" ma trova una casella vuota, quindi deve scrivere nella casella sottostante una lettera A, spostarsi a destra e passare allo stato 2 l'automa nello stato 2 non legge una "A" ma trova una casella vuota, quindi deve scrivere nella casella sottostante una lettera A, spostarsi a destra e passare allo stato 1 Infine, quando lo sato interno è 1, l'automa scrive una A, assume lo stato n = 0 e si ferma.

Il programma visto puo' essere realizzato con una sequenza di istruzioni dinamiche: le istruzioni non sono predefinite, ma vengono via via specificate. In questo modo, un programma di addizione è valido per qualsiasi combinazione di addendi (nel caso si vogliano addizionare quattro "A", si imporrà n = 4). E' da notare che l'istruzione n = n - 1 non è un'equazione algebrica, ma implica che lo stato n deve diventare n - 1: se n = 4, diventa n = 4-1 = 3. stato iniziale legge scrive azione stato finale n A A > n n - A > n = n - 1 1 - A STOP 0 Con la macchina di Turing (che, per quanto possa sembrare strano, riassume la struttura funzionale di un computer) è possibile risolvere anche problemi non numerici; infatti basta associare ai simboli un significato alfabetico o alfanumerico. (v. algebra booleana) Turing non costruì materialmente la sua "macchina universale". Infatti, per quanto tecnicamente realizzabile, il meccanismo (elettromeccanico) sarebbe stato lento e poco affidabile per impieghi pratici. D'altra parte, data la sua semplicità, una macchina di Turing puo' essere simulata con carta e penna: se un operarore umano puo' eseguire le istruzioni senza incertezze e ambiguità, allora la procedura è automatizzabile. Nel 1943, viene realizzato in Pennsylvania l'e.n.i.a.c.(electronic Numerical Integrator And Calculator): il primo elaboratore senza parti meccaniche in movimento (all'epoca i calcolatori erano elettromeccanici). Il giorno della sua presentazione, l'eniac (col sistema della scheda perforata) moltiplicò il numero 97.367 per se stesso 5.000 volte, completando l'operazione in meno di un secondo. Con l'eniac, che funzionò fino al 1955, nasce l'era informatica vera e propria ed anche il termine BIT (Binary Digit = Cifra Binaria). copyright Marcello Guidotti, 1999-2002. http://www.nemesi.net/turing.htm Questo articolo può essere liberamente pubblicato su qualsiasi rivista interamente o in estratto, purché sia citata la fonte e l'indirizzo di questo sito.