4. Numeração de fuções computáveis 4.1 Numeração de programas 4.2 Numeração de fuções computáveis 4.3 O método da diagoal 4.4 O Teorema s-m- Teresa Galvão LEIC - Teoria da Computação I 4.1
4.1 Numeração de programas Defiições Um cojuto X é eumerável se existe uma bijecção f : X N. Uma eumeração de um cojuto X é uma sobrejecção g: N X ; é represetada por X = {x 0, x 1, x 2, }, ode x = g(). Se g é ijectiva, a eumeração ão tem repetições. Seja X um cojuto de objectos fiitos (por ex: cojuto de iteiros, istruções, programas). X é efectivamete eumerável se existe uma bijecção f: X N tal que f e f -1 são fuções efectivamete computáveis. Um cojuto é eumerável se e só se pode ser eumerado sem repetições Teresa Galvão LEIC - Teoria da Computação I 4.2
Teorema 4.1 Numeração de programas Os seguites cojutos são efectivamete eumeráveis: (a) N x N; (b) N + x N + x N + ; (c) U k>0 N k, o cojuto de todas as sequêcias fiitas de úmeros aturais. Notação útil: p x desiga o x-ésimo umero primo. (Por coveção, p 0 = 0, logo, p 1 = 2, p 2 = 3, etc) x y = o expoete de p y a factorizaçao em umeros primos de x, para x, y > 0 0, se x = 0 ou y = 0 ( ) Teresa Galvão LEIC - Teoria da Computação I 4.3
4.1 Numeração de programas Prova: (a) N x N é efectivamete umerável (?) Uma bijecção π π -1 π : N N N π (m,) =2 m ( 2 + 1) 1 é uma fução efectivamete computável. é efectivamete computável, pois : é defiida por: -1 π (x) = ( π 1( x), π 2( x )) π 1 ( x) = (x +1) 1 = 1 x +1 π 2 ( x) 2 π x 1 2 ( ) 1 π 1 π 2 e e são fuções computáveis. Teresa Galvão LEIC - Teoria da Computação I 4.4
4.1 Numeração de programas (b) N + x N + x N + é efectivamete eumerável (?) Uma bijecção + + + ζ : N N N N é defiida por: e ζ (m,,q) = π ( π (m -1, -1), q -1) -1 ζ (x) = ( π ( π ( x)) + 1, π ( π ( x)) + 1, π ( x) + 1) 1 1 2 2 2 π π 1 π 2 Como as fuções, e são efectivamete computáveis, também ζ e ζ 1 são computáveis. Teresa Galvão LEIC - Teoria da Computação I 4.5
4.1 Numeração de programas (c) U k>0 N k é efectivamete eumerável (?) Uma bijecção U τ : N k>0 é uma fução efectivamete computável. k N é defiida por: 1 1 2 1 2 3 1 2 k τ (a,a,...,a ) = 2 + 2 + 2 +... + 2 1 1 2 k -1 a a +a + 1 a +a + a + 2 a +a +... + a + k 1 Para calcular τ (x), sabemos que dado x, podemos efectivamete ecotrar valores úicos k > 0 e 0 b1 < b 2 <... < bk tais que: b b b x + 1 = 2 + 2 +... + 2 1 2 k Etão -1 τ (x) = (a 1,a 2,...,a k ), ode a = b 1 1 a = b b 1 (1 i< k) i+1 i+1 i Teresa Galvão LEIC - Teoria da Computação I 4.6
4.1 Numeração de programas Desigemos o cojuto de todas as istruções URM por I e o cojuto de todos os programas URM por P. Um programa cosiste uma lista fiita de istruções. Teorema I é efectivamete eumerável. Prova: Defia-se uma bijecção β : I N que, aos quatro tipos de istruções URM faz correspoder úmeros aturais das formas 4u, 4u+1, 4u+2, 4u+3: β(z()) = 4( 1) β(s()) = 4( 1) +1 β (T(m,)) = 4 π (m -1, 1) + 2 β (J(m,,q)) = 4 ζ (m,, q) + 3 Teresa Galvão LEIC - Teoria da Computação I 4.7
4.1 Numeração de programas Para calcular β 1 (x) : (i) (ii) (iii) Determiar u, r tais que x = 4 u + r, com 0 r < 4 O valor de r diz-os que tipo de istrução correspode a A partir de u, podemos calcular efectivamete a istrução particular: Se r = 0, etão -1 β (x) = Z(u +1) Se r = 1, etão Se r = 2, etão -1 β (x) = S(u + 1) -1 β (x) = T( π (u) + 1, π (u) + 1) 1 2 Se r = 3, etão β -1 (x) = J(m,,q), ode (m,,q) = ζ -1 ( u ) β e β 1 são efectivamete computáveis, logo I é efectivamete eumerável. Teresa Galvão LEIC - Teoria da Computação I 4.8
4.1 Numeração de programas Teorema P é efectivamete eumerável. Prova: Defia-se uma bijecção γ : P N. Seja P = I 1, I 2,, I s. Etão γ ( P ) = τ ( β ( I ),..., β ( I )) 1 s Como τ e β são bijecções, também é uma bijecção; Como τ, β e as suas iversas são efectivamete computáveis, também γ e são efectivamete computáveis. γ γ 1 Teresa Galvão LEIC - Teoria da Computação I 4.9
4.1 Numeração de programas Para um dado programa P, o úmero γ (P) chama-se o código de P ou úmero de Gödel de P. Defie-se P = o programa com o código γ 1 = () É fudametal que γ e sejam efectivamete computáveis, ou seja: γ 1 (a) (b) dado um programa P, podemos efectivamete calcular o seu código; dado um úmero, podemos efectivamete determiar o programa γ 1 P = (). Teresa Galvão LEIC - Teoria da Computação I 4.10
4.1 Numeração de programas Exemplos: (a) Seja P o programa Para calcular γ (P): T(1,3) S(4) Z(6) β(t(1,3)) = 4 π (0, 2) + 2 =4 (2 (2 2 +1) -1) + 2 = 18 β(s(4)) = 4 3 + 1= 13 β(z(6)) = 4 5 = 20 0 γ 18 32 53 (P) = τ (18, 13, 20) = 2 + 2 + 2 1 = 9007203549970431 Teresa Galvão LEIC - Teoria da Computação I 4.11
4.1 Numeração de programas (b) Seja = 4127. Qual é o programa P 4127? γ 1 1 ( 4127) = τ ( 4128) = ( a 1,...,ak ) 4127 = 2 5 +2 12-1 (4128 = 2 5 (129) = 2 5 (1+128) = 2 5 (1+ 2 7 ) = 2 5 +2 12 ) Etão, P 4127 é um programa com duas istruções (k=2): I 1 e I 2 a 1 = 5 e a 2 = 12-5 - 1 = 6 a 1 = β (I 1) = 5 a = β (I ) = 6 = 4 1 + 2 = 4 π (1,0) + 2 2 2 Pela defiição, I 1 = S(2) e I 2 = T(2,1). P 4127 é o programa I 1 = S(2) I 2 = T(2,1). Teresa Galvão LEIC - Teoria da Computação I 4.12
Mais cojutos eumeráveis Q = O cojuto dos úmeros racioais positivos é eumerável 1/1 1/1 3/1 4/1 5/1 1/2 2/2 3/2 4/2 5/2 1/3 2/3 3/3 4/3 5/3 1/4 2/4 3/4 4/4 5/4 D = O cojuto de todos os cojutos fiitos de úmeros iteiros positivos é eumerável {1} : o cojuto cujo úico elemeto é o úmero 1 {2} : o cojuto cujo úico elemeto é o úmero 2 {1,2,5} : o cojuto cujos elemetos são os úmeros 1, 2 e 5 Todos os elemetos de D podem ser descritos de forma fiita (até por palavras), embora o cojuto seja ifiito. Teresa Galvão LEIC - Teoria da Computação I 4.13
Cojutos ão eumeráveis O cojuto dos úmeros reais ão é eumerável Cosideremos apeas os úmeros reais etre 0 e 1. Supohamos que coseguimos estabelecer uma correspodêcia etre cada úmero atural e cada úmero real etre 0 e 1. Supohamos aida que cada úmero real pode ser expresso como uma dízima ifiita, ou seja: 0.5 = 0.4999999 Podemos etão costruir a seguite tabela: r(1).1 4 1 5 9 2 6 r(2).3 3 3 3 3 3 3 r(3).7 1 8 2 8 1 8 r(4).4 1 4 2 1 3 5 r(5).5 0 0 0 0 0 0 Os úmeros que se ecotram a diagoal serão usados para costruir um úmero que ão se ecotra a tabela. Subtraímos 1 a cada dígito do úmero da diagoal. Obtemos d = 0.02719. Dada a forma como a tabela foi costruída podemos afirmar que : 0 1º dígito de d ão é o 1º dígito de r(1); 0 2º dígito de d ão é o 2º dígito de r(2); 0 20º dígito de d ão é o 20º dígito de r(20); d ão se ecotra a tabela, logo R ão é eumerável Teresa Galvão LEIC - Teoria da Computação I 4.14
( ) f P 4.2 Numeração de fuções computáveis desiga a fução -ária computada por P. Para cada a de N e para cada > 0, defie-se: ( ) ( ) φ a = f P a { a } W ( ) = Dom ( ( ) ) = ( x,..., x ): P ( x,..., x ) a φa 1 1 E ( ) a = Ra (φa ( ) ) Quado a fução é uária, omite-se o ídice =1, ficado apeas φ a, W a, E a. Ex: P 4127 é o programa I 1 = S(2) I 2 = T(2,1) Etão φ 4127 ( x ) = 1 W4127 = N E 4127 = 1 { } φ 4127 ( x 1,..., x ) = x 2 + 1 W4127 = N E N 4127 = + Teresa Galvão LEIC - Teoria da Computação I 4.15
4.2 Numeração de fuções computáveis Seja f uma fução uária computável. Etão existe um programa P que computa f. a = γ ( P) f a Sedo o código desse programa, etão. Diz-se que a é um ídice para f. (Cada fução computável tem um úmero ifiito de ídices). Podemos cocluir que cada fução uária aparece a eumeração (com repetições): φ0, φ1, φ2, φ3,... = φ As mesmas coclusões podem ser tiradas para fuções -árias. Teresa Galvão LEIC - Teoria da Computação I 4.16
4.2 Numeração de fuções computáveis Teorema O cojuto C é eumerável. Prova: Vamos usar uma eumeração com repetições para costruir uma outra sem repetições. ( ) ( ) ( ) ( ) Seja φ, φ, φ, φ,... a eumeração com repetições. 0 1 2 3 Seja Etão f ( 0) = 0 ( ) ( ) ( ) f ( m + 1) = µ z( φz φ f ( 0),..., φ f ( m) ) ( ) ( ) ( ) ( ) f ( 0) f ( 1) f ( 2) f ( 3) φ, φ, φ, φ,... é uma eumeração de C sem repetições. Nota: Não se afirma que f é computável. Teresa Galvão LEIC - Teoria da Computação I 4.17
4.2 Numeração de fuções computáveis Teorema O cojuto C é eumerável. Prova: C = U C 1 C é a reuião eumerável de cojutos eumeráveis, logo também é eumerável. O teorema seguite mostra que existem fuções que ão são computáveis!! Teresa Galvão LEIC - Teoria da Computação I 4.18
4.3 O método da diagoal Teorema Existe uma fução uária total que ão é computável. Prova: Vamos costruir uma fução total f que é simultaeamete diferete de todas as fuções a eumeração,,,,... Defia-se φ φ φ φ 0 1 2 3 φ( ) + 1, se φ( ) esta defiida f ( ) = 0, se φ( ) ao esta defiida Note-se que f foi costruída por forma que f é diferete de para cada : - Se φ está defiida, f ( ) = φ ( ) + 1 φ ( ) - Se φ ão está defiida: f ( ) = 0 φ ( ) Como f é diferete de todas as fuções computáveis, f ão é computável. Teresa Galvão LEIC - Teoria da Computação I 4.19 φ
4.3 O método da diagoal Vejamos como a fução aterior foi costruída: Costruímos a seguite tabela: f ( ) = φ( ) + 1, se φ( ) esta defiida 0, se φ( ) ao esta defiida 0 1 2 3... φ 0 φ 0 ( 0) φ 0 ( 1) φ 0 ( 2) φ 0 ( 3)... φ 1 φ 2 φ 1 ( 0) φ 2 ( 0) φ 1 ( 1) φ 2 ( 1) φ 1 ( 2) φ 2 ( 2) φ 1 ( 3) φ 2 ( 3)...... Tomamos os elemetos da diagoal e alteramo-los sucessivamete, costruido f(). φ 3 φ 3 ( 0) φ 3 ( 1) φ 3 ( 2) φ 3 ( 3)..................... Nota: existe uma grade liberdade a escolha dos f(); apeas temos de assegurar que f ( ) φ ( ) para cada. Por exemplo: φ g( ) = ( ) + 27, se φ ( ) esta defiida 2 é outra fução ão computável, se φ ( ) ao esta defiida Teresa Galvão LEIC - Teoria da Computação I 4.20
4.3 O método da diagoal Podemos geeralizar o método da diagoal da seguite forma: Seja χ0, χ1, χ2,... uma eumeração de objectos de um certo tipo (fuções ou cojutos de úmeros aturais) Podemos costruir um objecto χ do mesmo tipo, mas diferete de todos os χ Fazer χ e χ diferetes em Teresa Galvão LEIC - Teoria da Computação I 4.21
4.3 O método da diagoal Exemplos: (a) Seja f(x,y) uma fução total computável. Para cada m, seja g m a fução computável dada por g m (y) = f(m,y) Costrua uma fução total computável h tal que, para cada m: h g m g m (m) = f(m,m) Seja h(m) = f(m,m)+1 h é computável (pois f é computável) e total (b) Seja f 0, f 1, f 2, uma eumeração de fuções parciais de N em N. Costrua uma fução g: N -> N tal que, para cada i: Dom (g) Dom (f i ) g (i) = 1 idefiida,se f (i) ao esta defiida i,se f (i) esta defiida i ou seja, i Dom(g) sse i Dom (f i ) Teresa Galvão LEIC - Teoria da Computação I 4.22
4.4 O Teorema s-m- Seja f (x,y) uma fução computável (ão ecessariamete total). Etão, f tem um ídice, a, tal que φ a ( 2 ) = Para cada b, defia-se g (y) = f (b,y) b Por substituição, cada g b f é computável, logo tem um ídice. Este ídice depede de a e de b, logo, defia-se a fução biária k, ode k(a,b) é um ídice para a fução g b. Logo, φ k ( a, b ) ( y) = g b ( y) Mostraremos que k é uma fução computável. Sabemos que a fução f é computada por P a. Cosidere-se: T(1,2) Z(1) S(1) S(1) P a b vezes Este programa computa g b Teresa Galvão LEIC - Teoria da Computação I 4.23
4.4 O Teorema s-m- A fução k(a,b) dá-os o ídice deste programa. Para mostrar que k é computável usaremos a Tese de Church, argumetado que o algoritmo: 1. Determiar qual o programa que correspode ao código a, obtedo-se P a 2. Costruir o programa para computar g b (depede apeas de b) 3. Codificar esse programa, obtedo-se k(a,b). é efectivamete computável, logo k é computável. Notas: k é primitiva recursiva. Sem o recurso à Tese de Church, esta demostração seria loga e tediosa, mas é óbvio que fucioaria. Podemos agora costruir fuções que computam ídices de fuções. Teresa Galvão LEIC - Teoria da Computação I 4.24
4.4 O Teorema s-m- Exemplo: Seja f ( x, y) = y x Esta fução é computável, logo seja a um ídice para f : φ a ( 2 ) = f Para cada, defia-se g (y) = f (,y) = Seja k(a,) o ídice de g Etão φ k a y = g y = y Seja p() = k(a,). (, ) ( ) ( ) y p é a fução que, para cada calcula um ídice da fução -ésima potêcia. Teresa Galvão LEIC - Teoria da Computação I 4.25
Teorema s-m- 4.4 O Teorema s-m- Para cada m, > 0, existe uma fução (m+1)-ária total e computável s m (e, x) ( e m + ) tal que φ ( x, y) = φ m s Prova: (semelhate ao caso m==1) ( ) ( e, x) ( y) Desige-se por Q(i,x) o programa URM: Z(i) S(i) S(i) x vezes Defia-se s m (e, x) como o código do programa: T(,m+) T(1,m+1) Esta fução é computável, pela Tese de Church Q(1,x 1 ) Q(m,x m ) P e Teresa Galvão LEIC - Teoria da Computação I 4.26