Macchine di Turing, problemi ricorsivi e
ricorsivamente enumerabili
Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili
Problemi che i calcolatori non possono risolvere
E’ importante sapere se un programma e’ corretto, cioe’ faquello che ci aspettiamo.
E’ facile vedere che il programma contente solo il comandoprintf(‘‘ciao’’) stampa ciao.
Ma il programma in Fig. 8.2 del libro?
Stampa ciao, dato un input n se e solo se l’equazionexn + yn = zn ha una soluzione dove x , y e z sono interi.
Sappiamo ora (ultimo teorema di Fermat) che stampa ciao,con l’input n = 2, e cicla per sempre su input n > 2.
Ci sono voluti 300 anni per provarlo.
Possiamo sperare di avere un programma che prova lacorrettezza di programmi?
Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili
L’ipotetico programma H che testa “ciao”
Supponiamo che esista un programma H tale che, dato unqualunque programma P e un input I , dice si se P con input I
stampa ”ciao”, altrimenti dice no.
Hello-worldtester
HP
I yes
no
Modifichiamo il comando di stampa di no di H in ciao.Otteniamo il programma H1
P
I
H1
yes
hello, world
Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili
Modifichiamo H1 in modo che l’input I sia lo stesso P . Otteniamoil programma H2:
H2Pyes
hello, world
H2 stampa si se P con input P stampa ciao, altrimenti stampaciao.
Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili
H2 non puo’ esistere
Diamo H2 come input ad H2.
H2H2
yes
hello, world
Se H2 stampa si, avrebbe dovuto stampareciao.Se H2 stampa ciao, avrebbe dovuto stampare si.Quindi H2 non puo’ esistere.Quindi neanche H puo’ esistere.Quindi il problema affrontato e’ indecidibile: non esiste nessunprogramma che, dato un programma qualsiasi e un input, sappiadire se quel programma con quell’input stampa ciao.
Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili
Problemi indecidibili
Problemi per cui non c’e’ nessun programma che li possarisolvere.
Problema: appartenenza di una stringa ad un linguaggio.
Il numero di linguaggi diversi su un alfabeto non e’ numerabile.
I programmi (stringhe finite su un alfabeto) sono numerabili:li ordino per lunghezza, e poi lessicograficamente ⇒ primoprogramma, secondo programma, ecc.
Quindi esistono infinitamente piu’ linguaggi che programmi.
Quindi devono esistere problemi indecidibili (Godel 1931).
Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili
La macchina di Turing (Turing, 1936)
X 2 X i X nX 1
controlFinite
. . .BBB B. . .
Una TM fa una mossa in funzione del suo stato, e del simbolosotto la testina di lettura del nastro.In una mossa, una TM
1 cambia stato
2 scrive un simbolo del nastro nella cella sotto la testina
3 muove la testina di una cella verso destra o verso sinistra
Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili
Definizione formale come automa
Una macchina di Turing deterministica e’ una 7-tupla
M = (Q,Σ,Γ, δ, q0,B ,F ),
dove
Q e’ un insieme finito di stati,
Σ e’ un insieme finito di simboli di input,
Γ e’ un insieme finito di simboli di nastro,
δ e’ una funzione di transizione da Q × Γ a Q × Γ × {L,R},
q0 e’ lo stato iniziale,
B ∈ Γ e’ il simbolo blank, e
F ⊆ Q e’ l’insieme di stati finali.
Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili
Descrizioni istantanee
Una TM cambia configurazione dopo ogni mossa.Usiamo le descrizioni istantanee (ID) per descrivere leconfigurazioni.Una ID e’ una stringa della forma
X1X2 · · ·Xi−1qXiXi+1 · · ·Xn
dove
1 q e’ lo stato della TM
2 X1X2 · · ·Xn e’ la porzione non-blank del nastro
3 La testina e’ sopra il simbolo i -esimo
Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili
Le mosse e il linguaggio di una TM
Useremo ⊢M
per indicare una mossa di M da una configurazione ad
un’altra.• Supponiamo δ(q,Xi ) = (p,Y ,L). AlloraX1X2 · · ·Xi−1qXiXi+1 · · ·Xn ⊢
MX1X2 · · · pXi−1YXi+1 · · ·Xn
• Se δ(q,Xi ) = (p,Y ,R), abbiamoX1X2 · · ·Xi−1qXiXi+1 · · ·Xn ⊢
MX1X2 · · ·Xi−1YpXi+1 · · ·Xn
Indichiamo la chiusura riflessiva e transitiva di ⊢M
con∗
⊢M.
• Una TM M = (Q,Σ,Γ, δ, q0,B ,F ) accetta il linguaggio
L(M) = {w ∈ Σ∗ : q0w∗
⊢M
αpβ, p ∈ F , α, β ∈ Γ∗}
Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili
Una TM per {0n1n : n ≥ 1}
M = ({q0, q1, q2, q3, q4}, {0, 1}, {0, 1, X , Y , B}, δ, q0, B, {q4})
dove δ e’ data dalla tabella seguente
0 1 X Y B
→ q0 (q1,X ,R) (q3,Y ,R)q1 (q1, 0,R) (q2,Y ,L) (q1,Y ,R)q2 (q2, 0,L) (q0,X ,R) (q2,Y ,L)q3 (q3,Y ,R) (q4,B ,R)
⋆q4
Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili
Possiamo rappresentare M con il seguente diagramma di
transizione
/Y Y
/Y Y
/Y Y
0/0
X/0
/X X
/B B
/ Y1
/Y Y
0/0Start
q q q
q q
0 1 2
3 4
Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili
Una TM con “output”
La seguente TM calcola
m·
− n = max(m − n, 0)
0 1 B
→ q0 (q1,B ,R) (q5,B ,R)q1 (q1, 0,R) (q2, 1,R)q2 (q1, 1,L) (q2, 1,R) (q4,B ,L)q3 (q3, 0,L) (q3, 1,L) (q0,B ,R)q4 (q4, 0,L) (q4,B ,L) (q6, 0,R)q5 (q5,B ,R) (q5,B ,R) (q6,B ,R)
⋆q6
Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili
Il diagramma di transizione e’
/1 1/0 B
1 / B
1 / B
0/0
/1 1
/B B
/B B
0/0/0 B
1 / B
B / 0
0/0 /1 1
/B B
Startq q q
q q
0 1 2
q
q0 / 1
4
3
5 6
Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili
Accettazione per arresto
Una TM si arresta se entra in uno stato q guardando unsimbolo di nastro X e non ci sono mosse possibili, cioe’δ(q,X ) non e’ definita.
Se una TM accetta una stringa, possiamo assumere che siarresti (basta rendere indefinito δ(q,X ) per ogni q
accettante).
Se non accetta, non possiamo fare in modo che si arresti.
Linguaggi ricorsivi: esiste una TM che si arresta su ognistringa (sia accettata che no).
Linguaggi ricorsivamente enumerabili: esiste una TM che siarresta se la stringa e’ accettata.
Problema decidibile: esiste una TM che si arresta sempre.
Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili
Altri modelli di TM
Estensioni:
piu’ nastri
non-determinismo
Restrizioni:
nastro illimitato solo in una direzione e divieto di sostituire unsimbolo del nastro con B
due stack al posto del nastro
due contatori (mossa: cambio stato e +1 o -1 da uncontatore)
Tutti i modelli sono equivalenti: accettano i linguaggiricorsivamente enumerabili (tesi di Church, 1936).
Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili
TM e computer
Da TM a computer: basta avere sempre memoria daaggiungere, per simulare il nastro infinito.
Da computer a TM: vari nastri (memoria, istruzione, indirizzodi memoria, file di input, nastro ausiliario), controllo finito pereseguire una istruzione dopo l’altra leggendo e scrivendo inastri.
Differenza di tempo tra computer e TM: polinomiale. La TMpuo’ simulare n passi di un computer in O(n3) passi.
Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili
Linguaggi ricorsivamente enumerabili
D’ora in poi: calcolatore = macchina di Turing
L e’ ricorsivamente enumerabile se L = L(M) per una TMM. M si ferma se accetta una stringa, ma potrebbe nonfermarsi se non la accetta.
Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili
Un linguaggio ricorsivamente enumerabile
Consideriamo il linguaggio formato dalle coppie (M,w) taliche:
M e’ una TM (codificata in binario) con alfabeto {0,1}w e’ una stringa di 0 e 1M accetta w
Se questo problema e’ indecidibile, allora lo e’ anche ilproblema in cui una TM puo’ avere qualunque alfabeto.
Primo passo: codificare una TM come una stringa di 0 e 1.
Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili
Codice per una TM
Possiamo associare ad ogni stringa binaria un indice intero 1,2, 3, ..., cosi’ enumeriamo le stringhe: ǫ e’ la prima stringa, 0la seconda, 1 la terza, 00 la quarta, 01, la quinta, ...
Ordinamento per lunghezza, con stringhe lunghe ugualiordinate lessicograficamente.
Simbolo wi per la stringa i -esima
Vogliamo fare la stessa cosa anche per le TM.
Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili
Codice per una TM
Per rappresentare M = (Q, {0, 1},Γ, δ, q1 ,B ,F} come una stringabinaria, dobbiamo assegnare interi agli stati, ai simboli di nastro, ealle direzioni L e R:
Supponiamo che gli stati siano q1, q2, . . . , qr . Stato iniziale:q1, stato finale q2
Supponiamo che i simboli di nastro siano X1,X2, . . . ,Xs .Inoltre: 0 = X1, 1 = X2, B = X3.
L = D1 e R = D2.
Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili
Codice per una TM
Per la funzione di transizione: se δ(qi ,Xj) = (qk ,Xl ,Dm), lacodifica e’ 0i10j10k10l10m (mai due 1 consecutivi).
Per un’intera TM: codici per tutte le transizioni, separati da11: C111C211 . . . Cn−111Cn
Esempio: M = ({q1, q2, q3}, {0, 1}, {0, 1,B}, δ, q1 ,B , {q2})δ e’ definita da: δ(q1, 1) = (q3, 0,R), δ(q3, 0) = (q1, 1,R),δ(q3, 1) = (q2, 0,R), δ(q3,B) = (q3, 1,L).Codici per le regole di transizione:01001000101000001010100100000100100101000001000100010010
Codice per M:01001000101001100010101001001100010010010100110001000100010010Anche altri codici, elencando le transizioni in ordine diverso.
Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili
Codici e TM
Data una TM M, abbiamo associato un intero i : M e’ lai -esima TM, scritta Mi .
Molti interi non corrispondono a nessuna TM. Esempio:11001 o 001110.
Se w1 non e’ un codice valido, allora diciamo che Mi e’ la TMche si arresta subito per qualunque input (un solo stato enessuna transizione). Quindi L(Mi) = ∅.
Per codificare (M,w): codice di M seguito da 111 seguito daw.
Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili
Il linguaggio di diagonalizzazione
Il linguaggio di diagonalizzazione Ld e’ l’insieme dellestringhe wi tali che wi 6∈ L(Mi).
Tutte le stringhe w tali che M con codice w non accetta w .
Matrice con TM sulle righe e stringhe sulle colonne ⇒ ladiagonale corrisponde a stringhe wi e TM Mi . Le stringhe diLd corrispondono agli 0 della diagonale.
E’ possibile che la diagonale complementata sia una riga? No,perche’ la diagonale complementata e’ in disaccordo con ogniriga in almeno una posizione.
⇒ Ld non puo’ essere accettato da nessuna TM.
Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili
Linguaggi ricorsivi
L e’ ricorsivo se L = L(M) per una TM M tale che:
se w ∈ L, allora M la accetta (e si arresta)
se w 6∈ L, allora M non la accetta ma si arresta.
Problema (dell’accettazione di L): e’ decidibile se L e’ ricorsivo,altrimenti e’ indecidibile.
Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili
Classi di linguaggi
ricorsivi = decidibili = M si arresta sempre
ricorsivamente enumerabili = M si arresta se accetta
non ricorsivamente enumerabili. Esempio: Ld .
Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili
Proprieta’ dei linguaggi ricorsivi
Teorema 9.3: Se L e’ ricorsivo, anche L̄ e’ ricorsivo.Prova: Se L e’ ricorsivo, esiste M che si arresta sempre.Modifichiamo M in M ′ in modo che M ′ accetti quando M nonaccetta, e viceversa. Anche M ′ si arresta sempre e accetta L̄.Allora L̄ e’ ricorsivo.
Conseguenza: se L e’ RE, ma L̄ non e’ RE, allora L non puo’ esserericorsivo.
Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili
Proprieta’ dei linguaggi RE
Teorema 9.4: Se L e L̄ sono RE, allora L e’ ricorsivo.Prova: Sia L = L(M1) e L̄ = L(M2). Costruiamo M che esegue inparallelo (due nastri, due testine) M1 e M2. Se l’input e’ in L, M1
lo accetta e si ferma, quindi anche M accetta e si ferma. Se l’inputnon e’ in L, allora M2 lo accetta e si ferma, quindi M lo rifiuta masi ferma. Quindi M si ferma in ogni caso.
Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili
L e L̄
Dove possono stare L e L̄?
sia L che L̄ ricorsivi
ne’ L ne’ L̄ sono RE
L e’ RE ma non ricorsivo, e L̄ non e’ RE
L̄ e’ RE ma non ricorsivo, e L non e’ RE
Non e’ possibile che un linguaggio sia ricorsivo e l’altro sia RE oneanche RE (teorema 9.3).Non e’ possibile che siano entrambi RE ma non ricorsivi (teorema9.4).
Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili