Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1.- Composicin
Vamos a considerar formas de combinar funciones calculables de forma que el resultado sea tambin calculable. Vamos a emperezar con la composicin. Definicin.- Sea una funcin de k variables y g 1,, gk funciones de n variables. Entonces se define la composicin de f y g 1,, gk como la funcin de n variables. h(x1,..., xn) = f(g1(x1,...,xn),,gk(x1,..,xn))
Existen funciones calculables y totales que no son FPR
Funciones Calculables
Las funciones f, g1,,gk no necesitan ser totales. Si lo son la funcin composicin tambin lo ser. Ejemplo.- Si f(x, y, z) = (x+ y).z g1(x1, x2) = x1 x2 g2(x1, x2) = x1. x2 g3(x1, x2) = x1 + x2 entonces
Teorema.- Si h es la composicin de las funciones (totalmente) calculables f, g1,,gk, entonces h es (totalmente) calculable.
Demostracin.Slo hay que considerar el siguiente programa que, obviamente, calcula h: Z1 g1 (x1,, xn) .. Zk gk (x1,, xn) Y f (x1,, xn) As, como sabemos que las funciones x, x+y, x.y, x-y son calculables. As mediante este teorema se puede deducir que 2x = x + x, 4x 2 = (2x)(2x), son calculables. Tambin son calculables, 4x2 + 2x, 4x2 - 2x. Tambin son totales, aunque la ltima se obtiene como composicin de la funcin no total x - y, con 4x 2 y 2x.
2. Recursividad
Supongamos que k es un nmero y h(0) = k, h(t+1) = g(t, h(t)) donde g es una funcin total de dos variables. Se dice que h se obtiene a partir de g, mediante recursividad. Teorema.- Si h se obtiene a partir de g mediante recursividad, y g es calculable, entonces h es tambin calculable. Demostracin.La funcin constante f(x) = k es calculable. Basta considerar el programa YY+1 YY+1 .. YY+1 Por tanto, est disponible la macro Y k. El siguiente programa calcula h(x): [A] Yk IF X = 0 GOTO E Y g(Z, Y) ZZ1 GOTO A
Y toma los valores h(0), h(1), , h(x) Existe una recursin un poco ms complicad, en el sentido de que implica funciones de ms variables. Hay que partir de dos funciones totales, una f de n variables, y otra g de n+2 variables. Se dice entonces que la funcin h de n+1 variables se obtiene por recursin a partir de f y g si h(x1,,xn,0) = f (x1,,xn) h(x1,,xn, t+1) = g(t, h(x1,,xn,t),x1,,xn)
Otra vez se verifica un teorema anlogo al anterior. Teorema.- Si h se obtiene a partir de f y g mediante las expresiones anteriores y f, g son calculables. Entonces h es tambin calculable. Demostracin.Slo hay que tener en cuenta el siguiente programa Y f (x1,,xn) [A] IF xn+1 = 0 GOTO E Y g (Z, Y, x1,,xn) ZZ+1 Xn+1 xn+1 1 GOTO A Ejemplo de programa recursivo [A] Y K IF X = 0 GOTO E Y g(Z,Y) Z Z + 1 X X 1 GOTO A
Vamos a desarrollar la ejecucin del siguiente programa con X = 3 X=0 Y K = h(0) X=1 Y g(0, h(0)) = h(1) Z1 X2 X=2 Y g(1, h(1)) = h(2) Z2 X1 X=3 Y g(2, h(2)) = h(3) Z3 X0
Definicin.- Una clase de funciones totales se dice PRC si: 1.Las funciones iniciales pertenecen a . 2.Una funcin obtenida a partir de funciones de mediante recursin o composicin tambin pertenece a . Inmediatamente tenemos el teorema siguiente. Teorema.- La clase de las funciones calculables es PRC. Demostracin.Slo hay que demostrar que las funciones iniciales son calculables. La funcin siguiente es calculada por el programa. YX+1 La funcin nula es calculada por el programa nulo. La funcin proyeccin uin se calcula por el programa Y Xi Definicin.- Una funcin se dice recursiva primitiva si puede obtenerse a partir de las funciones iniciales mediante recursin y composicin. Corolario.- La clase de las funciones recursivas primitivas es PRC. Teorema.- Una funcin es recursiva primitiva si y slo si pertenece a todas las clases PRC. Corolario.- Toda funcin recursiva primitiva es calculable. El recproco no es cierto.
2.- x . y Las ecuaciones de recursin son h(x, 0) = n(x) h(x,y+1) = f (u23(y, h(x, y), x), u33(y, h(x,y),x)) donde f es la funcin suma. Por tanto, h, la funcin producto, es primitiva recurisiva. 3.- x! Las ecuaciones de recursin son 0! = 1, (x + 1)! = x! s(x) Ms precisamente escribiendo x! = h(x), tenemos h(0) = 1 h(t+1) = g(t, h(t)), donde g(x1,x2) = s(x1) x2 Finalmente g es recursiva primitive, porque g(x1,x2) = s(u12(x1,x2)) u22(x1,x2) y, por tanto, g es recursiva primitiva. 4.- xy Las ecuaciones de recursin son x0 = 1, xy+1 = xy x De aqu se puede demostrar que es recursiva primitiva. 5.- p(x), Funcin Predecesor, dada por x-1 p(x) = 0 si x = 0 Las ecuaciones de recursin son p(0) = 0, p(t+1) = t 6.- x
si x 0
y , donde x y si x y
.
y= 0 si x = 0
x x
. .
t)
7.- |x y|, la funcin valor absoluto. Esta funcin puede expresarse como |x y| = (x
.
y) + (y
x)
y, por tanto, es recursiva primitiva. 8.- La funcin (x), definida como 1 (x) = 0
.
si x = 0 si x 0
(x) es recursiva primitiva ya que (x) = 1 x Las ecuaciones de recursin son (0) = 1 (t + 1) = 0 Ejercicios 1.- Demostrar que para cada k la funcin f(x) = k es recursiva primitiva. 2.- Demostrar que si f(x) y g(x) son funciones recursivas primitivas, entonces tambin lo es f(x) + g(x). 3.- (a) Sea E(x) = 0 si x es par, y E(x) = 1, si x es impar. Demostrar que E(x) es recursiva primitiva. (b) Sea H(x) = x/2, si x es par y H(x) = (x-1)/2 si x es impar. Demostrar que H es recursiva primitiva. 4.- Sea g(x) una funcin recursiva primitiva y sea f(0,x) = g(x) f(n+1,x) = f(n,f(n,x)) Demostrar que f(n,x) es recursiva primitiva. 5.- Sea f(0) = 0, f(1) = 1, f(2) = 22, f(3) = 33 , Y, en general, f(x) es igual a una pila de x exponentes de valor x. Demostrar que f es recursiva primitiva. 6.- Sea f(x,y) = xy-x. Es f primitiva recursiva?
3
7.- Sea f ( x, y )= x . Es f primitiva recursiva? 8.- Sea f(x)=xx(x-1). Es f una funcin primitiva recursiva? 9.- Sea f ( x) = x x x . Es f una funcin primitiva recursiva? ___________________
2
si x es par si x es impar
Debido a que (x) es recursiva primitiva como hemos demostrado anteriormente, por composicin E(x) es recursiva primitiva. Ejemplo de clculo, E(1) = (E(0)) = (0) = 1 E(2) = (E(1)) = ((E(0)) ) = ((0)) = (1) = 0 E(3) = (E(2)) = ((E(1)) ) = (((E(0) ))) = (((0) )) = ((1) ) = (0) = 1 b) x/2 H(x) = (x-1)/2 si x es impar O sera lo mismo decir que el elemento siguiente es x/2 = H(x) H(x+1) = (x+1)/2 = (H(x)+1) si x es impar Vamos a comprobar como se calculara H(x+1) con unos cuntos ejemplos: Si tenemos H(4) = 2, H(5) que sera el siguiente H(5) = H(4+1) (x es par) 4/2 = 2 que sera lo mismo que decir que H(5) = H(4+1) = H(4) = 2 Otro ejemplo, si tenemos que H(5) = 2 H(6) = H(5+1) (x es impar) (5+1)/2 = 6/2 = 3 o lo que sera lo mismo H(6) = H(5+1) = H(5)+1 = 2+1 = 3 si x es par si x es par
Con lo que se podra calcular de forma encadenada o recursiva poniendo como caso Base H(0) = 0.Pero de esta manera no podramos demostrar que es recursiva primitiva, pero si lo expresamos de la siguiente manera: H(0) = 0
H(x+1) = H(x) + E(x) Y como E(x) es recursiva primitiva, ya que lo hemos demostrado anteriormente. H(x) es recursiva primitiva. 4.Vamos a ver como se comporta la funcin con algunos ejemplos: f(0,x) = g(x) f(1,x) = f(0, f(0,x)) = f(0,g(x)) = g(g(x)) = g2(x) f(2,x) = f(1, f(1,x)) = f(1, g2(x)) = g2(g2(x)) = g 2 (x) f(3,x) = f(2,f(2,x)) = f(2, g 2 (x)) = g 2 ( g 2 (x)) = g 2 (x)
2 2 2 2 4
En general, f(n,x) = g 2 ( x) Vamos a demostrar por induccin que es recursiva primitiva n=1 f(1,x) = g2(x) n=n f(n,x) = g 2 ( x) n = n+1 f(n+1,x) = g 2 ( x )
1 2n
2n
1 2n
Probamos la induccin
f (n +1, x ) = f (n, f (n, x)) = f (n, g 2 =g
22
n 1 1 2n
( x )) = g 2
22
( n+ 1) 1
1 2n
(g 2
1 2n
( x )) =
+2 2
n 1
( x) = g
2 2(2
n 1)
( x) = g
22
( x) = g
( x)
Pero nos encontramos que el nmero de operaciones depende de la entrada n. Con lo que definimos una nueva funcin F(m,x) = gm(x) La funcin F es primitiva recursiva debido a que F(m+1,x) = gm+1(x) = g(gm(x)) = g(F(m,x)) Por tanto F es primitiva recursiva. Y como podemos definir f(n,x) = F( 2 2 ,x) Y como f es composicin de operaciones que son primitivas recursivas, f es primitiva recursiva 5.Podemos definir
m +1
x ..
n 1
F ( m, x ) = x . F (0, x ) = x
F ( m +1, x) = x . = F ( m, x ) x
x ..
de manera que como F es recursiva primitiva si definimos f a partir de F, por composicin f es recursiva primitiva. f(x) = F(x-1, x) Con lo que ya est demostrado que f es recursiva primitiva. Algunos ejemplos, f(0) = F(0,0) f(1) = F(0,1) = 1 f(2) = F(1,2) = 22 6.f no puede ser recursiva primitiva debido a que no es una funcin total, ya que cuando y<x la funcin no est definida. 7.f si es primitiva recursiva, ya que al ser la resta acotada, la funcin si est definida cuando y<x. 8.f si es primitiva recursiva, porque con x=0, al multiplicar por cero, f vale cero, y la funcin si est definida. 9.f si es primitiva recursiva porque es composicin de funciones primitivas recursivas. 5.- Predicados Recursivos Primitivos Recordemos que los predicados son funciones totales que toman los valores 0 y 1. Por tanto, si los predicados estn definidos sobre los nmeros naturales, podemos hablar de predicados recursivos primitivos. Vamos a dar algunos predicados que son recursivos primitivos. 9.- x = y Este predicado es una funcin que toma el valor 1 si x e y son iguales y 0 si son distintos. Es decir, corresponde a la funcin 1 d(x,y) = 0 si x y Que es primitiva recursiva es inmediato a partir de la ecuacin d(x,y) = (|x - y|) si x = y
y)
Teorema.- Si es una clase PRC, entonces si P, Q son predicados que pertenecen a , tambin pertenecen P, P v Q, P & Q. Demostracin.Como P = (P), si P . P & Q , a causa de la igualdad P & Q = P.Q P v Q , por la ley de Morgan. P v Q (P & Q) Como consecuencia de este teorema tenemos los dos siguientes corolarios. Corolario.- Si P, Q son predicados recursivos primitivos, entonces tambin lo son P v Q, P, P & Q. Corolario.- Si P, Q son predicados calculables, entonces tambin lo son P v Q, P, P & Q. Como consecuencia de este teorema, es inmediato demostrar que el siguiente predicado es recursivo primitivo. 11.- x < y Solo hay que escribir X < y x y & (x = y) Teorema (Definicin por casos).- Si es una clase PRC, y las funciones g, h y el predicado P pertenecen a , y f se define como
g(x1, f(x1,,xn) =
,xn)
si P(x1,,xn)
h(x1,,xn) en otro caso entoncesf pertenece a . Demostracin.El resultado se desprende de la ecuacin f(x1,,xn) = g(x1,,xn). P(x1,,xn)+ h(x1,,xn). (P(x1,,xn))
f(t, x
t =0 y
, , x n )
f (t, x
t =0
,, x n )
Demostracin.Se podra intentar esta demostracin por induccin. As se podra demostrar que las funciones g(0, x1,,xn), g(1, x1,,xn), pertenecen a , pero no que la funcin g(y, x1,,xn), en la funcin y es un argumento, pertenece a . La demostracin de que g pertenece a se basa en las siguientes ecuaciones de recursin, g(0, x1,,xn) = f(0, x1,,xn), g(t+1, x1,,xn) = g(t, x1,,xn) + f(t+1, x1,,xn)
Algunas veces la sumatoria o producto se realiza desde 1, en vez de desde 0. Es decir, se considera g(y, x1,,xn) = y h(y, x1,,xn) =
f(t, x
t =1 y
, , x n )
f (t, x ,, x
1 t =1
En este caso, considerando que las suma vaca es 0 y el producto vaco es 1, las funciones resultantes tambin perteneceran a . Bastara con sustituir las ecuaciones iniciales de recursin por g(0, x1,,xn) = 0 g(0, x1,,xn) = 1 Esto lo expresamos con el siguiente corolario. Corolario.- Si (t, x1,,xn) pertenece a la clase PRC , entonces tambin pertenecen las funciones
f(t, x
t =1 y
, , x n )
f (t, x ,, x
1 t =1
Teorema.- Si el predicado P(t, x1,,xn) pertenece a la clase PRC , entonces tambin pertenecen los predicados ( t y) P (t, x1,,xn) y ( t y) P (t, x1,,xn) Demostracin.Slo hay que considerar que (t y) P (t, x1,,xn) (t y) P (t, x1,,xn)
P(t, x
t =0 y
, , x n ) = 1 ,, x n ) 0
f (t, x
t =0
El teorema es an vlido si los cuantificadores son ( t < y) o (t < y). Esto es claro a partir de las siguientes relaciones, (t < y) P (t, x1,,xn) (t < y) P (t, x1,,xn)
P(t, x
t =0 y t =0
, , x n ) = 1
n
f (t, x ,, x
1
) 0
A partir de estas propiedades, podemos construir algunas funciones recursivas primitivas como las siguientes. 12.- x|y. Relacin divisor Este predicado es recursivo primitivo, ya que puede expresarse como y|x (t x) (y.t = x) 13.- Primo (x) El predicado x es primo es recursivo primitivo, ya que puede expresarse como Primo(x) (x>1) & (t x) {t = 1 v t = x v (t|x) } Ejercicios 1.- Sea f(x) = 2x si x es cuadrado perfecto; y f(x) = 2x + 1, en otro caso. Demostrar que f es recursiva primitiva. 2.- Sea (x) la suma de los divisores de x si x 0 y (0) = 0. Demostrar que es recursiva primitiva.
3.- Sea (x) el nmero de primos x. Demostrar que es recursiva primitiva. 4.- Sea SDCP (x) un predicado que es cierto cuando x es la suma de dos cuadrados perfectos y falso en caso contrario. Demostrar que SDCP es recursivo primitivo. ___________________ Ejercicios Resueltos 1.2x f(x) = 2x+1 en otro caso En primer lugar sabemos que 2x y 2x+1 es primitivo recursivo ya que slo usa el producto y la suma que son primitivos recursivos. Vamos a comprobar que t x = t2 es primitivo recursivo. t x = t 2 t x i x = t 2 2.x
si t x = t2
t (t | x)
t =1
x0
(0) = 0 x=0
Como todas las funciones son primitivas recursivas, por composicin de funciones, la funcin es recursiva primitiva. 3.(x) =
Pr imo(t )
t =1
Puesto que Primo(t) hemos demostrado anteriormente que es primitiva recursiva por composicin de funciones, la funcin es primitiva recursiva. 4.SDCP(x) ux vx u2+v2 = x Como sabemos u2+v2 = x, es una funcin recursiva primitiva, puesto que est formada por la suma, producto e igualdad, que como hemos demostrado anteriormente son recursivas primitivas, con lo que por composicin u2+v2 = x es recursivo primitivo. Y como u2+v2 = x, es recurivo primitivo y vx u2+v2 = x, est formado por funciones recursivas primitivas, por composicin es primitiva recursiva, y ux vx u2+v2 = x como est formado por funciones recursivas primitivas, por composicin es recursiva primitiva, con lo que SDCP es recursivo primitivo.
7. Minimizacin
Si P(t, x1,...,xn) pertenece a una clase dada PRC, ; entonces sabemos que la funcin g(y, x1,,xn) =
u =0 t =0
( P (t , x1 ,..., x n ))
tambin pertenece a . Donde es la funcin recursiva primitiva definida anteriormente. Vamos a analizar que es lo que calcula realmente la funcin q. Supongamos que para algn valor t0 y, se verifica que P (t, x1,,xn) = 0 para t < t0 pero P (t0, x1,,xn) = 1 esto es t0 es el mnimo valor t y para el cul P (t, x1,,xn) es cierto. Entonces 1 si u < t0
( P(t , x ,..., x
1 t =0
)) = 0 si u t0
u <t 0
1 = t
esto es, g(y, x1,xn) calcula el mnimo valor t y para el que se verifica P(t, x1,..,xn). Usando este hecho y los teoremas anteriores es fcil demostrar el siguiente teorema: Teorema.- Si P(t,x1,,xn) pertenece a una clase PRC y f(y,x1,,xn) = Min{ t y / P(t, x1,,xn)} = g(y,x1,,xn) si (( t < y) P(t, x1,,xn) = 0 en otro caso entonces f pertenece a . Este teorema nos permite considerar los siguientes ejemplos de funciones recursivas primitivas.
14.- [x/y] [x/y] es la parte entera de x dividido por y. Por ejemplo, [7/2] = 3 [2/3] = 0 La ecuacin [x/y] = Min { t x / (t + 1).y > x } muestra que esta funcin es recursiva primitiva. De acuerdo con esta ecuacin, [x/0] = 0. 15.- R(x,y). Resto de la divisin entera. Como x/y = [x/y] + R(x,y)/y, podemos escribir R(x,y) = x
.
(y.[x/y])
por lo que R(x,y) es recursiva primitiva. Notemos que R(x,0) = x. 16.- pn, n-simo nmero primo. Para esta funcin se considera p0 = 0 y p1 = 2, p2 = 3, Consideremos las ecuaciones de recursin p0 = 0 pn+1 = Min{ t pn!+ 1/ Primo(t) & (t > pn) } Primero vamos a demostrar que son correctas. Para ello habra que probar que pn+1 (pn)! + 1 Para esto notemos que para 0 < i n tenemos
( p n )!+1 1 =k + p1 p1
donde k es un entero. Por tanto, (pn)! + 1 no es divisible por ninguno de los primos p1, p2,,pn. As (pn)! + 1 es primo, o es divisible por un primo > p n. En cualquier caso existe un primo q, tal que pn < q (pn)! + 1, lo cul prueba la desigualdad requerida. Esta demostracin est basada en cuna dada por Euclides para probar que existen infinitos nmeros primos. Vamos a escribir ahora las ecuaciones de recursin de una forma que nos muestre que pn es efectivamente una funcin recursiva primitiva. Primero notemos que h(y,z) = Min { t z / Primo(t) & (t > y) } es recursiva primitiva. As que k(x) = h( x,x ! +1) es tambin recursiva primitiva. Finalmente, las ecuaciones de recursin se reducen a p0 = 0 pn+1 = k (pn)
con lo que pn es recursiva primitiva. Discutamos ahora la minimizacin no acotada. Definimos Min { y / P(x1,,xn, y) } como el mnimo valor de y para el cual el predicado P(x 1,,xn, y) es cierto, estando indefinido si no existe valor de y para el cual P(x 1,,xn, y) es cierto. Notemos as que la minimizacin absoluta de un predicado puede producir una funcin que no es total. Por ejemplo, x y = Min { z / y + z = x} no est definida x < y. Respecto a esta funcin, indicaremos que existen predicados recursivos primitivos cuya minimizacin no acotada es total, pero no es recursiva primitiva. Sin embargo, se puede demostrar el siguiente teorema. Teorema.- Si P(x1,,xn, y) es predicado calculable y si g(x1,,xn) = Min{ y / P(x1,,xn, y)} entonces g es parcialmente calculable.
Demostracin.Basta considerar el siguiente programa que calcula g, [A] IF P(X1,,XN, Y) GOTO E Y Y + 1 GOTO A
Ejercicios 1.- Sea h(x) el entero n tal que n 2 x < n+1. Demostrar que h(x) es recursiva primitiva. 2.- Demostrar lo mismo cuando h(x) se define como el entero n tal que n (1 + 2 ) x < n+1 3.- p se dice que es un primo gemelo mayor si p y p -2 son ambos primos ( por ejemplo, 5, 7 ,13, 19, ). Sea T(0) = 0, T(n) es el n-simo primo gemelo mayor. Se supone, aunque nadie lo ha demostrado que existen infinitos primos gemelos mayores. Suponiendo que esto es verdad, demostrar que T(n) es calculable.
4.- Sea u(n) el n-simo nmero que es suma de dos cuadrados perfectos. Demostrar que u(n) es recursiva primitiva. 5.- Sea R(x,t) un predicado recursivo primitivo. Sea g(x,y) = Max { t y / R(x,t) } es decir g(x,y) es el mayor valor de t y para el que R(x,t) es verdadero. Siendo g(x,y) es recursiva primitiva. ___________________ Ejercicios Resueltos 1.n h(x) = Min n /
2 .x < n+1 2 .x
Puesto que n2 2x2 y 2x2 < (n+1)2 es primitivo recursivo y n 2x est acotado, por composicin la funcin es primitiva recursiva. 4.Si consideramos que u(0) = 0 u(n+1) = Min t / n2 2x2 = Min n 2x / 2x2 <(n+1)2 Y por estar formada por funciones primitivas recursivas, por composicin de funciones recursivas primitivas, la funcin u(n) es primitiva recursiva. t > u(n) SDCP (t) =
Autoreferencia
La autoreferencia argumenta hechos que no pueden existir o que se referencian a s mismo. La autoreferencia se usa para demostrar en matemticas, filosofa que algo no se puede demostrar o no se puede definir. La mejor manera de explicar la autoreferencia es a partir de un ejemplo. Esta frase es mentira, no hay manera de verificar su veracidad o su falsedad, debido a que se autoreferencia, con lo que si conseguimos que un problema se autoreferencie lograremos verificar que es indemostrable.
<x,y> = 2x(2y + 1)
Notemos que 2x(2y + 1) > 0, de forma que podemos emitir el punto y escribir <x,y> = 2x(2y + 1) -1 Algunos ejemplos de codificacin de pares de nmeros seran los siguientes: <0,0> = 20(2.0 + 1) <0,1> = 20(2.1 + 1) <1,0> = 21(2.0 + 1) De forma genrica: <0,y> = 2.y <x,0> = 2x 1 Si z es un nmero dado, existe una nica funcin x,y para la ecuacin 2y + 1 = (z+1)/2x esta ecuacin tiene siempre solucin (nica) porque (z+1)/2 x ha de ser impar. Esta ecuacin define pues dos funciones X = l(z), y = r(z)
. . .
Como esta ecuacin implica que x,y < z+1 tenemos l(z) z, r(z) z
Por tanto, podemos escribir l(z) = Min { x z / (y z) (z = <x,y>) } r(z) = Min { y z / (x z) (z = <x,y>) } as que l(z) y r(z) son funciones recursivas primitivas. La definicin de l(z), r(z) puede expresarse mediante la siguiente propiedad: <x,y> = z x = l(z) & y = r(z) Resumimos las propiedades de las funciones <x,y>, l(z) y r(z) en el siguiente teorema. Teorema (Teorema de la funcin de emparejamiento).- Las funciones <x,y>, l(z) y r(z) tienen las siguientes propiedades 1.Son recursivas primitivas 2.l(<x,y>) = x, r(<x,y>) = y
3.4.-
Otro apartado importante al igual que la codificacin de pares de nmeros es la descomposicin de un nmero en un par de nmeros. Nosotros sabemos que un par de nmeros <x,y> = a. Con lo que tenemos que llegar a partir de a, a obtener los valores x e y. Si nos fijamos en la frmula descrita anteriormente, nos fijamos que x, sera el valor del exponente que acompaa al 2 al descomponer a+1 en factores primos, y el valor de y, sera a +1 y = ( x 1) / 2 2 A continuacin, un ejemplo de decodificacin <x,y> = 19 1.- Al valor a, le sumamos 1. 19+1 = 20 2.- Descomponemos en valores primos 20|2 20 = 22.5 y como x es el exponente que acompaa al 2 10|2 obtenemos que x = 2. 5|5 1|1 3.- Calculamos y 20 y = ( 2 1) / 2 = 4/2 = 2; y = 2 2 Con lo que obtenemos que x= 2, y = 2, y el par sera <2,2>,y podemos comprobarlo aplicando la frmula de codificacin <2,2> = 22(2.2 + 1) -1 = 19 A continuacin obtenemos funciones recursivas primitivas que codifican y decodifican sucesiones arbitrarias finitas de nmeros. El mtodo que usamos fue empleado por primera vez por Gdel, y depende de la descomposicin en nmeros primos de los enteros. Definimos el nmero de Gdel de la sucesin (a 1,,an) como el nmero [a1,,an] =
pia i
i= 1
As, el nmero de Gdel de la sucesin (3, 1, 5, 4, 6) es [3, 1, 5, 4, 6] = 23.31.55.74.116 Para cada n fijo, la funcin [a 1,,an] es claramente recursiva primitiva. Los nmeros de de Gdel satisfacen tambin la siguiente propiedad de unicidad. Teorema.- Si [a1,,an] = [b1,,bn], entonces ai = bi i = 1,,n
Este resultado es una consecuencia inmediata del teorema de unicidad de la factorizacin de enteros en productos de nmeros primos (teorema fundamental de la aritmtica). Sin embargo, notemos que [a1,,an] = [a1,,an, 0] ya que p n + 1 = 1. El mismo resultado se verifica para cualquier sucesin finita de ceros aadidos a la derecha de una sucesin finita. El nmero de Gdel 1 se considera como representacin de la sucesin vaca de longitud cero. Tambin hay que hacer notar que los ceros aadidos a l izquierda si cambian el nmero de Gdel de una sucesin. Por ejemplo, [2, 3] = 22.33 = 108 [2, 3, 0] = 22.33.50 = 108 [0, 2, 3] = 20.32.53 = 1125 Determinaremos a continuacin una funcin recursiva primitiva (x) i tal que si X = [a1,,an] entonces (x)i = ai. Esta funcin se define como
t+ 1 (x)i = Min { t x / ( p i |x) }
0
Notemos que (x)0 = 0. Usaremos tambin la funcin recursiva primitiva Lt(x) = Min { i x / (x)i 0 & (j x) (j i) v (x)j = 0 } De esta forma, si x = 20 = 22.30.51 = [2, 0 ,1], entonces (x)3 = 1, pero (x)4 = (x)5 = = (x)20 = 0. De esta forma, Lt(20) = 3. Tambin, Lt(0) = Lt(1) = 0. Si x>1 y Lt(x) = n, entonces pn divide a x pero ningn primo mayor que p n divide a x. Notemos tambin que Lt( [a1,,an] ) = n si y solo si an 0. En el siguiente toerma se resumen las propiedades fundamentales de estas funciones recursivas primitivas. Teorema (Teorema de las Sucesiones de Nmeros).ai a. ( [a1,,an] )i = 0 b. [(x)1,,(x)n] = x en otro caso si n Lt (x) si 1 i n
La decodificacin de una lista de nmeros a diferencia de un par de nmeros es ms simple, ya que se hara de la siguiente manera Suponemos el nmero 200 1.- Descomponemos en factores primos 200|2 100|2 200 = 23.52 50|2 25|5 5|5 1|1 (200)1 = 3 (200)2 = 0 (200)3 = 2 (200)m
m>3
Con lo que 200 = [3, 0, 2], y podemos comprobarlo usando la frmula de codificacin de listas de nmeros [3,0,2] = 23.30.52 = 200
Ejercicios 1.- Sea F(0) = 0, F(1) = 1, F(n + 2) = F(n+1) + F(n) (Sucesin de Fibonacci). Demostrar que F(n) es recursiva primitiva. 2.- Sea h1(x, 0) = f1(x) h2(x, 0) = f2(x) h1(x, t+1) = g1(x, h1(x, t), h2(x, t) ) h2(x, t+1) = g2(x, h1(x, t), h2(x, t) ) Demostrar que si f1, f2, g1, g2 pertenecen a una clase PRC , entonces h1, h2 tambin pertenecen a . 3.a) Sea f una funcin, definimos entonces f(0) = 1, f(n) = [f(0),,f(n-1)], si n 0. Supongamos que f(n) = g(f(n)) para todo n. Demostrar que si g es recursiva primitiva entonces tambin lo es f. b) Sea f(0) = 1, f(1) = 4, f(2) = 6, f(x+3) = f(x) + f(x+1)2 + f(x+2)3 Demostrar que f(x) es recursiva primitiva. ___________________
Ejercicios Resueltos 1.Definimos la funcin H(n), que agrupa la sucesin de Fibonacci que es un par de nmeros en uno slo H(n) = <F(n),F(n+1)> Con lo que ahora tenemos que demostrar que H(n) es primitiva recursiva. H(0) = <F(1),F(0)> = <1,0> = 1 H(n+1) = <F(n+2),F(n+1)> = <F(n+1)+F(n),F(n+1)> = = <l(H(n)) + r(H(n)), l(H(n))> Donde F(n+1) = l(H(n)) y F(n) = r(H(n)) Y como se puede ver, podemos obtener H(n+1) a partir de H(n) utilizando operaciones primitivas recursivas (<>,l,r,+), y H es primitiva recursiva. Con lo que por composicin F es primitiva recursiva.
3.b) Definimos una funcin que codifique la sucesin de nmeros como uno. Para ello definimos la funcin H(n) H(n) = [f(n), f(n+1), f(n+2)] Donde f(n+3) = (H(n))1, f(n+1) = (H(n))2 y f(n+2) = (H(n))3 H(0) = [1,4,6] = 21.34.56 = 2.531.250 H(n+1) = [f(n+1),f(n+2),f(n+3)] = = [f(n+1), f(n+2), f(n) + f(n+1)2 + f(n+2)3] = = [(H(n))2, (H(n))3, (H(n))1 + (((H(n))2)2 + (((H(n))3)3 ] Luego podemos obtener H(n+1) a partir de operaciones primitivas recursivas utilizando ([ ], ()i, + xn) y por tanto H es primitiva recursiva. Y f como se compone de funciones primitivas recursivas es primitiva recursiva. Las funciones que usa son H, ()i.