Teorı́a de la Computabilidad. Grupo 1 Ejercicios del Tema 3 (Curso 2010–11) Tema 3 Ejercicio 35.– Sean g1 : N3 − → N y g2 , g3 : N2 − → N funciones parciales GOTO– computables. Probar que las funciones h1 (x, y) = g1 (x, y, g2 (y, x)) y h2 (w, x, y, z) = g1 (g2 (w, y), z, g3 (2, g3 (y, z))) son GOTO–computables. Ejercicio 36.– Dada una función f : N → N se define la función itf : N2 → N como n+1 veces itf (x, 0) = x, e itf (x, n + 1) = f n+1 (x) = f (f ( ··· f (x) · · · )), para cada x, n ∈ N Pruébese que si f es GOTO–computable, entonces itf también lo es: (a) Utilizando para ello un programa GOTO. (b) Sin utilizar ningún programa GOTO. Ejercicio 37.– Dada una función ϕ : N → N se define f : N2 → N como sigue: f (x, 0) = ϕ(x) f (x, y + 1) = f (f (x, y), y) Se pide: (a) Probar por inducción débil sobre y que ∀y ∀x (f (x, y) = ϕ2 (x)). y (b) Del apartado (a), deducir que si ϕ es GOTO–computable, entonces f también lo es. Ejercicio 38.– Explicitar las siguientes funciones: (a) µy(x • y = 0) • (b) µy(x − y = 0) • (c) µx(x − y = 0) (d) µy(g(x, y) = 0), donde g(x, y) es la función: g(x, y) = ( • x−y 1 si x es par e.o.c Ejercicio 39.– Probar que la función f : N → N definida por: f (0) = 1 y f (n + 1) = número de dı́gitos de n + 1 en base 10 es GOTO–computable. Ejercicio 40.– a) Probar que todo conjunto finito es GOTO–computable. b) Probar que, para cualquier número natural n, se tiene que el conjunto B = {x : x ≥ n} es GOTO–computable. Ejercicio 41.– Sean a ∈ N y f : Nk → N una función total y GOTO–computable. Probar que el conjunto A = {~x ∈ Nk : f (~x) = a} es GOTO–computable. Ejercicio 42.– Probar que si A, B son conjuntos GOTO–computables, entonces el producto cartesiano A × B es GOTO–computable. Ejercicio 43.– Sea A ⊆ N un conjunto GOTO–computable y f : Nk → N una función total GOTO–computable. Probar que el conjunto f −1 [A] = {~x ∈ Nk : f (~x) ∈ A} es GOTO– computable. Ejercicio 44.– Probar que la función f : N → N definida por: 33 2 f (0) = 0, f (1) = 1, f (2) = 2 , f (3) = 3 , . . . , f (n) = n ·· n· n (n veces) es GOTO–computable Indicación: Considérese la función g : N2 → N caracterizada por las relaciones: g(0, x) = x y g(n + 1, x) = xg(n,x) . Pruébese que dicha función es GOTO–computable, que g(n, x) = · xx ·· x (n+1 veces) y que f (n) = g(n − 1, n), para cada n ≥ 1. Ejercicio 45.– Probar que es GOTO–computable la función f : N → N, definida por f (0) = 7 f (n) 2 f (n + 1) = 3 · f (n) + 1 si f (n) es par. si f (n) es impar. Ejercicio 46.– a) Probar que el predicado θ(x) ≡ x es un múltiplo de 3 es GOTO–computable. b) Diseñar un programa GOTO que al recibir un dato de entrada n devuelva el término n − ésimo de la sucesión: 0, 1, 2, 2, 3, 4, 4, 5, 6, 6, 7, .... c) La sucesión anterior puede definirse mediante la función: f : N −→ N f (0) = 0 f (x + 1) = f (x) si x + 1 es múltiplo de 3 f (x) + 1 e.c.o.c. Probar que f es sobreyectiva. Utilizando recursión primitiva, probar que f es GOTO–computable. Ejercicio 47.– Sea f : Nk+1 −→ N una función total (k + 1)–aria, con k ≥ 0. Se define la suma acotada de f , que notaremos Σf , ası́: X Σf (~x, y) = f (~x, z) z≤y Probar que si la función f es GOTO–computable, entonces la correspondiente función suma acotada Σf también lo es. Nota: AnálogamenteY se define el producto acotado, Πf , de una función total (k + 1)– Q aria f : f (~x, y) = f (~x, z), y se prueba que si f es GOTO–computable, entonces la z≤y correspondiente función producto acotado Πf también lo es. Ejercicio 48.– Probar que las funciones binarias que calculan el máximo común divisor y el mı́nimo común múltiplo de dos números naturales son GOTO–computables. Ejercicio 49.– Probar que los siguientes predicados binarios son GOTO–computables. θ1 (x, y) ≡ x e y tienen distinta paridad y, además, tienen el mismo número de divisores primos. θ2 (x, y) ≡ x e y son distintos de cero y tienen los mismos divisores primos. θ3 (x, y) ≡ el número de divisores de x es, al menos, y. Ejercicio 50.– Probar que las siguientes funciones son GOTO-computables: (a) f (0) = 0 f (x) = la suma de los divisores de x, si x 6= 0 (b) g(x) = el número de primos menores o iguales que x. √ (c) h(x) = el único número natural n tal que n ≤ 2 · x < n + 1. Ejercicio 51.– Sean f1 , f2 , ..., fn : N −→ N funciones totales. Sea G(x) = [f1 (x), f2 (x), ..., fn (x)]. Probar que G es GOTO-computable sı́ y sólo si f1 , f2 , ..., fn son GOTO–computables. Ejercicio 52.– Sea f : N −→ N una función total. Se define la función historia de f , ası́: fˆ(x) = [f (0), f (1), ..., f (x)] Probar que fˆ es GOTO-computable sı́ y sólo si f es GOTO–computable. Ejercicio 53.– Utilizando la función auxiliar h(n) = [f (n), g(n)], probar que las siguientes funciones f y g son GOTO–computables: g(0) = 0 f (0) = 0 g(n + 1) = 2 + f (n) f (n + 1) = 1 + g(n) Ejercicio 54.– Probar que la función f : N → N definida por: f (0) = 0, f (1) = 1, f (n) = n − f (n − 2), si n ≥ 2 es GOTO-computable. Indicación: Considérese la función auxiliar h(x) = [f (x), f (x + 1)]. Ejercicio 55.– Sea θ(x, y) un predicado binario GOTO–computable. Se define la función total g : N2 → N como sigue: g(x, y) = máx θ(x, z) z≤y Es decir, g(x, y) es el mayor número natural z ≤ y que verifica θ(x, z), si existe; en caso contrario, el valor es 0. Probar que la función g es GOTO–computable. Ejercicio 56.– Probar que la función de Fibonacci f : N → N definida por: f (0) = 0, f (1) = 1, f (n) = f (n − 1) + f (n − 2), si n ≥ 2 es GOTO-computable. Ejercicio 57.– Probar que las siguientes funciones f y g son GOTO–computables. f (0) = 1, f (1) = 4, f (2) = 6 f (x + 3) = f (x) + f (x + 1)2 + f (x + 2)3 g(0) = 3 g(x + 1) = x X t=0 g(t) Indicación: Pruébese que las correspondientes funciones historia fˆ y ĝ son GOTO–computables. Ejercicio 58.– Sea f : N2 → N la función definida por x si y = 0 f (x, y) = f (⌊ x2 ⌋, y − 1) si y > 0 (a) Probar que f es total. Indicación: Pruébese por inducción débil que ∀x ∀y ∃z (f (x, y) = z). (b) Probar que para cada z existen infinitos pares naturales (x, y) tales que f (x, y) = z. Indicación: Pruébese por inducción débil que ∀k ∀z (f (2k · z, k) = z). (c) Probar que f es GOTO–computable. Indicación: Pruébese que es GOTO–computable la función fˆ(x, y) = [f (0, y), . . . , f (x, y)]. Ejercicio 59.– Se dice que dos números naturales x e y son coprimos (o bien que son primos entre sı́) si no tienen divisores primos comunes. (a) Probar que el predicado binario COP(x, y) ≡ x e y son coprimos es GOTO–computable. (b) Probar que la siguiente función es GOTO–computable: f (x, k) = 0 f (x, k) = k-ésimo número coprimo con x si x = 0 ó k = 0 en otro caso Indicación: Obsérvese que si y es un número primo estrı́ctamente mayor que x, entonces x e y son primos entre sı́. Pruébese que f (x, k) ≤ px+k (recuérdese que pn representa al n–ésimo número primo). Ejercicio 60.– Sea θ(x, y) el predicado “x e y tienen el mismo número de divisores primos” (por ejemplo, θ(6, 28) = 1 y θ(6, 9) = 0). (a) Probar que el predicado θ es GOTO–computable. (b) Consideremos la función 0 f (x, k) = k-ésimo y tal que θ(x, y) si x ≤ 1 o k = 0 en otro caso Probar que f es GOTO–computable. Indicación: Obsérvese que si x es un número natural estrı́ctamente mayor que 1, entonces x, x2 , x3 , . . . xk tienen los mismos divisores primos (en particular, tienen el mismo número de divisores primos).