Capitolo 7: Teoria generale della calcolabilit´acovino/teaching/fond_07/cap7.pdf · onda, che...

36
Capitolo 7: Teoria generale della calcolabilit´ a 1

Transcript of Capitolo 7: Teoria generale della calcolabilit´acovino/teaching/fond_07/cap7.pdf · onda, che...

Capitolo 7:

Teoria generale della calcolabilita

1

Differenti nozioni di calcolabilita (che seguono da differenti mod-

elli di calcolo) portano a definire la stessa classe di funzioni.

Le tecniche di simulazione fra modelli introducono i concetti di

configurazione, calcolo e codifica. Possiamo formulare una teoria

astratta della calcolabilita, indipendente dal modello di calcolo

adottato??

Tesi di Church-Turing: ogni funzione calcolabile rispetto ad

una qualunque nozione di algoritmo (Turing, Kleene, λ-calcolo,

Markov, Post) e calcolabile secondo Turing.

2

Quindi si congettura che la classe delle funzioni ricorsive sia la

classe di funzioni piu generale per la quale si possa dare un

metodo di calcolo algoritmico.

Se si accetta tale tesi, si possono utilizzare descrizioni informali di

algoritmi per dimostrare la calcolabilita di funzioni senza esibire

una macchina che le calcola.

3

Una enumerazione delle macchine a registri elementari

Abbiamo visto che ogni funzione calcolata tramite una macchina

a registri elementare e ricorsiva (associando numeri naturali agli

stati della macchina e alle sequenze di stati).

Mostriamo che anche i programmi per macchine a registri el-

ementari possono essere codificati (cioe esiste una aritmetiz-

zazione o godelizzazione). Ricordiamo che ogni programma el-

ementare e formato da un numero finito di istruzioni del tipo:

Ri = Ri+ 1 i ≥ 1, n ≥ 0Ri = Ri

.− 1

IF Ri = 0 GOTO 0

4

Per codificare una istruzione abbiamo bisogno:

Xdel suo posto nella sequenza di istruzioni,

Xdel suo tipo,

Xdei numeri i ed n che essa contiene.

Un modo per codificare queste informazioni e il seguente:

Ri = Ri+ 1 −→ 3 · (i.− 1) + 1

Ri = Ri.− 1 −→ 3 · (i

.− 1) + 2

IF Ri = 0 GOTO n −→ 3 · J(i.− 1, n)

dove J : N× N 7−→ N+ e la biiezione

J(x, y) =(x+ y+ 1)(x+ y)

2+ x+ 1

5

Il codice dell’istruzione m-esima e usato come esponente per il

numero primo pm (p1 = 2); se il programma ha k istruzioni il suo

codice sara 2y1 . . . pykk , oppure 〈y1, . . . , yk〉, dove y1, . . . , yk sono i

codici delle istruzioni.

Esempio 1 Codifichiamo il seguente programma:

IF R2 = 0 GOTO 0 → 3 · J(1,0) = 9R2 = R2

.− 1 → 3 · 1 + 2 = 5

R1 = R1 + 1 → 3 · 0 + 1 = 1IF R3 = 0 GOTO 1 → 3 · J(2,1) = 27

e quindi il codice e 29 · 35 · 51 · 727, oppure 〈9,5,1,27〉 .

6

La codifica e la decodifica sono entrambe funzioni biiettive (perche?);ad ogni intero

x = 2y1 . . . pymm dove yi

≥ 0 se 1 ≤ i ≤ m,

> 0 se i = m

corrisponde un programma di m istruzioni, in cui la j-esimaistruzione e ottenuta dividendo yi per 3 ed individuando restoe quoziente.

Esempio 2 Al numero 600 corrisponde il programma:

IF R1 = 0 GOTO 0R1 = R1 + 1R1 = R1

.− 1

quale funzione calcola questo programma?

7

Importante: la codifica di un programma produce interi x =

2y1, . . . , pykk , con y1, . . . , yk > 0. Invece, la decodifica di un numero

naturale puo produrre situazioni in cui all’istruzione j-esima cor-

risponde yj = 0.

Per evitare questo problema, introduciamo l’istruzione NOPE

