• No se han encontrado resultados

Apellidos... Nombre... GRUPO...

N/A
N/A
Protected

Academic year: 2022

Share "Apellidos... Nombre... GRUPO..."

Copied!
6
0
0

Texto completo

(1)

TCO. 2

o

Parcial -Grupos 1, 2 y 4-

(2o de Ingenier´ıa Inform´atica) (23–enero–2009)

Apellidos... Nombre... GRUPO...

UTIL´ICESE S ´ OLO ESTE FOLIO PARA LAS CUESTIONES

Hoja -1- Cuestiones. [3 puntos.]- Decidir la veracidad o falsedad de los siguientes enunciados justificando, en cada caso, la respuesta.

(a) El dominio de una funci´on f GOT O–computable es GOT O−computable.

(b) Dos funciones GOT O–computables con distinta aridad pueden tener un ´ındice com´un.

(c) Si A ⊆ B y B es un conjunto recursivamente enumerable, entonces A es tambi´en un conjunto recur- sivamente enumerable.

(d) Sea e el c´odigo de un cierto programa P ∈ GOT O. Si di(x, e, 126) = di(x, e, 385) entonces [[P ]](1)(x) ↑.

(e) Si ∃t(θ(~x, t)) es un predicado parcialmente decidible, entonces θ(~x, t) es, por el teorema de la proyec- ci´on, un predicado GOT O–computable.

(f) Si m + 1 y n + 1 son dos n´umeros naturales con el mismo n´umero de factores primos, entonces los programas de c´odigo m y n tienen la misma longitud.

(g) Si el rango de una funci´on f es un conjunto recursivamente enumerable, entonces la funci´on f es, por el teorema del rango, una funci´on GOT O–computable

(h) Si el grafo, G(f ), de una funci´on f es GOT O−computable entonces dicha funci´on es GOT O−computable y total.

(i) Si ϕ(1)e = ϕ(1)e0 para los n´umeros e 6= e0, entonces ϕ(2)e = ϕ(2)e0 .

(j) Si el c´odigo de una instrucci´on es y, entonces el c´odigo de la variable de dicha instrucci´on es r(r(y))).

Soluci´on

(a) Falso. Por ejemplo, el conjunto de la parada K = {x : ϕx(x) ↓} no es un conjunto GOT O−computable pero s´ı es el dominio de una funci´on GOT O−computable, precisamente de su funci´on caracter´ıstica parcial CK.

CK(x) =

 1 si x ∈ K

↑ e.o.c.

Como K es recursivamente enumerable, CK es GOT O−computable y adem´as K = dom(CK)

(b) Verdadero. Un programa GOT O P , de c´odigo e = #(P ), calcula una funci´on para cada aridad, todas ellas con el mismo ´ındice. Es decir, dados n, k, n 6= k resulta queJP K

(n)= ϕ(n)e yJP K

(k)= ϕ(k)e

(c) Falso. Sea B = N y A = TOT = {e ∈ N : ∀x(ϕe(x) ↓)}. Obviamente, A ⊆ B, B es un con- junto GOT O−computable y por tanto, recursivamente enumerable pero sin embargo, A no es ni GOT O−computable ni recursivamente enumerable.

(d) Falso. El programa P con entrada x podr´ıa parar en un n´umero de pasos menor o igual a 126.

Recordemos la definici´on de la funci´on di(1)

di(1)(x, e, k) =

#(sj+1) si el programa de c´odigo e para en j ≤ k

pasos de la computaci´on del mismo sobre el dato x

#(sk+1) e.o.c.

Si P con entrada x para en exactamente j pasos y j ≤ 126, tendr´ıamos di(1)(x, e, 126) = #(sj+1) y di(1)(x, e, 385) = #(sj+1)

(e) Falso. θ(~x, t) podr´ıa ser un predicado parcialmente decidible pero no GOT O−computable y el pred- icado ∃t(θ(~x, t)) seguir´ıa siendo parcialmente decidible por el lema de la contracci´on. Como contrae- jemplo, podemos tomar el predicado ∃t(θ(x, t)) = ∃t(HALT(t, x)) = ∃t(ϕx(t) ↓). Dicho predicado es parcialmente decidible, puesto que la funci´on GOT O−computable f (x) = µz(ST EP (l(z), x, r(z))) tiene como dominio el conjunto recursivamente enumerable

dom(f ) = {x ∈ N : ∃z(l(z) = t ∧ r(z) = k ∧ ST EP (t, x, k))} =

