Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Gianluca Gippetto
1
Slide basate sul testo: Davis,Sigal,Weyuker Computability, Complexity and
Languages
G.Gippetto (Studente Unipa)
Codifica di programmi
A.A. 2010-11
1 / 26
Indice
Metodi di codifica
Funzione coppia
Numeri di Gdel
Codifica di programmi
Codifica di unistruzione
Codifica di un programma
Codifica di programmi
A.A. 2010-11
2 / 26
La funzione coppia
In matematica, una funzione coppia una funzione biunivoca del tipo
N2 N, ossia una funzione che codifica coppie di numeri naturali in un
singolo numero naturale. Noi utilizzeremo la seguente:
Definizione
Chiameremo funzione coppia la seguente
hx, yi = 2x (2y + 1) 1
Affinch la funzione coppia sia effettivamente un buon metodo di codifica,
lequazione
hx, yi = z
deve ammettere ununica soluzione. Proviamo che cos.
Codifica di programmi
A.A. 2010-11
3 / 26
Dalla equazione
2x (2y + 1) 1 = z
otteniamo la seguente
z+1
2x
Dovendo essere il II membro un numero naturale dispari, si deduce che x
necessariamente il massimo naturale tale che 2x |z + 1. Dal momento che x
univocamente determinato, lo anche y.
2y + 1 =
Codifica di programmi
A.A. 2010-11
4 / 26
r(z) = y
(r da right, destra)
Codifica di programmi
A.A. 2010-11
5 / 26
Esempio di decodifica
36
=9
4
y=4
Riassumendo:
h2, 4i = 35
Codifica di programmi
A.A. 2010-11
6 / 26
Riepilogo
l(hx, yi) = x
r(hx, yi) = y
hl(z), r(z)i = z
l(z), r(z) z
Codifica di programmi
A.A. 2010-11
7 / 26
Numeri di Gdel
Definizione
Chiamiamo numero di Gdel della n-upla (a1 , . . . , an ) il numero
[a1 , . . . , an ] =
n
Y
pai i
i=1
Codifica di programmi
A.A. 2010-11
8 / 26
(a1 , . . . , an ) = (b1 , . . . , bn )
Codifica di programmi
A.A. 2010-11
9 / 26
Codifica di programmi
A.A. 2010-11
10 / 26
Codifica di programmi
A.A. 2010-11
11 / 26
Affinch pi sia ricorsiva primitiva, deve essere una funzione totale, quindi
definita anche per i = 0: porremo p0 = 0.
La definizione sar una cosa di questo tipo:
(
p0 = 0
pn+1 = mintH Primo(t) t > pn
Il problema quello di fissare, per ogni n, un H sicuramente maggiore o
uguale di pn+1 .
Codifica di programmi
A.A. 2010-11
12 / 26
Qn non divisibile per nessuno dei primi n numeri primi; infatti, per
1 i n si ha:
p1 . . . pn + 1
1
Qn
=
= p1 . . . pi1 pi+1 . . . pn +
pi
pi
pi
Codifica di programmi
A.A. 2010-11
13 / 26
Codifica di programmi
A.A. 2010-11
14 / 26
Codifica di programmi
A.A. 2010-11
15 / 26
Codifica di programmi
A.A. 2010-11
16 / 26
Codifica di programmi
Codifica di programmi
A.A. 2010-11
17 / 26
La variabile coinvolta
Leventuale etichetta
Codifica di programmi
A.A. 2010-11
18 / 26
#(X2 ) = 4,
#(Z1 ) = 3
#(C1 ) = 3,
#(A2 ) = 6
Codifica di programmi
A.A. 2010-11
19 / 26
Codifica di unistruzione
Sia I unistruzione. Definiamo:
#(I) = ha, hb, cii
dove:
1
V
V +1
V 1
V 6= 0 goto A
Codifica di programmi
Valore di b
0
1
2
#(A) + 2
A.A. 2010-11
20 / 26
Decodifica di unistruzione
Teorema
Per ogni numero dato q, vi ununica istruzione I tale che #(I) = q.
I tre a, b, c tali che ha, hb, cii = q sono infatti univocamente determinati:
a = l(q),
b = l(r(q)),
c = r(r(q))
Codifica di programmi
A.A. 2010-11
21 / 26
Codifica di un programma
Codifica di programmi
A.A. 2010-11
22 / 26
Codifica di programmi
A.A. 2010-11
23 / 26
Codifica di programmi
A.A. 2010-11
24 / 26
Concludiamo che:
#(P ) = [#(I1 ), #(I2 )] 1
= [21, 46] 1
= 221 346 1
= 18 586 928 403 505 481 978 329 694 207
Codifica di programmi
A.A. 2010-11
25 / 26
Codifica di programmi
A.A. 2010-11
26 / 26