(con codice 0) che non fa nulla.

Esercizio: quale programma e rappresentato dal numero 29 ·55 ·7 · 1127??

Esercizio: Definire una macchina a registri (non elementare)

che dati in input due naturali x e y, determini l’output che una

macchina a registri elementare con codifica x ha per input y.

8

Una enumerazione delle macchine di Turing

Realizziamo una corrispondenza biunivoca fra macchine di Turing

e numeri naturali. Sia data una macchina M = 〈Γ, 6 b,Q, q0, F, δ〉,la cui funzione di transizione e

δ : (Q− F )× (Γ ∪ {6 b}) 7−→ Q× (Γ ∪ {6 b})× {d, s, i}.

Ogni coppia (q, a) per cui la δ non e definita e codificata come

(q, a,⊥,⊥,⊥). Elenchiamo in ordine lessicografico le quintuple

che costituiscono la funzione di transizione, introducendo un or-

dinamento arbitrario sugli insiemi Q∪ {⊥}, Γ∪ {6 b,⊥}, {d, s, i,⊥}.

Questo ordinamento induce un ordinamento fra le quintuple e,

di conseguenza, sulle sequenze di quintuple e sulle codifiche di

macchine di Turing.

9

Enumerazione delle funzioni ricorsive

I metodi definiti determinano una corrispondenza naturali e mac-chine (di Turing o a registri), ma anche fra funzioni ricorsive enumeri naturali.

Sia E : N 7−→ {M} una biiezione fra i naturali e le descrizionidi macchine di Turing, tale che E(x) = Mx, la (x + 1)-esimamacchina dell’enumerazione. Data una codifica C dei naturali suun opportuno alfabeto (quello di nastro della macchina), defini-amo

ϕx(y) =

z ∈ N se la macchina Mx, inizializzata nella

configurazione iniziale q0C(y),si arresta nella configurazione finale C(y) 6 bqFC(z)

indefinita altrimenti.

10

Si ottiene una enumerazione delle funzioni ricorsive ad un argo-

mento (domanda: quale posto occupa la funzione ϕx in questa

enumerazione? la corrispondenza fra naturali e funzioni ricorsive

a un posto e una biiezione?)

Si puo estendere l’enumerazione a funzioni a piu argomenti at-

traverso una opportuna codifica (definirne una).

Il valore x associato alla funzione ϕx si dice indice della funzione

(calcolata dalla macchina Mx).

Dato che x e il numero naturale che codifica la macchina Mx,

esso e anche chiamato il programma che calcola la funzione ϕx.

11

Proprieta di enumerazioni di funzioni ricorsive

L’enumerazione ci consente di formulare i risultiti della teoria

della ricorsivita in modo indipendente dalla macchina.

Tutta l’informazione relativa ad una particolare classe di mac-

chine o programmi e contenuta negli indici delle funzioni, e da

origine ad una enumerazione (magari diversa dalle precedenti)

che gode sempre delle stesse proprieta generali.

Una dimostrazione fornita assumendo una enumerazione per un

certo modello di calcolo diventa valida per tutte le enumerazioni

associate ad altri modelli di calcolo.

12

Teorema 3 (esistenza della funzione universale) Sia data una

qualsiasi enumerazione delle funzioni ricorsive. Per ogni k ∈ Nesiste z tale che, per ogni x1, . . . , xk:

ϕz(x1, . . . , xk, y) =

ϕy(x1, . . . , xk) se essa e definita,

indefinita altrimenti.

Teorema 4 (s-m-n) Sia data una qualsiasi enumerazione delle

funzioni ricorsive. Per ogni m,n ≥ 1 esiste una funzione ricorsiva

s tale che, per ogni x, y1, . . . , ym, z1, . . . , zn:

ϕx(y1, . . . , ym, z1, . . . , zn) = ϕs(x,y1,...,ym)(z1, . . . , zn)

13

Teorema 5 (forma normale di Kleene) Sia data una qualsiasi

enumerazione delle funzioni ricorsive. Esistono una funzione ri-

corsiva U e un insieme di funzioni ricorsive Tk tali che, per ogni

