Macchine di Turing

Transcript

Macchine di Turing
Macchine di Turing
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[1]
Macchine di Turing
. modello di calcolo introdotto dall’ingegner Alan Turing nel 1936, per simulare il processo di calcolo umano
. rappresenta il primo tentativo di definizione di procedura effettiva e di programma eseguito in automatico
da una macchina
Una macchina di Turing è composta da:
. una unità di controllo a stati finiti, cioè controllata da una macchina a stati
. un nastro di lunghezza arbitraria suddiviso in celle:
. inizialmente contiene la sequenza di dati di input, sequenza di caratteri non vuoti,
. successivamente i dati prodotti dalla elaborazione.
. su e da ogni cella del nastro è possibile leggere e scrivere un solo dato alla volta
. da una testina di lettura e scrittura che si muove lungo il nastro in entrambe le direzioni possibili.
Inizialmente, per convenzione, la testina si assume posizionata sul carattere più a sinistra del nastro.
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[2]
Macchine di Turing
Il comportamento di una macchina di turing è molto semplice:
. inizialmente la macchina si trova in uno stato detto iniziale
. la stringa di input è scritta sul nastro
. la testina è posizionata su una cella, per convenzione il carattere più a sinistra della stringa di input
. in base allo stato corrente della macchina di controllo ed al carattere letto o puntato dalla testina si
determina lo stato successivo e si compiono le seguenti azioni:
1. legge, scrive o cancella il carattere dalla cella su cui è posizionata la testina
2. sposta la testina di una cella a destra o sinistra o lascia la testina ferma
. la macchina continua ad elaborare la stringa sul nastro ed a transire di stato finchè
. si ferma in uno stato per cui non è definita alcuna azione o
. raggiunge uno stato particolare denominato finale
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
Macchine di Turing
Le macchine di Turing possono essere utilizzate:
. per calcolare funzioni, in questo caso vengono dette trasduttori
. per riconoscere o accettare stringhe su un alfabeto, in questo caso vengono dette riconoscitrici.
Si noti che, le macchine di Turing riconoscitrici calcolano la funzione caratteristica dell’insieme
delle stringhe che appartengono al linguaggio che si vuole riconoscere.
Esistono vari tipi di Macchine di Turing:
. singolo nastro mono traccia deterministiche
. singolo nastro multi traccia deterministiche
. multi nastro mono/multi traccia deterministtiche
. singolo/multi nastro mono/multi traccia NON deterministiche
[3]
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[4]
Definizione Formale di una Macchine di Turing
Definizione Una macchina di Turing (deterministica, singolo nastro) si definisce come una 6-upla
M = (Σ, /b, K, δ, q0, qf )
ove:
. Σ è l’alfabeto, ovvero l’insieme di caratteri che possono essere scritti e letti dal nastro
. /
b∈
/ Σ è una carattere speciale detto blank che rappresenta la situazione di cella non contenente alcun
carattere
. K è l’insieme finito e non vuoto di stati
. q0 è lo stato iniziale
. qf è lo stato finale (possono essere definiti anche più di uno stato finale)
. δ è la funzione di transizione cosı̀ definita:
δ : (K − qf ) × (Σ/b) → K × (Σ/b) × {d, s, i}
essendo Σ/b = Σ ∪ /b.
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
La funzione di transizione δ(qi, x) = (qj , y, v) si interpreta nel seguente modo:
. lo stato attuale della macchina è qi
. il carattere letto dalla cella puntata dalla testina è x
. la testina scrive il carattere y
. la macchina a stati transisce nello stato qj
. la testina si sposta nella direzione v , ove v può essere
. d = destra
. s = sinistra
. i = immobile
[5]
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[6]
Configurazione di una Macchine di Turing
Definizione Si definisce configurazione di una macchina di Turing una stringa
s ∈ Σ∗ · K · Σ∗
/b
/b
del tipo
s = ai1 . . . ain qr aj1 . . . ajm , n ≥ 0, m ≥ 0
ove:
∗
. Σ è l’insieme di tutte le stringhe appartenenti all’alfabeto Σ, il simbolo · è l’operatore di concatenazione
sulle stringhe
. ai1 . . . ain aj1 . . . ajm rappresenta la porzione di nastro contenente caratteri diversi da /
b, mentre il resto
del nastro contiene solo il carattere /b
. aj1 è il contenuto della cella puntata dalla testina
. qr è lo stato in cui si trova la macchina
Configurazioni particolari sono quella iniziale e quella finale
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[7]
Configurazione Iniziale e Finale di una MT
Definizione Una configurazione s = xqy è detta iniziale se
x = , q = q0, y ∈ Σ+
/b
Cioè una configurazione iniziale è una situazione in cui lo stato della macchina è q0 e la testina si trovi
posizionata sul primo carattere a sinistra della stringa di input (non vuota).
Definizione Una configurazione s = xqy è detta finale se
x ∈ Σ∗ , q = qf , y ∈ Σ∗
/b
/b
Cioè una configurazione finale è una situazione in cui lo stato della macchina è qf indipendentemente dal
contenuto del nastro e dalla posizione della testina.
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[8]
Funzione di Transizione di una MT
Data una configurazione ci una singola applicazione della funzione δ a ci permette di ottenere una nuova
configurazione cj secondo le seguenti regole:
. δ(qr , aj1 ) = (qk , ah , d) significa compiere la seguente transizione di configurazione:
1
ai1 . . . ain qr aj1 . . . ajm → ai1 . . . ain ah qk aj2 . . . ajm
. δ(qr , aj1 ) = (qk , ah , s) significa compiere la seguente transizione di configurazione:
1
ai1 . . . ain qr aj1 . . . ajm → ai1 . . . ain−1 qk ain ahaj2 . . . ajm
. δ(qr , aj1 ) = (qk , ah , i) significa compiere la seguente transizione di configurazione:
1
ai1 . . . ain qr aj1 . . . ajm → ai1 . . . ain qk ah aj2 . . . ajm
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[9]
Funzione di Transizione di una MT
La funzione di transizione δ può essere rappresentata in due modi:
. tramite una matrice avente gli stati della MT sulle righe e i simboli dell’alfabeto Σ sulle colonne
. tramite un grafo orientato i cui nodi sono gli stati della macchina di controllo e gli archi rappresentano
le transizioni possibili. Ogni arco è etichettato con una tripla (a, b, v) ove a è il simbolo puntato dalla
testina, b è il simbolo scritto e v la direzione di movimento.
La funzione δ definisce il comportamento della macchina di Turing, cioè definisce le regole di transizione che
permettono di passare da una configurazione ad un’altra.
Si noti che tali regole possono essere interpretate come regole di riscrittura del contenuto del nastro.
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[10]
Computazione di una MT
Definizione Una successione di configurazioni c1, . . . , cn, . . ., eventualmente infinita, tale che c1 è uno
1
stato iniziale e ∀i, ci → ci+1, definisce una computazione per la macchina di Turing.
∗
Usiamo la scrittura ci → cj per denotare l’esistenza di una computazione che da ci porta a cj tramite un
numero finito, eventualmente 0, di transizioni.
Ogni computazione può avere al più una configurazione finale, e una computazione infinita non ha
configurazioni finali.
Definizione Una computazione finita c1, . . . , cn è detta massimale se non esiste una configurazione c tale
∗
che cn → c. Ovvero, una computazione massimale si conclude o con una configurazione finale o con una
configurazione in cui non è definita la funzione di transizione δ .
Definizione Una computazione massimale c1, . . . , cn è detta accentante se cn è uno stato finale
Definizione Una computazione massimale c1, . . . , cn è detta rifiutante se cn è uno stato NON finale
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[11]
Linguaggio Riconosciuto da una MT
Una MT può essere utilizzata per riconoscere o accettare un linguaggio L ⊆ Σ∗.
Definizione Data una macchina di Turing M = (Σ, /b, K, δ, q0, qf ) diciamo che M riconosce o decide
un linguaggio L ⊆ Σ∗ se e solo se per ogni stringa x ∈ Σ∗, stringa dell’alfabeto, esiste una computazione
massimale accettante o rifiutante per la macchina M:
∗
∗
∀x ∈ Σ , q0x → wqz, q = qf ⇔ x ∈ L
Cioè una MT riconosce un linguaggio L se per ogni stringa definita sull’alfabeto Σ è in grado di stabilire se
la stringa x appartiene o no al linguaggio L.
Definizione Un linguaggio riconosciuto da una MT è detto T-decidibile
Data una MT M NON è detto che esista un linguaggio L deciso da M, infatti per definizione ciò è
possibile se e solo se M termina per ogni stringa x ∈ Σ∗
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[12]
Linguaggio Accettato da una MT
Definizione Data una macchina di Turing M = (Σ, /b, K, δ, q0, qf ) diciamo che M accetta un linguaggio
L ⊆ Σ∗ se e solo se per ogni stringa x ∈ L esiste una computazione massimale accettante per la
macchina M, cioè
∗
∗
L = {x ∈ Σ | q0x → wqf z}
Una MT accetta un linguaggio L se per tutte le stringhe del linguaggio è in grado di stabilire tale
appartenenza, cioè esiste una computazione massimale accettante. Non è in grado di dire nulla per tutte le
stringhe non appartenenti al linguaggio.
Definizione Un linguaggio accettato da una MT è detto T-semidecidibile
Un linguaggio è T-decidibile è anche T-semidecidibile, ma il viceversa non è vero.
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[13]
Macchine di Turing Trasduttori
Definizione Data una macchina di Turing M = (Σ, /b, K, δ, q0, qf ) ed una funzione f : Σ∗ → Σ∗, diremo
che M calcola la funzione f se e solo se
∗
∗
∀x ∈ Σ , f (x) ↓, f (x) = y ⇒ q0x → x /b qf y
Se x ∈
/ Σ∗, oppure f (x) ↑, allora o la macchina termina in uno stato non finale o non termina.
In generale:
. per funzioni arbitrarie f : D → C ci si può ricondurre a MT operanti su stringhe.
Ad esempio per
funzioni f : N → N si può pensare di usare la codifica unaria per rappresentare i numeri sul nastro
. per funzioni a più argomenti per esempio f : D1 × D2 → C si può pensare di codificare opportunamente
le coppie d1, d2 con simboli da usare sul nastro, ad esempio codificare le coppie tramite la funzione di
cantor e rappresentarle sul nastro in forma unaria
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[14]
Macchine di Turing Multitraccia
Definizione Una macchina di Turing multitraccia M ad m tracce è definita come una 6-upla
Σ, /b, K, δ, q0, qf
ove la fuzione δ è definita come
m
m
δm : (K − {qf }) × Σ/b → K × Σ/b × {d, s, i}
Quindi, una macchina di Turing multitraccia è in grado di scrivere e leggere caratteri vettoriali ma la testina
si sposta contemporaneamente su tutte le tracce.
Da un punto di vista fisico si può immaginare di avere una macchina composta da un nastro suddiviso in m
tracce ed una singola testina.
L’uso di MT-multitraccia permette di avere
maggior potere computazionale?
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[15]
Macchine di Turing Multinastro
Definizione Una macchina di Turing ad m nastri è definita da una 6-upla
Σ, /b, K, δm, q0, qf
ove Σ, /b, K, q0, qf sono definiti come nel caso di una machina di Turing a singolo nastro e δm è la funzione
di transizione definita come:
m
m
δm : (K − {qf }) × Σ/b → K × Σ/b × {d, s, i}
m
cioè la funzione δm definisce le transizione della MT su ogni nastro.
Da un punto di vista fisico si può immaginare di avere una macchina composta da m nastri ed m testine,
una per ogni nastro.
L’uso di MTM permette di avere un maggior
potere computazionale ?
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[16]
Macchine di Turing NON Deterministiche
Tutti i modelli di calcolo sinora esaminati sono tutti deterministici, cioè la transizione da un passo della
computazione al successivo è sempre univocamente determinata.
Ad esempio in una macchina a registri o in un linguaggio di programmazzione tipo mP le azioni da compiere
sono univocamente determinate dalla semantica delle istruzioni.
Il determinismo è un concetto molto vicino al modo di funzionamento dei calcolatori i quali ad ogni istante
determinano lo stato successivo della computazione in base alla semantica della istruzione da eseguire.
Si possono definire modelli di calcolo in cui si rilascia l’univocità della funzione di transizione della
computazione da un stato al successivo.
Tali modelli prendono il nome di modelli non deterministici.
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[17]
Macchine di Turing NON Deterministiche
Una macchina di Turing non deterministica è definita da 6-upla:
M = (Σ, /b, K, δ, q0, qf )
ove la funzione di transizione δ è definita nel seguente modo:
δ : (K − {qf }) × Σ/b → P(K × Σ/b × {d, s, i})
Proprietà:
. da ogni configurazione si può transire in una o più configurazione simultaneamente
. ogni applicazione della funzione di transizione definisce più stati anzicchè uno solo.
. la configurazione successiva non è univocamente determinata,
. la computazione non è più rappresentabile da una successione lineare di configurazioni, ma mediante un
albero di configurazioni.
. il grado di non determinismo corrisponde, dato una generica configurazione, al massimo numero di
confgurazioni generate dalla funzione δ .
Una MT non deterministica si comporta come se ad ogni passo instanziasse nuove MT, ognuna delle quali
elabora una delle configurazione ottenute dalla funzione di transizione.
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[18]
Esempio
Sia L = {s ∈ {0, 1}∗ | s contenga un numero pari di 1}.
La MT che riconosce il linguaggio L è la seguente:
M = ({0, 1}, /b, {q0, q1, q2}, δ, q0, q2)
ove la funzione di transizione δ è descritta dalla seguente matrice:
δ
q0
q1
/b
q2/bi
0
q00d
q10d
1
q11d
q01d
Algoritmo:
. la macchina scandisce la stringa da sinistra verso destra e
. transisce dallo stato q0 allo stato q1 e viceversa ogni volta che legge un 1,
. se quando si legge il carattere /
b (primo carattere /b a destra della stringa) la macchina si trova nello stato
q0 allora si transisce nello stato finale q2
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[19]
Esempio
Descrivere una MT che riconosca l’insieme di parantesi bilanciate, ovvero stringhe del tipo:
{ (()), (), ((()))
Sia M = ({(, )}, /b, {q0, q1, q2, q3}, δ, q0, qf ) una MT ove
matrice:
δ
(
)
q0 q1/bd
q1 q1(d q1)d
q2
q3/bs
q3 q3(s q3)s
Algoritmo:
}
la funzione di transizione δ è descritta dalla
/b
qf /bi
q2/bs
q0/bd
. La macchina di Turing sopra descritta scandisce la stringa di input da sinistra verso destra
. Lo stato q0 cerca la prima parentesi (, appena la trova la cancella e transisce nello stato q1
. lo stato q1 scandisce tutta la stringa fino a posizionarsi sull’ultimo carattere più a destra e quindi transisce
nello stato q2
. lo stato q2 cerca la prima parentesi ), trovatala la cancella e transisce nello stato q3
. lo stato q3 posizione la testina sul primo carattere più a sinistra e transisce nello stato q0
. a questo punto o la stringa è vuota e si transisce nello stato finale o si ricomincia.
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[20]
Esempio
Descrivere una MT per il riconoscimento delle stringhe palindrome definite sull’alfabeto {a, b}∗. Si consideri
la seguente MT M = ({a, b}, /b, {q0, qa1 , qa2 , qa3 , qb1 , qb2 , qb3 }, δ, q0, qf )
La funzione di transizione δ è definita dalla seguente matrice:
δ
q0
qa0
qa1
qa2
qb0
qb1
qb2
q0/bd
qb1 /bs
a
qa0 /bd
qa0 ad
qa2 /bs
qa2 as
qb0 ad
q0/bd
qb2 as
/b
qf /bi
qa1 /bs
b
qb0 /bb
qa0 bd
qa2 /bs
qb0 bd
qb2 /bs
qb2 /bs
La MT appena descritta si comporta nel seguente modo:
1. stato q0: cancella il primo carattere della stringa
2. stato qx0 : posiziona la testina sull’ultimo carattere della stringa di input
3. stato qx1 : cancella il carattere puntato dalla testina
La MT nello stato qx1 si aspetta di leggere il carattere x altrimenti si ferma in uno stato non finale e non
riconosce la stringa di input come appartenenete al linguaggio.
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[21]
MT Trasduttori
Vediamo adesso alcuni esempi di MT trasduttori, cioè che calcolano funzioni.
Supponiamo di rappresentare i numeri in forma unaria, cioè ogni numero n è rappresentato dalla
giustapposizione di n volte il carattere | o il carattere 1.
Esempio:
• | rappresenta il numero naturale 1
• |||| rappresenta il numero naturale 4
• |n = || . . . | rappresenta il numero n
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[22]
Esempio di MT Trasduttori
Descrivere una MT che calcola la funzione n + m.
Supponiamo che la testina sia posizionata sul primo carattere a sinistra della stringa di input.
M = ({|, +}, /b, {q0, q1, q2}, δ, q0, qf )
La funzione di transizione δ è descritta dalla seguente matrice:
δ
q0
q1
q2
|
q0|d
q1|d
qf /bi
+
q1|d
1. scandisce la stringa da sinistra verso destra
2. sostituisce l’occorrenza del carattere + con il carattere |
3. cancella l’ultimo carattere della stringa
/b
q2/bs
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[23]
Esempio di MT Trasduttori
Descrivere una MT per il calcolo del predecessore.
M = ({1}, /b, {q0}, δ, q0, qf )
La funzione di transizione δ è rappresentata dalla seguente matrice:
δ
q0
/b
1
qf /bi
possiamo descrivere una seconda MT che scandisce la stringa e cancella l’ultimo carattere a destra
δ
q0
q1
q2
/b
q2/bs
1
q1/bd
q11d
qf /bi
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[24]
Esempio di MT Trasduttori
Descrivere una MT per il calcolo della funzione f (x) = 2x.
Supponiamo che la testina sia posizionata sul primo carattere a sinistra della stringa di input diverso da /b.
M = ({1}, /b, {q0, q1, q2, q3, q4, q5, q6}, δ, q0, qf )
La funzione di transizione δ è definita dalla seguente matrice:
δ
q0
q1
q2
q3
q4
q5
q6
/b
q0/bd
q0/bd
q3/bd
q41d
q51s
q6/bs
qf /bi
1
q2/bd
q11s
q21d
q31d
q51s
q11s
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[25]
Un esempio di computazione è il seguente:
11
/b1/b
/b1/b1
/b1/b11
/b/b/b111
/b/b/b1111
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[26]
Macchine di Turing Multi-traccia
Una macchina di Turing multi-traccia consiste di un nastro suddiviso in tracce disposte in modo tale che
la testina, con una singola operazione può accedere a tutte le celle di tutte le tracce in corrispondenza della
testina.
Possiamo considerare la macchina multi-traccia come una macchina che anzichè operare su simboli scalari
opera su simboli vettoriali.
Data una macchine di turing Mm = (Σ, /b, K, δ m, q0, qf ) multitraccia con m tracce si ha che:
. l’alfabeto Σ = Σ1 × . . . × Σm , ove ogni Σi rappresenta l’alfabeto di simboli della traccia i.
Quindi un generico elemento (carattere) σ ∈ Σ sarà del tipo: σ = (σ1, . . . , σm), 1 ≤ i ≤ m σi ∈ Σi.
In particolare il simbolo (/b, . . . , /b) rappresenta il simbolo di blank dell’alfabeto Σ/b.
| {z }
m
Poichè ogni elemento di Σi può essere combinato con gli altri elementi di Σj , per ogni j 6= i, il numero
Qm
di caratteri σ = (σ1, . . . , σm) diversi che potranno comparire sul nastro saranno: |Σ| = i=1 |Σi|.
. la funzione di transizione δ
δ
m
m
sarà una funzione del tipo:
m
0
0
: (K − {qf }) × Σ/b → K × Σ/b × {d, s, i}, δ (qi, σ) = (qj , σ ), σ, σ ∈ Σ/b
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[27]
Equivalenza MT-multi-traccia e MT-singola-traccia
2
3
b
6 1 7
7
La testina della macchina di Turing multi-traccia punta al carattere σ = 6
4 ... 5
(
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[28]
Equivalenza MT-multi-traccia e MT-singola-traccia
Teorema Una Macchine di Turing singolo nastro multi-traccia Mm con m tracce può essere simulata da
una macchina di Turing singolo nastro mono-traccia M.
Dimostrazione Sia Mm = (Σ, /b, K, δ m, q0, qf ) la macchina di Turing multitraccia, ove
Σ = Σ1 × . . . × Σm. Si definisca una MT singola traccia M = (Λ, /b, K 0, δ, q00 , qf0 ) tale che:
|Λ| = |Σ1| × . . . × |Σm|
cioè, la cardinalità dell’alfabeto Λ è pari al prodotto delle cardinalità degli alfabeti delle singole tracce.
Si definisca inoltre, una funzione iniettiva ϕ : Σ → Λ che associ ad ogni simbolo di Σ un simbolo di Λ
(poichè |Λ| ≥ |Σ| è possibile definire una tale funzione).
La funzione di transizione δ sarà definita in modo tale che in corrispondenza di una transizione
δ m(qi, σ) = (qj , σ 0, v) della macchina Mm, la macchina M esegua la transizione:
δ(qi, λ) = (qj , λ0, v), λ = ϕ(σ), λ0 = ϕ(σ 0)
L’alfabeto su cui opera la macchina singola traccia M è un alfabeto in cui ogni simbolo rappresenta la
codifica di un vettore di simboli dell’alfabeto della macchina multi-traccia Mm.
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[29]
Macchine di Turing Multi-nastro
Definizione Una macchina di Turing M(m) ad m nastri è definita da una 6-upla
M(m) = (Σ, /b, K, δ (m), q0, qf )
ove Σ, /b, K, q0, qf sono definiti come nel caso di una machina di Turing a singolo nastro e δ (m) è la funzione
di transizione definita come:
δm : (K − {qf }) × Σm → K × Σm × {d, s, i}m
/b
/b
cioè la funzione δ (m) definisce le transizione della MT su ogni nastro.
Da un punto di vista fisico si può immaginare di avere una macchina composta da m nastri ed m testine,
una per ogni nastro.
La MT in base allo stato interno ed ai caratteri letti dalle testine decide in quale stato interno transire, quali
caratteri scrivere sul nastro e come spostare le testine.
Una machina di Turing multi-nastro può essere simulata da una macchina di Turing singolo-nastro
multitraccia.
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[30]
Equivalenza MT-Multinastro e MT-singolo-nastro
Figure 1: Macchina di Turing singolo nastro multitraccia che simula una Macchina di Turing multinastro
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
Equivalenza MT-Multinastro e MT-singolo-nastro
Figure 2: Struttura del nastro di una MT-multitraccia che simula MT-multinastro (Z0 = /b)
[31]
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
Equivalenza MT-Multinastro e MT-singolo-nastro
Figure 3: Nastro iniziale di una MT-multitraccia che simula MT-multinastro (Z0 = /b)
[32]
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[33]
Equivalenza MT-Multinastro e MT-singolo-nastro
Teorema Sia data una macchina di Turing M(k) con k nastri, allora esiste una macchina di Turing M a
singolo nastro che la simula.
Dimostrazione Sia M(k) la MT multi nastro cosı̀ definita M(k) = (Σ, /b, K, q0, F, δ) ove supponiamo per
ogni nastro i, 1 ≤ i ≤ k che l’alfabeto usato sia Σi.
Costruiamo una MT singolo nastro, avente 2k tracce, definita nel seguente modo:
M0 = (Σ0, /b, K 0, q00 , F 0, δ 0)
ove l’alfabeto Σ0 è definito come:
Σ0 = {/b, ↓} × Σ1 × . . . {/b, ↓} × Σk
cioè, è composto di k coppie di simboli (λi, σi) di cui λi ∈ {/b, ↓} e σi ∈ Σi per ogni 1 ≤ i ≤ k.
Il nastro di M0 risulta allora composto nel seguente modo:
. ∀i, 1 ≤ i ≤ k, la traccia pari di indice 2i contiene la stringa presente sul nastro di indice i
. ∀i, 1 ≤ i ≤ k, la traccia dispari di indice 2i − 1 contiene una stringa composta del solo simbolo ↓
rappresentante la posizione della testina del nastro di indice i
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[34]
All’inizio della computazione supponiamo che il nastro di M0 sia configurato nel seguente modo:
. la traccia 1 contiene una stringa con il solo simbolo ↓ in corrispondenza del primo carattere a sinistra
della traccia 2
. la traccia 2 contiene la stringa di input della macchina M
(k)
. ∀i, 2 ≤ i ≤ k le tracce pari di indice 2i contengono solamente il simbolo /
b
. ∀i, 2 ≤ i ≤ k le tracce dispari di indice 2i − 1 contengono solamente il simbolo ↓ in corrispondenza
del simbolo più a sinistra della traccia 2, cioè quella contenente la stringa di input della macchina
multi-traccia M(k)
Per simulare la funzione di transizione di δ (k) della MT multi-nastro M0, la funzione di transizione δ 0 deve
riscrivere 2k simboli, uno per traccia. Quindi, in particolare, per simulare una transizione del tipo:
δ (k)(qi, ai1 , . . . , aik ) = (qj , aj1 , . . . , ajk , d1, . . . , dk )
deve eseguire i seguenti passi:
1. rintracciare le posizione dei k simboli ↓ rappresentanti le posizione delle k testine della macchina M(k)
nello stato qi
2. riscrivere i k simboli puntati dalle testine dei k nastri
3. posizionare i k simboli ↓ nella posizione delle testine della macchine M(k)nello stato qj
4. transire di stato
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[35]
Quindi ad ogni passo di M(k), la macchina M0 deve eseguire un numero di passi proporzionale alla distanza,
in termini di numero di celle, tra i due simboli ↓ più lontani.
Ad ogni passo i simboli ↓ possono al più allontanarsi di 2 celle, quindi dopo t passi, nel caso pessimo, si
saranno allontanati di 2t celle.
Quindi se la macchina multi-nastro M(k) compie t passi, il numero di passi eseguiti dalla macchina
singolo-nastro M0 per simularla sarà:
2
2
Σti=12i = 2Σti=1i = 2 t(t+1)
=
t
+
t
=
O(t
)
2
Per quanto riguarda la dimensione dell’alfabeto Σ0, osserviamo che quella dell’alfabeto dei nastri dispari è 2,
mentre quella dei nastri pari, per ogni nastro i è |Σi|.
Quindi, la dimensione dell’alfabeto Σ0 usato da M0 sarà pari al prodotto di tutte le cardinalità degli alfabeti
dei singoli nastri:
Qk
i=1
2|Σi| = O((max|Σi|)k )
Quindi una MT multinastro può essere simulata da una MT singolo-nastro multi-traccia in un tempo
quadratico usando un alfabeto di cardinalità esponenziale nel numero dei nastri.
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[36]
Macchine di Turing NON Deterministiche
Una macchina di Turing non deterministica è definita da 6-upla:
M = (Σ, /b, K, δ, q0, qf )
ove la funzione di transizione δ è definita nel seguente modo:
δ : (K − {qf }) × Σ/b → P(K × Σ/b × {d, s, i})
cioè da ogni configurazione si può transire in una o più configurazione simultaneamente.
La configurazione successiva non è univocamente determinata e la computazione non è più una successione
di configurazioni ma secondo un albero di configurazioni.
Il grado di non determinismo corrisponde, dato una generica configurazione, al massimo numero di
confgurazioni generate dalla funzione δ .
Una MT non deterministica si comporta come se ad ogni passo instanziasse nuove MT, ognuna delle quali
elabora una delle configurazione diverse prodotte dalla funzione di transizione δ .
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[37]
Macchine di Turing NON Deterministiche
Esempio: Definire una macchina di Turing non deterministica che riconosca le stringhe del tipo xaa con
x ∈ {a,b}∗.
Sia M la macchina di Turing non-deterministica definita nel seguente modo:
M = ({a, b}, /b, {q0, q1}, δ, q0, qf )
ove la funzione δ è definita dalla seguente matrice:
δ
q0
q1
q2
a
(q0, a, d), (q1, a, d)
(q2, a, d)
−
b
(q0, b, d)
−
−
Esercizio: scrivere la computazione sulla stringa abbabaa.
/b
−
−
(qf , /b, i)
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[38]
Macchine di Turing NON Deterministiche
Definizione Dato un alfabeto Σ, una stringa x ∈ Σ∗ è accettata dalla macchina M se esiste una
computazione accettante di M.
Definizione Dato un alfabeto Σ, una stringa x ∈ Σ∗ è rifiutata dalla macchina M se tutte le computazione
di M sono rifiutanti.
Osservazioni:
Si osservi che i due concetti sono molto asimettrici tra di loro:
. il primo, richiede che esista almeno una computazione accettante, quindi, se abbiamo a disposizione una
soluzione è facile certificarla come tale.
. viceversa, una stringa è rifiutata se tutte le possibili computazioni sono rifiutanti e questo può essere
molto più difficile da verificare.
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[39]
Equivalenza MTND e MT deterministiche
Teorema Per ogni MTND M esiste una MT deterministica M(3) deterministica a 3 nastri equivalente.
Dimostrazione La simulazione della macchine di Turing non deterministica M tramite una deterministica
M(3) si ottiene visitando l’albero delle computazione di M utilizzando l’algoritmo di visita breadth first.
NB: la visita non può essere fatta in modo depth first poichè visitando un ramo corrispondente ad
una computazione infinita, l’algoritmo di visita non terminerebbe.
Ad ogni passo di computazione di M si possono generare al massimo d scelte, ove d è il grado di non
determinismo della macchina M.
Supponiamo di numerare con numeri compresi tra 1 e d le scelte derivanti dalla funzione di transizione di M.
In tal modo ogni computazione potrà essere identificata come una sequenza di numeri compresi tra 1 e d,
ognuno dei quali identifica una delle possibili d scelte generate dalla funzione di transizione di M.
Non tutte le combinazioni saranno valide poichè non è detto che ad ogni passo la funzione di transizione
generi esattamente d scelte.
Dopo i passi di computazione della macchina M, quindi esistono al più di stringhe di lunghezza i che
rappresentano particolari computazioni di M.
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[40]
Si supponga quindi di organizzare la macchina M(3) nel seguente modo:
. il primo nastro contiene la stringa di input
. il secondo nastro contiene, per ogni passo di computazione i di M, stringhe di lunghezza i, corrispondenti
a sequenze di numeri compresi tra 1 e d. Fissato i il numero di stringhe sarà al più di.
. il terzo nastro eseguirà la simulazione vera e propria
La simulazione avviene secondo il seguente algoritmo:
1. ∀i ≥ 1 passo di computazione di M, si generano sul nastro 2 tutte le stringhe di lunghezza i,
corrispondenti a possibili sequenze di scelte per computazioni di lunghezza i. La generazione delle stringhe
avviene una alla volta.
2. per ogni sequenza di lunghezza i:
(a) si copia il contenuto del nastro 1 sul nastro 3
(b) si scandisce il nastro 2, e per ogni j , indice di una possibile scelta, si applica la j -esima scelta di δ al
nastro 3
Se esiste un cammino di lunghezza l che porta la macchina M in uno stato finale, allora esiste sicuramente
una fase di calcolo di M(3) che percorre tale cammino.
Se viceversa tale cammino non esiste allora anche M(3) non raggiungerà mai lo stato finale.
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[41]
Ad ogni passo j della computazione di M, la MT M(3) compie un numero di passi pari alla lunghezza del
cammino (j ) per il numero dei cammini (dj ), ovvero:
j · dj
Se la macchina M termina in k ≥ 0 passi, allora la macchina M(3) esegue al più un numero di passi pari a:
Σkj=1 j · dj ∈ O(kdk )
Quindi una MTND può essere simulata da una MT deterministica multi-nastro in un tempo
esponenziale nel numero dei passi della macchine non deterministica.
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[42]
Riduzione delle Macchine di Turing
Le macchine di Turing possono essere ulteriolmente semplificate senza perdere potere computazionale. Infatti,
valgono i seguenti teoremi.
Teorema Data una MT M = (Σ, /b, K, q0, qf , δ) esiste una MT M0 con nastro semi-infinito equivalente
ad M.
Dimostrazione Costruiamo una macchina M0 a 3 tracce piegando, idealmente, in due il nastro della
macchina M sulla prima e terza traccia.
Sulla seconda traccia invece i simboli ↑ e ↓ indicheranno la posizione della testina della macchina M, e in
particolare se si trova nella parte semi-infinita destra o sulla parte semi-infinita sinistra.
Teorema Data una MT M = (Σ, /b, K, q0, qf , δ) esiste una una MT M0 = (Σ0, /b, K 0, q00 , qf0 , δ 0)
equivalente ad M tale che |Σ0| = 1.
Dimostrazione Intuitivamente, possiamo codificare qualunque carattere, e rappresentare la codifica in forma
unaria. Quindi possiamo costruire una macchina di Turing M0 che simula la macchina M ed avente
|Σ0| = 1.
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[43]
Macchina di Turing Universale
È possibile descrivere una MT con una stringa di caratteri e fornire tale descrizione come input ad un’altra
macchina di Turing.
Ad esempio è possibile descrivere la funzione di transizione di una MT mediante sequenza di quintuple del
tipo:
qiσiqj σj dj
corrispondenti alla transizione δ(qi, σi) = (qj , σj , dj ).
Quindi una MT può essere descritta mediante sequenze di quintuple del tipo:
#qi?σi?qj ?σj ?dj #
ove, i caratteri ”#” e ”?” fanno da separatori.
La descrizione di una MT può quindi essere passata come input sul nastro di un’altra macchina di
Turing, la Macchina di Turing Universale, che ne simula il comportamento.
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[44]
Macchina di Turing Elementari
Un altro modo classico di descrivere le MT mediante una stringa è quello di usare la proprietà che ogni MT
può essere realizzata tramite composizione di MT-elementari. Ovvero, date due macchine di Turing M e
M0, la composizione di MM0 é una macchina di Turing in cui lo stato iniziale è quello della macchina M,
lo stato finale è quello della macchina M0, e lo stato finale della macchine M coincide con quello iniziale
della macchina M0.
Definizione Si definiscono MT-elementari le seguenti macchine definite sull’alfabeto Σ = {1}:
NB: la macchine M0 è stata introdotta solo per associarla agli stati finali di una MT
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[45]
Esempio
Esempio: Definire tramite composizione di macchine elementari una MT W che copia una stringa s ∈ {1}∗,
ovvero che realizza la computazione
∗
q0/bx/b → /bxqF /bx, x ∈ {1}
∗
La descrizione di una MT tramite macchine elementari e salti condizionati è detta sequenza
linearizzata delle MT.
NB: la condizione dell’arco deve essere valutata dopo aver eseguito la macchina elementare sorgente dell’arco.
Esercizio: definire tramite composizione di macchine elementari una MT per il calcolo della somma di due
numeri in forma unaria.
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[46]
Macchina di Turing Elementari
Le macchine di Turing elementari permettono di ottenere il seguente risultato:
Teorema Ogni MT è rappresentabile come sequenza linearizzata di MT-elementari. (senza dimostrazione)
Sia, inoltre, δ la MT definita in modo tale che qualunque sia il carattere letto, 1 o /b, lo inverte e sposta a
destra la testina.
Allora è possibile dimostrare il seguente teorema:
Teorema Le MT-elementari possono essere descritte tramite composizione delle macchine δ, s, M0, cioè
usando solo 3 tipi di MT e salti condizionati sul carattere 1.
Figure 4: Macchine elementare δ e linearizzazione delle macchine destra e blank
Esercizio: definire in modo analogo la macchina |.
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[47]
Descrizione linearizzata di Macchine di Turing
Se ogni macchina di Turing è descrivibile mediante composizione di 3 macchine elementari, possiamo
codificare le 3 macchine elementari, e rappresentare una sequenza linearizzata con una parola cM sull’alfabeto
{1, /b}.
Innanzitutto, possiamo osservare che la macchina elementare M0 può essere sempre eliminata dalla
descrizione di una MT facendo le seguenti ipotesi:
. se compare nel mezzzo di una descrizione, poichè non esegue alcuna operazione per definizione, può essere
eliminata
. si assume per convenzione che sia sempre presente alla fine di una descrizione
Possiamo quindi rappresentare una sequenza linearizzata di macchine δ , s con salti condizionati a 1 tramite
un codice cM nel seguente modo:
. la MT elementare s è codificata tramite il carattere 1
. la MT elementare δ è codificata tramite il carattere 11
. un salto condizionato sul simbolo 1, all’istruzione n è codificata con la sequenza di 1
. i codici delle istruzioni sono separati dal carattere /
b
. la sequenza 111 definisce la fine della sequenza di istruzioni (HALT)
n+3
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[48]
Macchina di Turing Universale
Sapendo descrivere le MT tramite stringhe di caratteri rappresentanti MT-elementari possiamo enunciare il
seguente teorema:
Teorema Una MT U = (Σ, /b, K, δ, q0, qf ) si dice Macchina di Turing Universale se essa calcola una
funzione
∗
∗ n+1
→Σ
u:Σ
tale che, data una qualunque codifica cM di una MT M = (Σ, /b, K 0, δ 0, q00 , qf0 ) che calcola la funzione
n
m : (Σ∗ → Σ∗),
u(cM, x1, . . . , xm) = m(x1, . . . , xn)
Una MT-universale è quindi in grado di simulare il calcolo di ogni altra MT.
La dimostrazione del teorema può essere fatta osservando che:
. possiamo restringerci, senza perdere di generalità, a MT M aventi alfabeto Σ = {1} (Σ/
b = {1, /b})
. ogni M T può essere descritta tramite composizione di 2 sole MT-elementari normalizzate con salti a 1
che possono essere opportunamente codificate usando l’alfabeto Σ = {1, /b}
. i valori di input possono essere rappresentati in forma unaria
La macchina U può quindi leggere la codifica della macchina M e simularne il comportamento sull’input
x1 , . . . , x n .
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[49]
Halting Problem
Teorema Data una MT M = (Σ, /b, K, q0, qf , δ), sia cM ∈ {1, /b}∗ la sua codifica. La funzione

h(cM, x) =
1
0
se M termina su input x
se M NON termina su input x
non è T-calcolabile.
Dimostrazione Supponiamo per assurdo che la MT H che calcola la funzione h sia T-calcolabile. Possiamo
allora costruire una MT H0 che calcola la funzione h0 definita nel seguente modo:
0
h (cM) =

1
0
se M termina su input x = cM
se M NON termina su input x = cM
H0 è quindi la macchina che verifica se una MT termina quando le viene fornito in input il suo codice.
Se H0 esiste, possiamo quindi costruire una ulteriore macchina H00 che prende in input cM e calcola la
funzione

0
se h0(cM) = 0
00
h (cM) =
undef altrimenti
H00 termina con con 0 se H0 si ferma con 0, e cicla indefinitivamente se H0 si ferma con 1.
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[50]
Calcoliamo allora h00(cH00 ), cioè il valore di H00 quando le viene fornito come input il suo stesso codice:

00
h (cH00 ) =
0
undef
se h0(cH00 ) = 0
se h0(cH00 ) = 1
quindi, ricordando che:
0

h (cM) =
1
0
se M termina su input cM
se M NON termina su input cM
si deduce che:
00
0
. h (cH00 ) = 0 ⇐ h (cH00 ) = 0
00
0
⇒ H00 ↑⇒ h00(cH00 ) = undef
. h (cH00 ) = undef ⇐ h (cH00 ) = 1
⇒ H00 ↓⇒ h00(cH00 ) = 0
Poichè, in ogni caso abbiamo una contraddizione concludiamo che l’ipotesi per cui la funzione h sia
T-calcolabile è falsa.
Quindi, la MT H non è calcolabile.
Laurea Specialistica in Informatica - Università di Ferrara 2008-2009
[51]
Halting Problem
Il problema della terminazione ha come implicazione il fatto che
NON è possibile costruire un perfetto sistema di debugging che sia in grado di determinare se un
programma termini o meno sull’input dato
Si osserva che il problema della fermata pur non essendo decidibile è semi-decidibile, cioè il predicato

h(cM, x) =
è T-calcolabile.
Infatti basta eseguire la computazione.
1
undef
se M termina su input x
se M NON termina su input x