Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Varianti di MdT
Se δ(qi , a1 , . . . , ak ) = (qj , b1 , . . . , bk , d1 , . . . , dk ) e se M si
trova nello stato qi con le k testine - una per nastro -
posizionate su celle contenente a1 , . . . , ak rispettivamente, alla
fine della transizione:
Funzione di transizione di una MdTM
Se δ(qi , a1 , . . . , ak ) = (qj , b1 , . . . , bk , d1 , . . . , dk ) e se M si
trova nello stato qi con le k testine - una per nastro -
posizionate su celle contenente a1 , . . . , ak rispettivamente, alla
fine della transizione:
• M si troverà nello stato qj ,
Funzione di transizione di una MdTM
Se δ(qi , a1 , . . . , ak ) = (qj , b1 , . . . , bk , d1 , . . . , dk ) e se M si
trova nello stato qi con le k testine - una per nastro -
posizionate su celle contenente a1 , . . . , ak rispettivamente, alla
fine della transizione:
• M si troverà nello stato qj ,
• bt ∈ Γ sarà il simbolo scritto sulla cella del t-esimo nastro su
cui la testina si trovava all’inizio della transizione (contenente
at ), per t ∈ {1, . . . , k}
Funzione di transizione di una MdTM
Se δ(qi , a1 , . . . , ak ) = (qj , b1 , . . . , bk , d1 , . . . , dk ) e se M si
trova nello stato qi con le k testine - una per nastro -
posizionate su celle contenente a1 , . . . , ak rispettivamente, alla
fine della transizione:
• M si troverà nello stato qj ,
• bt ∈ Γ sarà il simbolo scritto sulla cella del t-esimo nastro su
cui la testina si trovava all’inizio della transizione (contenente
at ), per t ∈ {1, . . . , k}
• la testina sul t-esimo nastro si troverà sulla stessa cella cui si
trovava all’inizio della computazione se dt = S, si sarà spostata
sulla cella di sinistra se (tale cella esiste e se) dt = L, si sarà
spostata sulla cella di destra se dt = R, per t ∈ {1, . . . , k}.
Computazione di una MdTM
Transizioni omesse
q
vanno in reject
(senza cambiare i
0,└┘ ,1,R,R 1 ,1 ,└┘, R, L simboli letti o
spostare la testina)
qreject
qaccept
Esempio: MdT a 2 nastri per {wca|w | | w ∈ {a, b}∗ }
Transizioni omesse
q
vanno in reject
b,└┘ b,a, R, R (senza cambiare i
a,└┘ a, a, R, R a, a a, └┘, R, L simboli letti o
spostare la testina)
qreject
qaccept
MdTM e MdT
Teorema
Per ogni macchina di Turing multinastro M esiste una macchina di
Turing (a nastro singolo) S equivalente a M, cioè tale che
L(M) = L(S).
Dimostrazione
MdTM e MdT
Teorema
Per ogni macchina di Turing multinastro M esiste una macchina di
Turing (a nastro singolo) S equivalente a M, cioè tale che
L(M) = L(S).
Dimostrazione
Faremo vedere che esiste una macchina di Turing (a nastro
singolo) S = (Q, Σ, Γ, δ, q0 , qaccept , qreject ) equivalente a M.
MdTM e MdT
Teorema
Per ogni macchina di Turing multinastro M esiste una macchina di
Turing (a nastro singolo) S equivalente a M, cioè tale che
L(M) = L(S).
Dimostrazione
Faremo vedere che esiste una macchina di Turing (a nastro
singolo) S = (Q, Σ, Γ, δ, q0 , qaccept , qreject ) equivalente a M.
Nella dimostrazione useremo il termine “contenuto del
nastro”: è la stringa dei simboli che restano sul nastro dopo
aver eliminato tutti i simboli t che seguono l’ultimo carattere
del nastro diverso da t.
MdTM e MdT
corrisponderà la configurazione di S
corrisponderà la configurazione di S
Teorema
Un linguaggio L è Turing riconoscibile se e solo se esiste una
macchina di Turing multinastro M che lo riconosce, cioè tale che
L(M) = L.
Dimostrazione.
MdTM e MdT
Teorema
Un linguaggio L è Turing riconoscibile se e solo se esiste una
macchina di Turing multinastro M che lo riconosce, cioè tale che
L(M) = L.
Dimostrazione.
Se L è Turing riconoscibile allora esiste una MdT M tale che
L(M) = L. Poiché M è una MdT a k nastri con k = 1, esiste
una macchina di Turing multinastro M tale che L(M) = L.
MdTM e MdT
Teorema
Un linguaggio L è Turing riconoscibile se e solo se esiste una
macchina di Turing multinastro M che lo riconosce, cioè tale che
L(M) = L.
Dimostrazione.
Se L è Turing riconoscibile allora esiste una MdT M tale che
L(M) = L. Poiché M è una MdT a k nastri con k = 1, esiste
una macchina di Turing multinastro M tale che L(M) = L.
Viceversa, se esiste una macchina di Turing multinastro M
tale che L(M) = L, per il teorema precedente esiste una
macchina di Turing (a nastro singolo) S tale che
L(S) = L(M) = L. Quindi L è Turing riconoscibile.
Macchine di Turing multinastro
Osservazione
• Abbiamo dimostrato che le MdTM hanno lo stesso potere
delle MdT.
Macchine di Turing multinastro
Osservazione
• Abbiamo dimostrato che le MdTM hanno lo stesso potere
delle MdT.
• Introdurremo una misura del tempo necessario per eseguire
una computazione che termina.
Macchine di Turing multinastro
Osservazione
• Abbiamo dimostrato che le MdTM hanno lo stesso potere
delle MdT.
• Introdurremo una misura del tempo necessario per eseguire
una computazione che termina.
• Più precisamente considereremo solo MdT che si fermano su
ogni input.
Macchine di Turing multinastro
Osservazione
• Abbiamo dimostrato che le MdTM hanno lo stesso potere
delle MdT.
• Introdurremo una misura del tempo necessario per eseguire
una computazione che termina.
• Più precisamente considereremo solo MdT che si fermano su
ogni input.
• Assoceremo a ogni MdT di questo tipo una funzione che stimi
il tempo che le è necessario per stabilire se w appartiene al
linguaggio L(M) deciso da M.
Ordine radix
Definizione
Sia Σ = {a0 , . . . , ak } un alfabeto e sia a0 < a1 < . . . < ak un
ordinamento degli elementi di Σ. Siano x, y ∈ Σ∗ .
Diremo che x ≤ y rispetto all’ordine radix se x e y verificano una
delle condizioni seguenti:
1 |x| < |y |.
Ordine radix
Definizione
Sia Σ = {a0 , . . . , ak } un alfabeto e sia a0 < a1 < . . . < ak un
ordinamento degli elementi di Σ. Siano x, y ∈ Σ∗ .
Diremo che x ≤ y rispetto all’ordine radix se x e y verificano una
delle condizioni seguenti:
1 |x| < |y |.
2 |x| = |y | e x = zax 0 , y = zby 0 , con z, x 0 , y 0 ∈ Σ∗ , a, b ∈ Σ e a ≤ b.
Ordine radix
Definizione
Sia Σ = {a0 , . . . , ak } un alfabeto e sia a0 < a1 < . . . < ak un
ordinamento degli elementi di Σ. Siano x, y ∈ Σ∗ .
Diremo che x ≤ y rispetto all’ordine radix se x e y verificano una
delle condizioni seguenti:
1 |x| < |y |.
2 |x| = |y | e x = zax 0 , y = zby 0 , con z, x 0 , y 0 ∈ Σ∗ , a, b ∈ Σ e a ≤ b.
u -> b, R q0
b -> R
q reject b -> b, R
b -> b, R
q1
a -> b, R
u -> b, R
q accept
Macchina di Turing M1
a -> a, R
b -> b, R
u -> b, R q0
b -> R
q reject b -> b, R
b -> b, R
q1
a -> b, R
u -> b, R
q accept
q0
b -> b, R
a -> b, R
q1
u -> b, R
a -> b, R
q2
b -> b, R
q accept
Macchina di Turing M2
a -> a, R
b -> b, R
q0
b -> b, R
a -> b, R
q1
u -> b, R
a -> b, R
q2
b -> b, R
q accept
a -> a, R
b -> b, R
u -> b, R q0
b -> R
q reject b -> b, R
b -> b, R
q1
a -> b, R
u -> b, R
q accept
Albero delle computazioni su bab
q0 bab
ba q0 b bbqreject b
a a, R qaccept
q0
qreject
a a, R
b b, R
└┘ └┘, R b b, R
q1 a a, R
└┘ └┘,R
Figura: N1
Computazioni che non terminano
q0 bab
b q1 ab
baqreject b ba q1 b
….
Computazioni che non terminano
q0 bab
b q1 ab
baqreject b ba q1 b
….
L’albero delle computazioni di N1 su bab non ha un numero
finito di nodi.
Macchina di Turing non deterministica
Definizione
Sia N = (Q, Σ, Γ, δ, q0 , qaccept , qreject ) una MdT non
deterministica. Il linguaggio L(N) riconosciuto da N, è l’insieme:
Definizione
Sia N = (Q, Σ, Γ, δ, q0 , qaccept , qreject ) una MdT non
deterministica. Il linguaggio L(N) riconosciuto da N, è l’insieme:
u -> b, R q0
b -> R
q reject b -> b, R
b -> b, R
q1
a -> b, R
u -> b, R
q accept
Macchina di Turing M1
a -> a, R
b -> b, R
u -> b, R q0
b -> R
q reject b -> b, R
b -> b, R
q1
a -> b, R
u -> b, R
q accept
a -> a, R
b -> b, R
q0
b -> b, R
a -> b, R
q1
u -> b, R
a -> b, R
q2
b -> b, R
q accept
Macchina di Turing M2
a -> a, R
b -> b, R
q0
b -> b, R
a -> b, R
q1
u -> b, R
a -> b, R
q2
b -> b, R
q accept
a a, R qaccept
q0
qreject
a a, R
b b, R
└┘ └┘, R b b, R
q1 a a, R
└┘ └┘,R
Figura: N1
Macchina di Turing N1
a a, R qaccept
q0
qreject
a a, R
b b, R
└┘ └┘, R b b, R
q1 a a, R
└┘ └┘,R
Figura: N1
Teorema
Per ogni macchina di Turing non deterministica N esiste una
macchina di Turing deterministica D equivalente ad N, cioè tale
che L(N) = L(D).
Idea della prova
• Perché?
Rappresentazione delle computazioni
• Perché?
• Come?
Rappresentazione delle computazioni - Perché?
u -> b, R q0
b -> R
q reject b -> b, R
b -> b, R
q1
a -> b, R
u -> b, R
q accept
Rappresentazione dei cammini
a -> a, R
b -> b, R
u -> b, R q0
b -> R
q reject b -> b, R
b -> b, R
q1
a -> b, R
u -> b, R
q accept
Γb = {1, 2, 3}.
Rappresentazione dei cammini
q0 bab
ba q0 b bbqreject b
q0 bab
ba q0 b 1 bbqreject b 1
1 bab qreject bab q1 3
2 bab q0
babb qaccept 1
1 babb qreject
Codifica delle computazioni
q0 bab
ba q0 b bbqreject b
q0 bab
ba q0 b 1 bbqreject b 1
1 bab qreject bab q1 3
2 bab q0
babb qaccept 1
1 babb qreject
Codifica delle computazioni su bab
• 1: q0 bab → bqreject ab
2: q0 bab → bq0 ab
3: q0 bab → bq1 ab
Codifica delle computazioni su bab
• 1 : q0 bab → bqreject ab
2 : q0 bab → bq0 ab
3 : q0 bab → bq1 ab
• 11: senza sbocco, muore. Lo stesso per 12 e 13.
Codifica delle computazioni su bab
• 1 : q0 bab → bqreject ab
2 : q0 bab → bq0 ab
3 : q0 bab → bq1 ab
• 11: senza sbocco, muore. Lo stesso per 12 e 13.
• 21 : q0 bab → bq0 ab → baq0 b
22, 23 senza sbocco, muore.
Codifica delle computazioni su bab
• 1 : q0 bab → bqreject ab
2 : q0 bab → bq0 ab
3 : q0 bab → bq1 ab
• 11: senza sbocco, muore. Lo stesso per 12 e 13.
• 21 : q0 bab → bq0 ab → baq0 b
22, 23 senza sbocco, muore.
...
Codifica delle computazioni su bab
• 1 : q0 bab → bqreject ab
2 : q0 bab → bq0 ab
3 : q0 bab → bq1 ab
• 11: senza sbocco, muore. Lo stesso per 12 e 13.
• 21 : q0 bab → bq0 ab → baq0 b
22, 23 senza sbocco, muore.
...
• La computazione che mostra che bab è accettata.
2131 :
a a, R qaccept
q0
qreject
a a, R
b b, R
└┘ └┘, R b b, R
q1 a a, R
└┘ └┘,R
Figura: N1
Rappresentazione dei cammini
q0 bab
1 b q1 ab
1 baqreject b ba q1 b 2
….
Rappresentazione dei cammini
Teorema
Per ogni macchina di Turing non deterministica N esiste una
macchina di Turing deterministica D equivalente ad N, cioè tale
che L(N) = L(D).
Macchina di Turing non deterministica
Dimostrazione
Data una macchina di Turing non deterministica
N = (Q, Σ, Γ, δ, q0 , qaccept , qreject ), la macchina di Turing D
che simula N ha tre nastri.
Macchina di Turing non deterministica
Dimostrazione
Data una macchina di Turing non deterministica
N = (Q, Σ, Γ, δ, q0 , qaccept , qreject ), la macchina di Turing D
che simula N ha tre nastri.
Sappiamo che esiste una macchina di Turing deterministica a
un nastro equivalente ad D e quindi a N.
Macchina di Turing non deterministica
a a, R qaccept
q0
qreject
a a, R
b b, R
└┘ └┘, R b b, R
q1 a a, R
└┘ └┘,R
Figura: N1
Esempio 1
u -> b, R q0
b -> R
q reject b -> b, R
b -> b, R
q1
a -> b, R
u -> b, R
q accept
Esempio 2
a -> a, R
b -> b, R
u -> b, R q0
b -> R
q reject b -> b, R
b -> b, R
q1
a -> b, R
u -> b, R
q accept
Corollario
Un linguaggio L è Turing riconoscibile se e solo se esiste una
macchina di Turing non deterministica N che lo riconosce,
cioè tale che L(N) = L.
Macchina di Turing non deterministica
Corollario
Un linguaggio L è Turing riconoscibile se e solo se esiste una
macchina di Turing non deterministica N che lo riconosce,
cioè tale che L(N) = L.
Dimostrazione
Se L è il linguaggio L(N) riconosciuto da una macchina di
Turing non deterministica N, per il teorema precedente esiste
una MdT deterministica D tale che L(D) = L(N) = L.
Macchina di Turing non deterministica
Corollario
Un linguaggio L è Turing riconoscibile se e solo se esiste una
macchina di Turing non deterministica N che lo riconosce,
cioè tale che L(N) = L.
Dimostrazione
Se L è il linguaggio L(N) riconosciuto da una macchina di
Turing non deterministica N, per il teorema precedente esiste
una MdT deterministica D tale che L(D) = L(N) = L.
Quindi L è Turing riconoscibile.
Macchina di Turing non deterministica
Corollario
Un linguaggio L è decidibile se e solo se esiste una macchina
di Turing non deterministica N che lo decide.
Osservazione
Teorema
Se ogni nodo in un albero ha un numero finito di figli e ogni
cammino dell’albero ha un numero finito di nodi, allora l’albero ha
un numero finito di nodi.
Corollario
Corollario
Un linguaggio L è decidibile se e solo se esiste una macchina
di Turing non deterministica N che lo decide.
Corollario
Corollario
Un linguaggio L è decidibile se e solo se esiste una macchina
di Turing non deterministica N che lo decide.
Prova
Se un linguaggio L è decidibile, esiste una macchina di Turing
deterministica M che è un decisore e che accetta L. M può
essere facilmente trasformata in una macchina di Turing non
deterministica che decide L.
Corollario
Corollario
Un linguaggio L è decidibile se e solo se esiste una macchina
di Turing non deterministica N che lo decide.
Prova
Se un linguaggio L è decidibile, esiste una macchina di Turing
deterministica M che è un decisore e che accetta L. M può
essere facilmente trasformata in una macchina di Turing non
deterministica che decide L.
Viceversa, se un linguaggio L è deciso da una macchina di
Turing non deterministica N, definiamo una macchina di
Turing deterministica D 0 , modificando la precedente
definizione di D come segue.
Corollario
Descrizione di D 0 :
Corollario
Descrizione di D 0 :
1 Inizialmente il nastro 1 contiene l’input w e i nastri 2 e 3
contengono solo t. (D 0 inizializza la stringa sul nastro 3 a .)
Corollario
Descrizione di D 0 :
1 Inizialmente il nastro 1 contiene l’input w e i nastri 2 e 3
contengono solo t. (D 0 inizializza la stringa sul nastro 3 a .)
2 D 0 copia il contenuto del nastro 1 sul nastro 2.
Corollario
Descrizione di D 0 :
1 Inizialmente il nastro 1 contiene l’input w e i nastri 2 e 3
contengono solo t. (D 0 inizializza la stringa sul nastro 3 a .)
2 D 0 copia il contenuto del nastro 1 sul nastro 2.
3 Utilizza il nastro 2 per simulare N con input w su una
ramificazione della sua computazione non deterministica,
riproducendo la successione di scelte del cammino
corrispondente alla stringa sul nastro 3 (se tale stringa
corrisponde a una computazione). Se si raggiunge una
configurazione di accettazione, D 0 accetta l’input. Altrimenti
(se si raggiunge una configurazione di rifiuto, se la stringa non
corrisponde a una computazione, o al termine della
simulazione sulla stringa) D 0 passa al passo 4.
Corollario
Descrizione di D 0 :
1 Inizialmente il nastro 1 contiene l’input w e i nastri 2 e 3
contengono solo t. (D 0 inizializza la stringa sul nastro 3 a .)
2 D 0 copia il contenuto del nastro 1 sul nastro 2.
3 Utilizza il nastro 2 per simulare N con input w su una
ramificazione della sua computazione non deterministica,
riproducendo la successione di scelte del cammino
corrispondente alla stringa sul nastro 3 (se tale stringa
corrisponde a una computazione). Se si raggiunge una
configurazione di accettazione, D 0 accetta l’input. Altrimenti
(se si raggiunge una configurazione di rifiuto, se la stringa non
corrisponde a una computazione, o al termine della
simulazione sulla stringa) D 0 passa al passo 4.
4 Rifiuta se tutti i cammini dell’albero delle computazioni di N
su w hanno portato a una configurazione di rifiuto. Altrimenti
D 0 passa al passo 5.
Corollario
Descrizione di D 0 :
1 Inizialmente il nastro 1 contiene l’input w e i nastri 2 e 3
contengono solo t. (D 0 inizializza la stringa sul nastro 3 a .)
2 D 0 copia il contenuto del nastro 1 sul nastro 2.
3 Utilizza il nastro 2 per simulare N con input w su una
ramificazione della sua computazione non deterministica,
riproducendo la successione di scelte del cammino
corrispondente alla stringa sul nastro 3 (se tale stringa
corrisponde a una computazione). Se si raggiunge una
configurazione di accettazione, D 0 accetta l’input. Altrimenti
(se si raggiunge una configurazione di rifiuto, se la stringa non
corrisponde a una computazione, o al termine della
simulazione sulla stringa) D 0 passa al passo 4.
4 Rifiuta se tutti i cammini dell’albero delle computazioni di N
su w hanno portato a una configurazione di rifiuto. Altrimenti
D 0 passa al passo 5.
5 D 0 genera sul nastro 3 la stringa successiva a quella corrente in
ordine radix e torna al passo 2.
Corollario