= {x ∈ N : ∃t∃k(ST EP (t, x, k))} = {x ∈ N : ∃t(ϕx(t) ↓)}

Sin embargo, θ(x, t) = HALT(t, x) no es GOT O−computable.

(2)

(f) Falso. Si los factores primos de n + 1 y m + 1 son distintos, la longitud de los programas P y Q ser´a distinta. Por ejemplo, m = #(P ) = [#(I1), #(I2)] − 1 y n = #(Q) = [#(I1), 0, #(I2)] − 1. m + 1 y n + 1 tienen el mismo n´umero de factores primos (dos) pero |P | = 2 y |Q| = 3.

(g) Falso. El teorema del rango afirma que si una funci´on es GOT O−computable, su rango es re- cursivamente enumerable, pero el rec´ıproco no tiene por qu´e ser cierto. Si lo fuese, el predicado HALT(x, e) ⇐⇒ ϕe(x) ↓ ser´ıa GOT O−computable, puesto que su rango es finito y por tanto recur- sivamente enumerable.

(h) Falso. Tomemos una funci´on GOT O−computable y no total cuyo grafo sea GOT O−computable, por ejemplo,

f (x) =

 1 si x = 0

↑ si x 6= 0

G(f ) = {(x, y) ∈ N2: f (x) ↓ ∧ y = f (x)} = {(0, 1)} es un conjunto finito y por tanto GOT O−computable.

(i) Falso. Como contraejemplo, consideremos los dos programas GOT O con macros siguientes:

P {Y ←− X1+ X2 Q {Y ←− X1−X˙ 2 Sean e = #(P ) y e0 = #(Q). Obviamente, e 6= e0 y ϕ(1)e (x) =JP K

(1)(x) = ϕ(1)e0 (x) =JQK

(1)(x) = x, pero ϕ(2)e (x, y) =JP K

(2)(x, y) = x + y 6= ϕ(2)e0 (x, y) =JQK

(2)(x, y) = x ˙−y

(j) Falso. El c´odigo de una instrucci´on I es #(I) = ha, hb, cii, donde c = #(V )−1. Por tanto, si y = #(I), el c´odigo de la variable de I es r(r(y)) + 1.

(3)

TCO. 2

o

Parcial -Grupos 1, 2 y 4-

(2o de Ingenier´ıa Inform´atica) (23–enero–2009)

Apellidos... Nombre... GRUPO...

Hoja -2- Ejercicio 1.– [2 puntos] Consideremos el programa universal U2(x, y, e) y la funci´on descripci´on ins- tant´anea, di(x, y, e, t), siendo e + 1 = 2105· 32· 5110.

1. Calcular [[U2]](4, 5, e).

2. Calcular (r(di(4, 5, e, 3)))4.

Soluci´on

1. CalcularJU2K(4, 5, e).

Sea P el programa GOT O de c´odigo e. EntoncesJU2K(4, 5, e) = JP K

(2)(4, 5). En primer lugar tenemos que decodificar las instrucciones de P .

#(P ) = e = [#(I1), . . . , #(In)] − 1 ⇒ [#(I1), . . . , #(In)] = e + 1 = 2105· 32· 5110

#(I1) = 105

#(I2) = 2

#(I3) = 110

#(I1) = ha, hb, cii = 2a(2hb, ci+1) ˙−1 = 105 ⇒ 2a(2hb, ci+1) = 106 = 2·53 ⇒

 a = 1 ⇒ [A1] hb, ci = 26 hb, ci = 2b(2c + 1) ˙−1 = 26 ⇒

 b = 0 ⇒ SKIP

c = 13 ⇒ #(V ) = 14 ⇒ V = X7

Por tanto, I1: [A1] X7 ←− X7

#(I2) = ha, hb, cii = 2a(2hb, ci + 1) ˙−1 = 2 ⇒ 2a(2hb, ci + 1) = 3 ⇒

 a = 0 ⇒ sin etiqueta hb, ci = 1

hb, ci = 2b(2c + 1) ˙−1 = 1 ⇒

 b = 1 ⇒ IN C

c = 0 ⇒ #(V ) = 1 ⇒ V = Y Por tanto, I2: Y ←− Y + 1

#(I3) = ha, hb, cii = 2a(2hb, ci+1) ˙−1 = 110 ⇒ 2a(2hb, ci+1) = 111 ⇒

 a = 0 ⇒ sin etiqueta hb, ci = 55

hb, ci = 2b(2c + 1) ˙−1 = 55 ⇒

 b = 3 ⇒ #(L) = 1 ⇒ IF V 6= 0 GOT O A1

c = 3 ⇒ #(V ) = 4 ⇒ V = X2

El programa P queda as´ı:

P :

[A1] X7 ←− X7

Y ←− Y + 1 IF X26= 0 GOT O A1

Vemos que la funci´on de aridad 2 que calcula P es JP K

2(x1, x2) =

 1 si x2= 0

↑ e.o.c.

Concluimos entonces queJU2K(4, 5, e) = JP K

(2)(4, 5) no est´a definido, es decir,JU2K(4, 5, e) ↑.

2. Calcular (r(di(4, 5, e, 3)))4

Seg´un la definici´on de la funci´on di, sabemos que di(4, 5, e, 3) = #(s4) en la computaci´on del programa P sobre los datos de entrada (4, 5). Hemos de calcular entonces (r(#(s4)))4 = (r(hi, #(σ4)i))4 = ([σ4(Y ), σ4(X1), σ4(Z1), σ4(X2), σ4(Z2), . . . ])4= σ4(X2), es decir, el valor de la variable X2 tras dar 3 pasos en la computaci´on de P con entrada (4, 5). Como la variable X2 no se modifica durante la ejecuci´on de P , tras dar 3 pasos el valor que tendr´a ser´a el mismo que ten´ıa en la configuraci´on inicial, es decir, 5. Por tanto, (r(di(4, 5, e, 3)))4= 5.

(4)

Ejercicio 2.– [3 puntos] Sean P, Q programas GOT O que calculan funciones totales para aridad 1. Con- sideremos el predicado:

θ(x) ≡ “sobre el mismo dato x, la computaci´on de P para antes que la de Q”

1. Probar que θ es un predicado parcialmente decidible, utilizando el teorema de la proyecci´on.

2. Probar que θ es GOT O–computable,

a) Dando un programa (con menos de diez l´ıneas de c´odigo) que lo calcule.

b) Utilizando el teorema del complemento.