k ∈ N, tutte le funzioni ricorsive di k argomenti sono esprimibili

come segue:

ϕi(x1, . . . , xk) = U(µt[Tk(i, x1, . . . , xk, t) = 0]).

Il teorema mostra che una funzione ricorsiva e calcolabile at-

traverso il calcolo di due funzioni: la prima (il predicato di

Kleene) verifica che esista una computazione ammissibile; la sec-

onda, che spacchetta il codice della computazione per restituire

il risultato.

14

Funzioni non calcolabili

Abbiamo gia introdotto i concetti di funzione calcolabile, non

calcolabile, di insieme decidibile e semidecidibile.

Possiamo riformulare quanto visto in modo indipendente dal

modello di calcolo, avendo introdotto il concetto di enumer-

azione di funzioni ricorsive.

Teorema 6 Sia data una qualsiasi enumerazione delle funzioni

ricorsive. Non esiste alcuna funzione ricorsiva g tale che per ogni

x e y:

g(x, y) =

1 se ϕx(y) e definita,

0 altrimenti.

15

Teorema 7 Non esiste alcuna funzione ricorsiva g′ tale che per

ogni x:

g′(x) =

1 se ϕx(x) e definita,

0 altrimenti.

Corollario 8 Sia data una qualsiasi enumerazione delle funzioni

ricorsive. Gli insiemi

K = {x|ϕx(x)e definita} e K′ = {〈x, y〉|ϕx(y)e definita}

non sono decidibili.

16

Teorema 9 Sia data una qualsiasi enumerazione delle funzioni

ricorsive. Non esiste una funzione ricorsiva g tale che per ogni x:

g(x) =

1 se ϕx(0) e definita,

0 altrimenti.

Xdecidere se un generico programma si arresta su un generico

input

Xdecidere se un generico programma si arresta avendo come in-

put il proprio codice

Xdecidere se un generico programma si arresta con input prefis-

sato

sono problemi con la stessa difficolta.

17

Applicando le tecniche precedenti, si provano i seguenti risultati:

Teorema 10 Sia data una qualsiasi enumerazione delle funzioni

ricorsive. Non esiste una funzione ricorsiva g tale che per ogni x:

g(x) =

1 se ϕx(0) e costante,

0 altrimenti.

Teorema 11 Sia data una qualsiasi enumerazione delle funzioni

ricorsive. Non esiste una funzione ricorsiva g tale che per ogni

x, y, z:

g(x, y, z) =

1 se ϕx(y) = z,

0 altrimenti.

18

Teorema 12 Sia data una qualsiasi enumerazione delle funzioni

ricorsive. Non esiste una funzione ricorsiva g tale che per ogni

x, y:

g(x, y) =

1 se ϕx = ϕy e definita,

0 altrimenti.

Dimostreremo che ogni proprieta non banale e indecidibile.

Tutte le dimostrazioni precedenti si riconducono alla indecidibilita

del problema della terminazione. Un metodo alternativo con-

siste nell’utilizzare la diagonalizzazione (rifare le dimostrazioni

con questo metodo).

19

Indecidibilita in matematica e informatica

Esistono numerosi problemi indecidibili in diversi settori della

matematica e dell’informatica. Ad esempio, nella teoria dei lin-

guaggi formali:

Xdate due grammatiche context-free G1 e G2, L(G1) = L(G2)?

Xdate due grammatiche context-free G1 e G2, L(G1)∩L(G2) = ∅?

Xdata una grammatica contenstuale G, L(G) e vuoto?

20

Nell’ambito della teoria della programmazione (riferendoci ad un

linguaggio specifico, e non ad un modello di calcolo generico):

Xun programma che contiene una dichiarazione di proceduram

chiamera la procedura stessa?

Xuna variabile di programma assumera un particolare valore du-

rante l’esecuzione del programma?

Xun programma, in presenza di un particolare input, fornisce un

determinato output?

Xdue programmi calcolano la stessa funzione?

21

Xun programma calcola una funzione costante?

Xun programma calcola una funzione totale?

Nel campo della matematica:

Xdata una formula del calcolo dei prodicati, tale formula e un

teorema?

