La macchina universale
Una immediata conseguenza della dimostrazione è la seguente
Corollario
il linguaggio L = {M (w) | M rappresenta una macchina di Turing che si ferma con input w}
H
sull’alfabeto {0,1}* è un linguaggio non ricorsivo [e quindi non decidibilie].
LH in altre parole è costituito dalle stringhe che rappresentano una MT seguita dall’input da
essa accettato ovvero che corrispondono ai valori 1 del vettore caratteristico della MT.
Tuttavia è possibile dimostrare il seguente
Teorema: il linguaggio LH è ricorsivamente enumerabile [e quindi semidecidibile].
Sapendo perciò che un linguaggio ricorsivo è anche ricorsivamente numerabile si avrà l’importante
risultato:
Corollario: la classe dei linguaggi ricorsivi è contenuta in modo proprio nella classe dei linguaggi
ricorsivamente enumerabili ovvero LR & LRE
La dimostrazione del teorema si basa su una macchina universale che lavora secondo il
seguente schema
M si ferma
con input w
"M""w"
U
Accettazione
Loop
M non si ferma
con input w
In sintesi si deve dimostrare che la
macchina universale U simula
perfettamente ogni altra Macchina di Turing
Ricorsiva enumerabilità di L
H
La dimostrazione verrà fatta con una macchina a tre nastri. Nel nastro 1 verrà codificato l’input
mentre il nastro 3 verrà usato per effettuare la simulazione dell’esecuzione della macchina M.
Una computazione della macchina U viene ad essere definita nel seguente modo:
1. Se la stringa di input non è della forma “M” “w”, U si muove indefinitivamente verso destra.
2. Viene ricopiata la stringa w sul nastro 3, la testina viene quindi riposizionata a sinistra al primo
carattere, cosicché sul nastro 3 viene ad essere definita la configurazione iniziale di una
computazione di M con input w.
3. viene scritto sul nastro 2 lo stato q0 (il simbolo 1 nella nostra codifica)
4. Passo di simulazione. La transizione di M viene determinata dal simbolo x scandito sul nastro 3
e lo stato qi codificato sul nastro 2.
a) Viene scandito il nastro 1 alla ricerca della coppia EN(qi ) EN (x) se tale transizione non esiste
U si ferma e accetta l’input (configurazione finale).
b) Assunto che il nastro 1 contenga la transizione EN(qi) 0 EN(x) 0 EN(y)0 EN(d) 0 EN(qj)
i) EN(qi) è rimpiazzato da EN(qj) sul nastro 2
ii) il simbolo y è scritto sul nastro 3
iii) la testina del nastro 3 è mossa nella direzione specificata da d
5. si ripete il passo di simulazione (punti 4 e 5)
La simulazione della macchina U accetta stringhe in LH mentre per stringhe in {0,1}* - LH
cicla indefinitivamente. Poiché LH = L(U) LH è ricorsivamente enumerabile essendo
ricorsivamente enumerabile L(U).
Indecidibilità del Linguaggio di diagonalizzazione
Ld = tutte le stringhe wi tali che
wi non è in L(Mi)
Ld = { wi ! "* | wi ! L(Mi}
Teorema il linguaggio Ld è non ricorsivamente enumerabile
w
M
wj
ws
Mi
0 0 0 1 0 0 1 0 . . .
.
Mj
0 0 1 0 1 0 0 1
0 1 0 0 0 1 0 0 . . . .
Supponiamo Ld = L(M) per una macchina M,
allora deve esistere una Macchina di Turing nella
enumerazione ovvero un indice i che individua
la macchina Mi che riconosce wi ! Ld
- se wi ! Ld allora Mi accetta wi pertanto per
definizione di Ld wi non è in Ld poiché Ld contiene
solo stringhe wj tale che Mj non accetta wj
- se wi ! Ld allora Mi non accetta wi pertanto per
definizione di Ld wi è in Ld
Evidentemente si ha contraddizione poiché wi non può essere o non essere in Ld
Riducibilita’
Un problema decisionale P si dice Turing riducibile a un problema P’ se c’è una macchina di
Turing che presa qualsiasi istanza p ! P come input produce un associata istanza p’ ! P’ in cui la
soluzione di p può essere ricavata dalla soluzione di p’.
Risultato
Input
pi ! P
Riduzione di
P a P'
p'i ! P'
Algoritmo
per P'
Yes/not
Teorema
- Se un problema decisionale P è indecidibile, e P è riducibile a P’, allora è indecidibile
! anche il problema P’
- Se un problema decisionale P è non ricorsivamente enumerabile, e P è riducibile a P’,
! allora il problema P’ non è ricorsivamente enumerabile.
Teorema di Rice
TEOREMA (Rice) :Ogni proprietà non banale dei linguaggi ricorsivamente enumerabili è
!!
indecidibile
In altre parole è impossibile riconoscere per mezzo di una MT le stringhe binarie che rappresentano
codici di una MT il cui linguaggio soddisfa la proprietà.
[Una proprietà individua un sottoinsieme dei linguaggi Ricorsivamente enumerabili]
Esempio: “essere un linguaggio Contex-free”.
La proprietà essere liberi dal contesto individua tutti i linguaggi liberi dal contesto all’interno
della classe dei linguaggi ricorsivamente enumerabili. Pertanto il teorema di Rice afferma che
non esiste una MT capace di decidere se una MT’ accetti un linguaggio Contex-free .
Def. Una proprietà si dice banale se appartiene a tutti i linguaggi ricorsivamente enumerabili
oppure a nessuno. Altrimenti si dice non banale.
Se P è una proprietà dei linguaggi ricorsivamente enumerabili il linguaggio LP è l’insieme dei codici di
macchine di Turing Mi tali che L(Mi) è un linguaggio in P, ovvero LP = {Mi : L(Mi ) ! P}
per cui quando parliamo di decidibilità di una proprietà P si intende la decidibilità del linguaggio LP .
[In altre parole si pone attenzione al riconoscimento delle MT che accettano quei linguaggi.]
Il Teorema di Rice dice in sostanza che non è decidibile poter individuare un sottoinsieme proprio
dei linguaggi ricorsivamente enumerabili.
Teorema di Rice
Sia P una proprietà non banale, allora deve esistere un linguaggio L!RE che abbia la
proprietà P. Sia ML la macchina che accetta L.
La dimostrazione verrà fatta riducendo il linguaggio LH , linguaggio della macchina
universale, al linguaggio Lp .
w
M
Accetta
start
x
Accetta
Accetta
ML
M’
L’input della riduzione è la coppia (M,w), l’output è la macchina M’ tale che L(M’) = # se
M non accetta w, L(M’) = L se M accetta w.
- M’ simula M su w comportandosi perciò come la macchina Universale. Si osservi che w
non è l’input alla macchina M’.
- Se M non accetta w allora M’ non fa niente e quindi M’ non accetta nessuna stringa in
input e quindi L(M’)= #. Poiché assumiamo che # $ P ciò significa che il codice di M’ non è in LP
- Se M accetta w allora M’ comincia a simulare ML sul proprio input x per cui siccome L!P
il codice di M’ è in LP
Dato che l’algoritmo di riduzione trasforma l’istanza (M,w) in una macchina M’ che è in LP
se e solo se (M,w) è in LH , dalla indecidibilità di LH segue l’indecidibilità di LP
Alcune Conseguenze del Teorema di Rice
Nell’ambito della programmazione.
E’ indecidibile
-La decidibilità di ogni problema P (halting Problem)
- Dire se un dato programma C va in ciclo infinito su un certo ingresso o termini la sua esecuzine
[quindi l’impossibilità di definire un perfetto sistema di debugging]
- Dire se due programmi C producano lo stesso risultato in corrispondenza degli stessi dati di ingresso.
[quindi l’impossibilità di definire un programma che controlli la correttezza dei programmi, pertanto
siamo costretti ad usare le tecniche di testing per la verifica degli errori in un programma]
Nell’ambito dei linguaggi
E’ indecidibile
- Data una grammatica context-free dire se L(G) = VT*
- Date due grammatiche context-free G1 e G2 dire se L(G1) = L(G2)
- Dati due automi Pushdown dire se accettano precisamente lo stesso linguaggio.
- Il linguaggio accettato da una MT contiene la stringa aabb?
- Il linguaggio accettato da una MT contiene tutti i numeri pari?
.............. .
Perché ci sono tanti problemi indecidibili?
Abbiamo fatto l’assunto che risolvere un problema significhi verificare l’appartenenza di una
stringa ad un linguaggio.
L’insieme dei linguaggi non è enumerabile (Teorema di Cantor)
L’insieme dei programmi è enumerabile (data l’enumerabilità delle Macchine di Turing)
Se ne deduce che ci sono infinitamente meno programmi che problemi.
Il motivo per cui sembra che la maggior parte dei problemi sia decidibile è perché focalizziamo
l’attenzione su problemi semplici e strutturati.
Complessità computazionale di una MT
Data una Macchina di Turing deterministica M si definisce complessità in tempo di M la
funzione tM : N % N tale che tM (n) è il massimo numero di transizioni processate da una
computazione di M su una stringa di dimensione n.
Data una Macchina di Turing non deterministica si definisce la complessità di una
computazione tM (n) come il massimo numero di transizioni effettuate per ogni possibile scelta
di transizioni su una stringa di ingresso di lunghezza n.