Le macchine di Turing
Alan Turing (1912-1954) 1954)
Il problema della decisione i L Entscheidungsproblem [il problema della decisione] è risolto se si conosce una procedura che permette di decidere la validità di una data espressione logica mediante un numero finito di operazioni. (D. Hilbert, W. Ackermann, Grundzüge der theoretischen Logik, Springer, Berlin (1928), ),pp pp. 72-3) Il problema è che non si sa esattamente cosa sia una procedura: la teoria formale degli algoritmi nasce proprio per rispondere a questa domanda
Alan Turing 1936: nozione di Macchina di Turing Si sostiene che qualsiasi problema risolvibile algoritmicamente sia risolvibilme mediante una macchina di Turing La nozione di Macchina di Turing fornisce una controparte formale della nozione intuitiva di procedura algoritmica 1950: Macchine calcolatrici e intelligenza Possono pensare le macchine? Turing (1950), Macchine calcolatrici e intelligenza, in La filosofia degli automi : origini dell intelligenza artificiale, a cura di Vittorio Somenzi e Roberto Cordeschi, pp. 167-193 (Disponibile in Biblioteca)
1936: l analisi li i dei processi di calcolo l Studio dei vincoli ai quali sottostà un generico agente razionale C impegnato in un processo di calcolo C dispone di una memoria e di capacità percettive limitate. Dispone inoltre di un supporto (un nastro di dimensioni potenzialmente infinite) su cui scrivere e leggere.
1936: l analisi li i dei processi di calcolo l Quali operazioni i può svolgere C? C può scrivere sul nastro dei simboli tratti da un alfabeto finito C può osservare delle caselle sul nastro (è ragionevole assumere che, a causa delle limitate capacità percettive e di memoria, esista un limite al numero di caselle osservabili simultaneamente) C è in grado di ricordare risultati determinati da passi precedenti della computazione e di utilizzare tale informazione nel seguito della computazione. Questa memoria costituisce i ciò che Turing definisce come gli stati interni di C (date le limitazioni percettive e di memoria di C, è ragionevole assumere che esista un numero finito di stati).
Verso le Macchine di Turing Queste condizioni vengono incorporate nella Macchina di Turing La Macchina di Turing è quindi una macchina che, se concordiamo con quanto detto finora, riproduce gli aspetti essenziali dei processi di calcolo
Le Macchine di Turing (MdT) Le MdT dispongono di un nastro di memoria, fatto a cellette, potenzialmente infinito (si può aggiungere o togliere agli estremi, all occorrenza) In ogni celletta è memorizzato un simbolo che fa parte di un alfabeto del nastro Γ in questo caso Γ = {0,1,a} 0 1 0 a 1 1 0 a 0 1 0
Dagli automi a pila alle MdT Differenze tra automi a pila e MdT Le MdT possono scorrere il nastro a destra e a sinistra Il nastro è potenzialmente infinito (si assume che sia possibile aggiungere e togliere frammenti di nastro all occorrenza) La MdT può entrare in qualsiasi momento in uno stato accetta o rifiuta 0 1 0 a 1 1 0 a 0 1 0
Le Macchine di Turing (MdT) A ogni istante, t la MdT è posizionata su una celletta di memoria assume un certo stato Funzione di transizione: sulla base del simbolo letto nella celletta corrente, e dello stato attuale, la MdT scrive un nuovo simbolo, rimpiazzando quello appena letto assume un nuovo stato (l insieme degli stati include accetta e rifiuta) ) si sposta a destra o a sinistra di una celletta stato corrente: q 3 a a b a b b b a b
Le Macchine di Turing (MdT) Esempio di it istruzione i di MdT (rappresentata tt come istanza it della funzione di transizione della MdT): Se ti trovi nello stato q 3 e leggi il simbolo b sul nastro, allora rimpiazza b con a, cambia il tuo stato in q 2, e spostati a destra stato corrente: q 3 a a b a ba b b a b
Ripasso: il prodotto cartesiano Il prodotto cartesiano degli insiemi i i A e B, che si indica idi con A B, è definito dalla seguente espressione: { (a, b) a A e b B} Come abbiamo già visto, questa definizione può essere generalizzata al caso in cui siano coinvolti più di due insiemi. Esempio: A B C è l insieme i {(a,b,c) a A, A b B, c C} ovvero: l insieme di tutte le triple (a b c) tali che il ovvero: l insieme di tutte le triple (a, b, c) tali che il primo elemento appartiene ad A, il secondo a B, il terzo a C
Definizione i i di una MdT Una MdT è una settupla (Q, Σ, Γ,, q 0, q accetta,q rifiuta ) tale che 1. Q è un insieme finito di stati 2. Σ è un insieme finito detto alfabeto dell ingresso che non contiene e il simbolo o 3. Γ è un insieme finito detto alfabeto del nastro tale che Γ e Σ Γ 4. : Q Γ Q Γ {L, R} è la funzione di transizione 5. q 0 Q è lo stato iniziale 6. q accetta Q è lo stato t accetta 7. q rifiuta Q è lo stato rifiuta (q accetta q rifiuta )
La funzione di transizione i nelle MdT : Q Γ Q Γ {L, R} insieme delle coppie (q, γ) ) insieme delle triple (q, γ, {L,R}) dove q è uno stato e γ è un simbolo del nastro dove q è uno stato, γ è un simbolo del nastro, e il terzo elemento è L o R mette in corrispondenza stato corrente e simbolo letto su nastro con uno stato, un simbolo, e un operazione spostati a destra o spostati a sinistra
La funzione di transizione i nelle MdT Esempio 1: (q 1, a) = (q 2, b, R) : Q Γ Q Γ {L, R} ovvero Se ti trovi nello stato q 1 e leggi il simbolo a sul nastro, assumi lo stato q 2, rimpiazza a con b, e spostati a destra a b, R q 1 q 2 q 1 a a b a b q 2 a b b a b
La funzione di transizione i nelle MdT Esempio 2: : Q Γ Q Γ {L, R} (q 1, a) = (q accetta, b, R) ovvero Se ti trovi nello stato q 1 e leggi il simbolo a sul nastro, assumi lo stato q accetta, rimpiazza a con b, e spostati a destra q 1 a b, R q accetta q 1 a a b a b q accetta a b b a b
La funzione di transizione i nelle MdT Esempio 3: (q 1, a) = (q 2,, R) : Q Γ Q Γ {L, R} ovvero Se ti trovi nello stato q 1 e leggi il simbolo a sul nastro, assumi lo stato q 2, rimpiazza a con, e spostati a destra a, R q 1 q 2 q 1 a a b a b q 2 a b a b
Automi finiti A RIEPILOGO differenze tra automi finiti,automi iti t i a pila e MdT 1 : Q Σ Q B Se sei nello stato A e leggi 1, assumi ilo stato t B Automi a pila A 1x y 1,x y B δ: Q Σ Γ Q Γ Se sei nello stato t A, leggi 1, e il simbolo più alto nella memoria è x, assumi lo stato B e rimpiazza x con y nella memoria Macchine di Turing 1 0,R : Q Γ Q Γ {L, R} A B gg, Se sei nello stato A e leggi 1, assumi lo stato B, rimpiazza 1 con 0, e vai a destra
Esempio di MdT Q = {q 1, q 2, q accetta,q rifiuta } Σ = {0,1} Γ = {0,1, } Funzione : (q 1,0)=(q 1,0,R) 0 0,R q1 1 1,R q2 1 1,R 0 1,R 1 R (q 1,1)=(q 2,1,R) 1,R (q )=(q,1,r) q 2, accetta, accetta (q 2,0)=(q accetta,1,r) (q 2,1)=(q 2,1,R) 1R) Descrizione formale di questa MdT: M = {Q,Σ, Γ,,q 1,q accetta,q rifiuta }
Esempio di MdT M = {Q,Σ, Σ Γ,,q 1,q accetta,q rifiuta } Q = {q 1, q 2, q accetta,q rifiuta } Σ = {0,1} 0 0,R 1 1,R Γ = {0,1, } 1 1,R Funzione : q1 q2 (q 1,0)=(q 1,0,R) (q 1,1)=(q 2,1,R) (q 2, )=(q accetta,1,r) (q 2,0)=(q accetta,1,r) 1R) (q 2,1)=(q 2,1,R) q accetta 0 1,R 1,RR q 1 0 1 1 1
Esempio di MdT M = {Q,Σ, Σ Γ,,q 1,q accetta,q rifiuta } Q = {q 1, q 2, q accetta,q rifiuta } Σ = {0,1} 0 0,R 1 1,R Γ = {0,1, } Funzione : (q 1,0)=(q 1,0,R) (q 1,1)=(q 2,1,R) (q 2, )=(q accetta,1,r) (q 2,0)=(q accetta,1,r) 1R) q1 1 1,R q accetta q2 0 1,R 1,RR (q 2,1)=(q 2,1,R) q 1 0 1 1 1
Esempio di MdT M = {Q,Σ, Σ Γ,,q 1,q accetta,q rifiuta } Q = {q 1, q 2, q accetta,q rifiuta } Σ = {0,1} 0 0,R 1 1,R Γ = {0,1, } Funzione : (q 1,0)=(q 1,0,R) (q 1,1)=(q 2,1,R) (q 2, )=(q accetta,1,r) (q 2,0)=(q accetta,1,r) 1R) q1 1 1,R q accetta q2 0 1,R 1,RR (q 2,1)=(q 2,1,R) q 2 0 1 1 1
Esempio di MdT M = {Q,Σ, Σ Γ,,q 1,q accetta,q rifiuta } Q = {q 1, q 2, q accetta,q rifiuta } Σ = {0,1} 0 0,R 1 1,R Γ = {0,1, } Funzione : (q 1,0)=(q 1,0,R) (q 1,1)=(q 2,1,R) (q 2, )=(q accetta,1,r) (q 2,0)=(q accetta,1,r) 1R) q1 1 1,R q accetta q2 0 1,R 1,RR (q 2,1)=(q 2,1,R) q 2 0 1 1 1
Esempio di MdT M = {Q,Σ, Σ Γ,,q 1,q accetta,q rifiuta } Q = {q 1, q 2, q accetta,q rifiuta } Σ = {0,1} 0 0,R 1 1,R Γ = {0,1, } Funzione : (q 1,0)=(q 1,0,R) (q 1,1)=(q 2,1,R) (q 2, )=(q accetta,1,r) (q 2,0)=(q accetta,1,r) 1R) q1 1 1,R q accetta q2 0 1,R 1,RR (q 2,1)=(q 2,1,R) q 2 0 1 1 1
Esempio di MdT M = {Q,Σ, Σ Γ,,q 1,q accetta,q rifiuta } Q = {q 1, q 2, q accetta,q rifiuta } Σ = {0,1} 0 0,R 1 1,R Γ = {0,1, } Funzione : (q 1,0)=(q 1,0,R) (q 1,1)=(q 2,1,R) (q 2, )=(q accetta,1,r) (q 2,0)=(q accetta,1,r) 1R) q1 1 1,R q accetta q2 0 1,R 1,RR (q 2,1)=(q 2,1,R) q accetta 0 1 1 1 1
MdT: accettare una stringa La MdT M si ferma quando entra nello stato q accetta o q rifiuta. La MdT M accetta la stringa w se, a un certo punto, t ll t t entra nello stato q accetta
Linguaggi i e automi Ricordiamo che un linguaggio è un insieme di stringhe. Vediamo quindi alcune definizioni analoghe a quelle già fornite in relazione agli automi finiti e agli automi a pila. Automi finiti Macchine di Turing L automa finito M riconosce il linguaggio A se M accetta tutte le stringhe di A
Linguaggi i e automi Ricordiamo che un linguaggio è un insieme di stringhe. Vediamo quindi alcune definizioni analoghe a quelle già fornite in relazione agli automi finiti e agli automi a pila. Automi finiti Macchine di Turing L automa finito M riconosce il La macchina di Turing M linguaggio A se M accetta tutte riconosce il linguaggio A se M le stringhe di A accetta tutte le stringhe di A
Linguaggi i e automi Ricordiamo che un linguaggio è un insieme di stringhe. Vediamo quindi alcune definizioni analoghe a quelle già fornite in relazione agli automi finiti e agli automi a pila. Automi finiti Macchine di Turing L automa finito M riconosce il La macchina di Turing M linguaggio A se M accetta tutte riconosce il linguaggio A se M le stringhe di A accetta tutte le stringhe di A Un linguaggio (insieme di stringhe) è detto regolare se esiste un automa finito che lo riconosce
Linguaggi i e automi Ricordiamo che un linguaggio è un insieme di stringhe. Vediamo quindi alcune definizioni analoghe a quelle già fornite in relazione agli automi finiti e agli automi a pila. Automi finiti Macchine di Turing L automa finito M riconosce il La macchina di Turing M linguaggio A se M accetta tutte riconosce il linguaggio A se M le stringhe di A accetta tutte le stringhe di A Un linguaggio (insieme di Un linguaggio (insieme di stringhe) è detto regolare se stringhe) è detto Turing- esiste un automa finito che lo riconoscibile se esiste una riconosce MdT che lo riconosce
Quali tipi di linguaggi sono riconosciuti dalle MdT? Linguaggi Automi Grammatiche di livello ll 0 Macchine di Turing Grammatiche di livello 1 (o non decrescenti) Grammatiche di livello 2 (o libere da contesto) Grammatiche di livello 3 (o lineari) Macchine di Turing (variante) Automi a pila Automi finiti Le MdT superano le capacità di calcolo degli automi Le MdT superano le capacità di calcolo degli automi finiti e degli automi a pila!
Automi e riconoscimento i di linguaggi i raffigurazione intuitiva delle relazioni tra gli automi visti finora, in termini di capacità di riconoscimento di linguaggi macchine di Turing automi finiti automi a pila