Xdata una formula dell’aritmetica, tale formula e un teorema

della teoria?

22

Esistono casi in cui una funzione e calcolabile, ma non siamo in

grado di conoscere il programma che la calcola. Ad esempio:

g(x) =

1 se nell’espansione di π esistono

almeno x 5 consecutivi,

0 altrimenti

e sicuramente calcolabile, ma non sappiamo quale sia l’algoritmo

corretto per calcolarla.

23

Teoremi di Kleene e Rice

Teorema 13 (ricorsione o di Kleene) Sia data una enumerazione

delle funzioni ricorsive. Se t e una funzione calcolabile totale,

allora esiste e ∈ N tale che:

ϕe = ϕt(e).

Il teorema si dice anche del punto fisso. Dato un insieme S e

una funzione τ : S 7−→ S, si dice punto fisso di τ il valore s ∈ S

tale che τ(s) = s.

Corollario 14 Sia data una enumerazione delle funzioni ricor-

sive. Esiste un indice i tale che, per ogni x ∈ N si ha ϕi(x) = i.

24

Teorema 15 (Rice) Sia data una enumerazione delle funzioni

ricorsive e sia F un insieme di funzioni calcolabili. L’insieme

S = {x|ϕx ∈ F} e decidibile sse F = ∅ oppure F coincide con

l’intera classe delle funzioni calcolabili.

Il teorema sancisce quanto promesso: ogni proprieta non banale

delle funzioni calcolabili e indecidibile; I teoremi precedenti sono

applicazioni del teorema di Rice.

Una conseguenza importante nella teoria della programmazione

e che e impossibile provare proprieta delle funzioni calcolate dai

programmi (costanza, crescenza, correttezza).

25

Insiemi decidibili e semidecidibili

Abbiamo gia introdotto i concetti di insieme decidibile e semide-

cidibile, con riferimento alla T-calcolabilita. Possiamo riformu-

lare quanto visto astraendo dal modello di calcolo.

Definizione 16 Un insieme A ⊆ N e detto ricorsivo se la sua

funzione caratteristica CA:

CA(x) =

1 se x ∈ A,0 altrimenti

e ricorsiva totale.

26

Definizione 17 Un insieme A ⊆ N e detto ricorsivamente enu-

merabile (r.e.) se A = ∅ o se esiste una funzione ricorsiva totale

f : N 7−→ N tale che A = imm(f). In tal caso diciamo che la

funzione f enumera l’insieme A.

Dimostreremo che

la classe degli insiemi ricorsivi (risp., ricorsivamente enumerabili)

coincide con

la classe degli insiemi decidibili (semidecidibili).

27

Esempio 18 Xl’insieme dei numeri pari e ricorsivo?

Xl’insieme dei numeri primi e ricorsivo o r.e.?

Xl’insieme {〈y, t〉|ϕy(y)si arresta in meno di t passi } e ricorsivo?

Xl’insieme K = {y|ϕy(y)e definita} e ricorsivo?

Xl’insieme Z = {〈x, y, z〉|ϕx(y) = z} e ricorsivo?

Xl’insieme T = {x|ϕxe totale} e ricorsivo?

28

Forniamo tre proprieta sugli insiemi ricorsivi:

Teorema 19 Un insieme S ⊆ N e ricorsivo sse e decidibile.

Teorema 20 Se un insieme A e ricorsivo allora l’insieme com-

plemento A = N−A e ricorsivo.

Teorema 21 Se insiemi A e B sono ricorsivi allora gli insiemi

A ∩B e A ∪B sono ricorsivi.

29

Teorema 22 Sia dato un insieme S ⊆ N; sono equivalenti:1. S e ricorsivamente enumerabile;2. S e semidecidibile;3. S e il dominio di una funzione gS parziale calcolabile;4. S e l’immagine di una funzione hS parziale calcolabile.

Conseguenza di questo risultato:(i) gli insiemi ricorsivi sono decidibili, e(ii) la classe degli insiemi decidibili ⊂ quella dei semidecidibiliallora ogni insieme ricorsivo e anche r.e., ed esistono insiemi r.e.,ma non ricorsivi.

