La macchina di turing Uno dei pionieri dello studio della logica dei computer così come la conosciamo oggi ed il primo ad interessarsi all'argomento dell’intelligenza artificiale fu Alan Turing. Durante la seconda guerra mondiale Turing mise le sue capacità matematiche al servizio del Department of Communications inglese per decifrare i codici usati nelle comunicazioni tedesche, un compito particolarmente difficile in quanto i tedeschi avevano sviluppato un tipo di computer denominato Enigma, capace di generare un codice che mutava costantemente. Turing ed i suoi compagni lavorarono con uno strumento chiamato Colossus che decifrava in modo veloce ed efficiente i codici tedeschi creati con Enigma.
La macchina di turing Dopo questo contributo fondamentale allo sforzo bellico, finita la guerra, continuò a lavorare per il National Physical Laboratory (NPL), continuando la ricerca nel campo dei computer digitali. Lavorò nello sviluppo all'Automatic Computing Engine (ACE), uno dei primi tentativi nel creare un vero computer digitale. Fu in questo periodo che iniziò ad esplorare la relazione tra i computer e la natura. Scrisse un articolo dal titolo Intelligent Machinery, pubblicato poi nel 1969. Fu questa una delle prime volte in cui sia stato presentato il concetto di Intelligenza Artificiale. Turing era dell'idea che si potesse raggiungere la chimera di un'intelligenza davvero artificiale seguendo gli schemi del cervello umano.
La macchina di turing Alan Turing propose nel 1936 l'idea di una macchina immaginaria che potesse effettuare ogni tipo di calcolo su numeri e simboli. La Macchina di Turing (o più brevemente MdT) in informatica è una macchina ideale che manipola i dati contenuti su un nastro di lunghezza potenzialmente infinita, secondo un insieme prefissato di regole ben definite. In altre parole, è un modello astratto che definisce una macchina in grado di eseguire algoritmi e dotata di un nastro potenzialmente infinito su cui può leggere e/o scrivere dei simboli. È un potente strumento teorico che viene largamente usato nella teoria della calcolabilità e nello studio della complessità degli algoritmi, in quanto è di notevole aiuto agli studiosi nel comprendere i limiti del calcolo meccanico. La sua importanza è tale che oggi, per definire in modo formalmente preciso la nozione di algoritmo, si tende a ricondurlo alle elaborazioni effettuabili con macchine di Turing.
La macchina di turing Una Macchina di Turing è composta da: Un 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. Una testina di lettura/scrittura in grado di leggere e scrivere il contenuto della cella del nastro su cui si trova. 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.
La macchina di turing Come funziona una MdT? La macchina durante l'esecuzione 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: Determina il suo prossimo stato interno. Scrive un simbolo sul nastro. Decide se spostare o meno la testina a sinistra o a destra di una posizione.
La macchina di turing Il programma di una MdT definito da un insieme di regole, o quintuple, del tipo: S = Stato interno corrente, lo stato della macchina all'istante presente; i = Simbolo letto, il simbolo letto all'istante presente; S (s, i) = Nuovo-stato-interno lo stato della macchina all'istante successivo; è funzione dei primi due parametri. I (s, i) = Simbolo-scritto il simbolo scritto dalla macchina all'istante successivo; è funzione dei primi due parametri; D (s, i) = Verso testina, il verso (movimento) della macchina (destra/sinistra); è funzione dei primi due parametri. Ciascuna quintupla associa ad ogni coppia: S (stato interno corrente) – i (simbolo letto). una terna: S (nuovo-stato-interno), I (simbolo scritto), D (verso testina). Non può esistere più di una regola che inizi con una coppia stato-interno-corrente, simbolo-letto.
La macchina di turing Vediamo in modo semplice, come una MdT effettua i 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.
La macchina di turing Facciamo un semplicissimo esempio: Vogliamo programmare una Macchina di Turing che, dato sul nastro di input una sequenza di simboli, 0 e 1, scambi gli 0 in 1 e viceversa. Inizialmente la testina si posiziona sul primo simbolo della sequenza dobbiamo cambiare uno 0 in 1 (o viceversa) spostare la testina sul prossimo simbolo Cambiamo 0 in 1 (continua) Le regole corrispondenti sono: (q0, 0, q0, 1, d) (q0, 1, q0, 0, d) In questo caso è sufficiente lo stato 0. Al termine della sequenza l’esecuzione sarà arrestata poiché non esiste una quintupla che inizia con la coppia q0, blank.
La macchina di turing Della MdT vengono considerate molteplici varianti (modelli) che si dimostrano avere la stessa portata. L'importanza della MdT deriva dal fatto che permette di compiere tutte le elaborazioni effettuate mediante le macchine (elettroniche o meccaniche) apparse nella storia dell'umanità, incluse le elaborazioni che oggi si eseguono con le tecnologie più avanzate e gli odierni computer, e perfino le dimostrazioni matematiche che l'umanità ha raccolto nel corso della sua storia. Infatti, tutte le macchine che si conoscono possono essere ricondotte al modello estremamente semplice 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.