Prof. Alberto Cimaroli

Corso Programmatori Mercurio

I.T.C.G. "Umberto I" - A
P


Nuova Versione del Simulatore Multimediale
 
MdT5JFx

  

Premessa

Lo studio della Macchina di Turing è previsto quasi all'inizio del programma di Informatica nella
terza classe dell'indirizzo Programmatori Mercurio.
Pur riconoscendo l'alta valenza didattica dell'argomento, non sempre decidevo di svolgerlo durante la mia esperienza di insegnamento, sia per la valutazione della complessità e quindi dei problemi che esso avrebbe potuto provocare in qualche classe specifica, sia per le oggettive difficoltà che si incontrano nell'utilizzare tale formalismo per la risoluzione dei problemi, aiutandosi con strumenti didattici tradizionali come lavagna e gesso.
Spinto da queste considerazioni nel 1996, iniziavo a realizzare con "Toolbook" un simulatore
multimediale, che potesse essere utile nelle diverse fasi previste per lo studio e per l'utilizzo in laboratorio
della Macchina di Turing .
Successivamente, continuavo a svolgere l'argomento di solito a classi terze alterne, valutando il livello di apprendimento delle stesse ed aggiornando, di volta in volta, con nuove funzioni,  la versione del simulatore.
Da alcuni anni, dopo aver notato il forte interesse suscitato dall'argomento nella maggioranza degli studenti e le evidenti facilitazioni che l'utilizzo del simulatore induce nella comprensione dei concetti di base dell'Informatica, del funzionamento del calcolatore e delle tecniche di programmazione, dedichiamo alla Macchina di Turing un  adeguato periodo di tempo che comprende tutta la fase di studio e l'utilizzo
in laboratorio del simulatore per la risoluzione di problemi, fino a quando non iniziamo a scrivere i primi programmi utilizzando un linguaggio di programmazione.

Che cosa è una macchina di Turing? 

Nel 1936 il matematico inglese Alan Turing propose l'idea di una macchina astratta che fosse capace di eseguire ogni tipo di calcolo su numeri e simboli. La tesi di Church postula che la classe delle funzioni calcolabili, secondo il concetto intuitivo di algoritmo, coincide con la classe delle funzioni Turing-calcolabili cioè calcolabili con una Macchina di Turing.

Come è fatta una MdT?

Una MdT è definita da:

  • un nastro infinito

  • una testina di lettura/scrittura

  • un'unità di controllo

Il nastro infinito

Il nastro infinito che può essere considerato come il supporto di memorizzazione delle informazioni (memoria esterna) è suddiviso in celle, in una cella può essere contenuto un simbolo preso da un alfabeto opportuno; un alfabeto è semplicemente un insieme di simboli che comprende anche il blank che corrisponde alla cella vuota.

La testina di lettura/scrittura

La macchina è dotata di una testina di lettura/scrittura in grado di leggere e scrivere il contenuto della cella del nastro su cui si trova;

L'unità di controllo

La macchina è dotata di un'unità di controllo che evolve attraversando un insieme finito di stati interni, a partire da uno stato iniziale fino a raggiungere uno stato finale. Lo stato interno rappresenta una situazione in cui si trova la macchina durante l'esecuzione e come per uno stato della mente di un essere umano, lo stato interno di una MdT definisce l'ambiente in cui una decisione viene presa.

Come funziona una MdT?

Il comportamento della macchina durante l'esecuzione

La macchina analizza il nastro, una cella alla volta, iniziando dalla cella su cui è posizionata la testina.
Ad ogni passo, la macchina legge un simbolo sul nastro e in accordo col suo stato interno corrente

  1. determina il suo prossimo stato interno 

  2. scrive un simbolo sul nastro

  3. decide se spostare o meno la testina a sinistra o a destra di una posizione

Il programma di una MdT

Il comportamento di una MdT può essere programmato definendo un insieme di regole, o quintuple, del tipo:

(stato-interno-corrente,  simbolo-letto,  prossimo-stato-interno,  simbolo-scritto,  direzione testina)
.

Ciascuna quintupla associa ad ogni coppia: 

stato-interno-corrente, simbolo-letto

una terna: 

prossimo-stato-interno, simbolo-scritto, direzione testina

Non può esistere più di una regola che inizi con una coppia stato-interno-corrente, simbolo-letto.

Come opera una MdT

Vediamo adesso come una MdT effettua i suoi calcoli. Inizialmente il nastro contiene una sequenza finita di simboli, detta sequenza di ingresso. La MdT è nel suo stato interno iniziale con la testina posizionata su una cella del nastro contenente un certo simbolo. A partire da questa configurazione iniziale, la MdT effettua una serie di azioni (chiamate mosse) seguendo rigorosamente il suo insieme di regole. Se la macchina raggiunge uno stato interno per cui non esiste nessuna quintupla per la coppia:

stato-interno-corrente, simbolo-letto

allora la MdT si ferma e termina la sua computazione.

In particolare:

  • Determina la regola da applicare in base allo stato interno e al simbolo corrente (quello letto dalla testina)

  • Se esiste una tale regola cambia lo stato, scrive il simbolo sulla cella corrente si sposta come indicato dalla regola (Questo passaggio da una configurazione a quella dell'istante successivo si chiama mossa della MdT)

  • Se non esiste la regola l’esecuzione termina.


Esempio: cambiamo A in B

Vogliamo programmare una Macchina di Turing che, dato sul nastro di input una stringa di A e B, rimpiazza ogni occorrenza di A in B e viceversa

Assumendo che la testina sia posizionata sul primo simbolo della stringa dobbiamo

cambiare una A in B (o viceversa)

spostare la testina sul prossimo carattere

Cambiamo A in B (continua)

Le regole corrispondenti sono:

(q0, A, q0, B, d)

(q0, B, q0, A, d)

In questo caso è sufficiente lo stato q0

Al termine della stringa l’esecuzione sarà arrestata poichè non esiste una quintupla che inizia con la coppia q0, blank.

Nuova Versione del Simulatore Multimediale
 
MdT5JFx

Simulatore della Macchina di Turing

Esistono molti programmi "simulatori" di macchine di Turing, ovvero programmi capaci di simulare
il comportamento di una macchina di Turing mostrandone il comportamento sullo schermo di un calcolatore. 

MdT5 è un simulatore multimediale della Macchina di Turing cioè un programma che permette di definire una Macchina di Turing e di simulare il suo comportamento durante il funzionamento utilizzando per la rappresentazione un modello multimediale. Il simulatore è stato realizzato con "Toolbook" ed è utilizzato dagli studenti del Corso Programmatori Mercurio dell'I.T.C.G. "Umberto I" di Ascoli Piceno.
 

             
Il Simulatore in esecuzione                      

 

  Scarica il Simulatore MdT5


Nuova Versione del Simulatore Multimediale
 
MdT5JFx