Soluci´on

1. Probar que θ es un predicado parcialmente decidible, utilizando el teorema de la proyecci´on.

Seg´un el teorema de la proyecci´on para predicados, θ es un predicado parcialmente decidible de aridad 1 si, y s´olo si, existe un predicado GOT O−computable de aridad 2 θ0 tal que θ(x) = ∃t(θ0(x, t)). Sea θ0 el siguiente predicado GOT O−computable de aridad 2:

θ0(x, t) = ST EP(1)(x, #(P ), t)∧¬ST EP(1)(x, #(Q), t) =





1 si la computaci´on de P sobre x para en, a lo sumo, t pasos y la de Q, sobre el mismo dato de entrada, no para en a lo sumo t pasos 0 e.o.c.

Sea (x, t) ∈ N2 tal que se verifica θ0(x, t). Como P y Q calculan funciones totales para aridad 1, si la computaci´on de Q con entrada x no para en a lo sumo t pasos, parar´a en un n´umero de pasos mayor a t, es decir, la computaci´on de P para antes que la de Q. Seg´un esto, podemos escribir θ como sigue:

θ(x) = ∃t(θ0(x, t)) = ∃t(ST EP(1)(x, #(P ), t) ∧ ¬ST EP(1)(x, #(Q), t)) Y por el teorema de la proyecci´on, concluimos que θ es parcialmente decidible.

2. Probar que θ es GOT O−computable,

a) Dando un programa (con menos de diez l´ıneas de c´odigo) que lo calcule.

El siguiente programa GOT O tiene menos de diez l´ıneas de c´odigo y calcula θ:

[B] IF ST EP(1)(X, #(Q), Z) GOT O E IF ST EP(1)(X, #(P ), Z) GOT O A Z ←− Z + 1

GOT O B [A] Y ←− Y + 1 b) Utilizando el teorema del complemento.

El teorema del complemento para aridad 1 es el siguiente:

B ⊆ N es GOT O − computable ⇐⇒ B y B son recursivamente enumerables

Trasladando esta propiedad a los predicados parcialmente decidibles, si B = {x ∈ N : θ(x)} y B = {x ∈ N : θ(x) = ¬θ(x)}, tenemos que

θ(x) es GOT O − computable ⇐⇒ θ(x) y θ(x) son parcialmente decidibles

En el apartado 1 de este ejercicio hemos probado que θ(x) es parcialmente decidible. Por tanto, para probar que θ(x) es GOT O−computable, bastar´a demostrar que su complementario θ(x) tambi´en es parcialmente decidible.

θ(x) ≡ “sobre el mismo dato x, la computaci´on de P no para antes que la de Q”

(5)

θ(x) =

GOT O−computable

z }| {

(ST EP(1)(x, #(Q), 0) ∧ ST EP(1)(x, #(P ), 0)) ∨

parcialmente decidible, por el teorema de la proyecci´on

z }| {

∃t

GOT O−computable

z }| {

(ST EP(1)(x, #(Q), t) ∧ ¬ST EP(1)(x, #(P ), t ˙−1))

Por tanto, θ y θ son ambos parcialmente decidibles, luego θ es GOT O−computable.

(6)

Ejercicio 3.– [2 puntos] Determinar si los siguientes conjuntos son o no GOT O–computables:

1. A = {x : x es el c´odigo de los programas que no contienen la variable Y } 2. B = {e : ϕe(0) = 5 ∧ ∀x > 0(ϕe(x) = ϕe(x − 1) + 2x)}

Soluci´on

1. Probaremos que A es GOT O−computable demostrando que su funci´on caracter´ıstica es efectivamente GOT O−computable.

CA(x) =

 1 si x es el c´odigo de un programa que no contiene la variable Y 0 e.o.c.

Podemos escribir CA como cuantificaci´on universal acotada de un predicado GOT O−computable como sigue:

CA(x) = ∀z ≤ Long(x + 1)(z ≥ 1 −→ r(r((x + 1)z)) 6= 0) Alternativamente, tambi´en podemos escribir un programa GOT O que calcule CA:

P









[A] Z ←− Z + 1

IF Z > Long(X + 1) GOT O B IF r(r((X + 1)Z)) 6= 0 GOT O A GOT O E

[B ] Y ←− Y + 1 Notas:

x es el c´odigo de un programa, por tanto, x + 1 = [#(I1), . . . , #(In)].

El n´umero de instrucciones del programa codificado por x es Long(x + 1).

z nos indica la siguiente instrucci´on para la que vamos a comprobar que no contiene a la variable Y . Entonces, el c´odigo de dicha instrucci´on es #(Iz) = (x + 1)z.

Si #(I) = ha, hb, cii, la instrucci´on I contiene a la variable Y si c = 0, esto es, si r(r(#(I))) = 0 2. Demostraremos que el conjunto B no es GOT O−computable usando el teorema de Rice. Consideramos

la familia de funciones GOT O−computables:

F = {g ∈ GCOM P : g(0) = 5 ∧ ∀x > 0(g(x) = g(x − 1) + 2x)}

Claramente, IF = {e ∈ N : ϕe∈ F } = B. Entonces:

a) Veamos que F 6= ∅

La funci´on f definida como sigue

 f (0) = 5

f (x + 1) = f (x) + 2(x + 1)

pertenece a F y es GOT O−computable, puesto que est´a definida por recursi´on primitiva a partir de una constante y una funci´on GOT O−computable, es decir, f = R(5, h), donde h(x, z) = 2(x + 1) + z.

b) Veamos que F 6= GCOM P(1)

La funci´on vac´ıa f es GOT O−computable pero no pertenece a F .

Del teorema de Rice se deduce que IF no es GOT O−computable ⇒ B no es GOT O−computable.

Referencias

Documento similar

• Ello permite plantear una primera etapa de normalización de los sistemas de clasificación, al proveer al Ayuntamiento de un marco general que abarque toda su

Este parón o bloqueo de las ventas españolas al resto de la Comunidad contrasta sin em- bargo con la evolución interior de ese mismo mercado en cuan- to a la demanda de hortalizas.

Los números pueden ser definidos como cierto nú- mero de objetos que caen bajo cierto concepto; los números son el rango de valores de una función como

Este documento destaca nuestra visión colectiva sobre la Transición Energética Justa, tal como debatieron las/os participantes y se expresó en los seminarios virtuales de Amigos de

Por ello es que, realmente, no se puede hablar de una actitud radical y beligerante de parte del colectivo que se manifiesta a favor del reconocimiento legal del

22 FERNÁNDEZ DÍAZ, Andrés (2000): pp.. lenguaje, añadiendo que la ciencia del Derecho puede verse como un conjunto de enunciados sobre el Derecho positivo. De esa forma aparece

Con todo, quienes insisten en que el razonamiento jurídico es derrotable disponen aún de otra forma de replantear el argumento: se podría sostener que un juicio acerca del derecho

1. LAS GARANTÍAS CONSTITUCIONALES.—2. C) La reforma constitucional de 1994. D) Las tres etapas del amparo argentino. F) Las vías previas al amparo. H) La acción es judicial en