Esempio 23 L’insieme K = {x|ϕx(x)e definita} non e ricorsivo,ma e r.e. Infatti K = dom(ψ), dove:

ψ(x) =

1 se ϕx(x) e definita,

indefinita altrimenti.

30

Teorema 24 L’insieme T = {x|ϕxe totale} non e ricorsivamente

enumerabile

Teorema 25 Se insiemi A e B sono ricorsivamente enumerabili

allora gli insiemi A ∩B e A ∪B sono ricorsivamente enumerabili.

Teorema 26 Se un insieme A e ricorsivamente enumerabile e se

l’insieme complemento A = N−A e ricorsivamente enumerabile,

allora A e ricorsivo.

Come conseguenza di questo teorema, se un insieme e r.e., ma

non ricorsivo, allora il suo complemento non e r.e.

Questo significa che il complemento di un insieme r.e., ma non

ricorsivo, ha delle proprieta di indecidibilita maggiori dell’insieme

stesso.31

Esempio 27 L’insieme K = {y|ϕy(y) non e definita} non e r.e.

Infatti K e semidecidibile, e quindi r.e.; ma K non e ricorsivo, e

quindi K non puo essere r.e.

Per verificare se ”x appartiene a K” dobbiamo verificare se esiste

y tale che ϕx(x) si arresta in meno di y passi.

Per verificare se ”x appartiene a K” dobbiamo verificare se

per ogni y,ϕx(x) richiede piu di y passi.

XI predicati ”ϕx(x) richiede meno di y passi” e ”ϕx(x) richiede

piu di y passi” sono entrambi decidibili.

XIl predicato ”esiste y tale che ϕx(x) richiede meno di y passi”

e ricorsivamente enumerabile.

XIl predicato ”per ogni y ϕx(x) richiede piu di y passi” non e r.e.

32

Il fenomeno vale in generale:

Teorema 28 Sia A ⊆ N non vuoto. A e ricorsivamente enumer-

abile sse esiste un insieme ricorsivo B ⊆ N2 tale che x ∈ A sse

∃y[(x, y) ∈ B].

Teorema 29 Sia A ⊆ N. A e il complemento di un insieme

ricorsivamente enumerabile sse esiste un insieme ricorsivo B ⊆ N2

tale che x ∈ A sse ∀y[(x, y) ∈ B].

Gli ultimi due risultati possono essere estesi al caso in cui siano

usati piu quantificatori esistenziali ed universali alternati.

33

Definizione 30 Per ogni insieme A ⊆ N, A ∈ Σk se esiste un

predicato ricorsivo P (x, y1, . . . , yk) tale che

x ∈ A sse ∃y1∀y2 . . . QykP (x, y1, . . . , yk),

dove Q = ∃ per k dispari, Q = ∀ per k pari.

Definizione 31 Per ogni insieme A ⊆ N, A ∈ Πk se esiste un

predicato ricorsivo P (x, y1, . . . , yk) tale che

x ∈ Asse∀y1∃y2 . . . QykP (x, y1, . . . , yk),

dove Q = ∀ per k dispari, Q = ∃ per k pari.

34

Definizione 32 Per ogni insieme A ⊆ N, A ∈ ∆k se A ∈ Σk e

A ∈ Πk.

Dalle definizioni deriva che A ∈ Σn se e solo se A ∈ Πn.

L’insieme delle classi Σk e Πk si chiama gerarchia di Kleene o

aritmetica.

Σ0 e Π0 coincidono con la classe degli insiemi ricorsivi;

Σ1 coincide con la classe degli insiemi r.e.;

Π1 con la classe degli insiemi complemento di insiemi r.e.

35

Due proprieta fondamentali:

(i) ∀i[Σi ( Σi+1] e ∀i[Πi ( Πi+1];

(ii) ∀i[Σi ∪Πi ⊂ Σi+1 ∩Πi+1].

La gerarchia aritmetica e utilizzata per esprimere il livello di inde-

cidibilita di un insieme; ad esempio, l’insieme T = {x|ϕx e totale }coincide con l’insieme {x|∀y∃k[ϕx(y) richiede meno di k passi]};quindi T appartiene a Π2.

36