Está en la página 1de 13

3.

Definiciones Recursivas

Instituto de Computacin

Lgica

Recursin
Dado un conjunto inductivo, sabemos exactamente cmo se construyen sus elementos. Esta informacin sirve para:
Probar propiedades de sus elementos (induccin) Definir funciones sobre sus elementos (recursin)

Instituto de Computacin

Lgica

Qu es una funcin?
Una funcin es una relacin que:
Asocia efectivamente un nico elemento del codominio a cada elemento del dominio.

Una funcin es un mecanismo de cmputo tal que:


Cada vez que se le da un valor del dominio como entrada devuelve efectivamente el mismo valor del codominio.

Efectivamente significa:
Para cualquier elemento del dominio hay una imagen.
El cmputo termina para cualquier elemento del dominio.

Ningn elemento del dominio tienen ms de una imagen.


Instituto de Computacin Lgica

Recursin
Ejemplo: definir una funcin f que calcula la cantidad de smbolos de una palabra de {a,b}* Para asegurarse de cubrir todo el dominio se puede explotar conocimiento de cmo se generan los objetos de {a,b}*:
i. f()=0 ii. f(aw)= 1+ f(w) iii.f(bw) = 1+ f(w)

Instituto de Computacin

Lgica

Es fcil definir No Funciones.


Dado Z definido inductivamente como:
0Z n+1Z n1Z Conclusin: Conviene seguir un esquema de definicin que garantice que se define una funcin.

f: Z N

f(0)=0 f(n+1)=f(n)+1 f(n-1)=f(n)+1 Tiene ms de un valor

Cunto vale f(1)?


f(0)=0 f(n+1)=f(n+2) Calcular f(1) necesita f(2),f(3), f(n-1)=f(n-2) Nunca se termina de calcular.
Instituto de Computacin Lgica

Esquema de Recursin Primitiva para N



N definido inductivamente por:


i. 0 N ii. Si n N entonces S(n) N

Esquema de Recursin Primitiva para N (informal)


Sea B un conjunto cualquiera. Entonces un conjunto de ecuaciones como sigue basta para definir una nica funcin F: N B

i. F(0) = .... ii. F(S(n)) = ..F(n)..n..


Instituto de Computacin Lgica

Aplicacin del Esquema de Recursin


Esquema de recursin primitiva para N:
Mtodo que se aplica para definir funciones sobre objetos de N Usa el conocimiento de cmo se generan los objetos de N Justificacin: Recordar que al dar una definicin inductiva decimos que la nica forma de construir los objetos del conjunto es mediante las clusulas dadas

Aplicaciones:

Definir + ; x ; 1kn k ; kn, para k,n N ; fact : NN


Lgica

Instituto de Computacin

Esquema de Recursin Primitiva para un Conjunto Inductivo


Sea A un conjunto definido inductivamente Para definir una funcin f :AB, alcanza con definir a f mediante ecuaciones que determinen:
El valor de f para los objetos de A obtenidos de aplicar clusulas base El valor de f para los objetos de A obtenidos de aplicar clusulas inductivas, utilizando el valor de f en el (los) objeto(s) anterior(es) y tambin el (los) objeto(s) anterior(es) (llamadas recursivas)
Instituto de Computacin Lgica

Esquema de Recursin Primitiva para *


Sea B un conjunto arbitrario. Entonces un conjunto de ecuaciones como sigue basta para definir una nica funcin F: *B i. F() = .... ii. F(xw) = ..F(w)..w..x.. Aplicaciones:
Definir longitud: * N ; inversa: * *; palindromo: * Bool ; espejo: * *.....
Lgica

Instituto de Computacin

Esquema de Recursin Primitiva para L1


Sea B un conjunto arbitrario. Entonces un conjunto de ecuaciones como sigue basta para definir una nica funcin F: L1B i. F(a) = .... ii. F(bwb) = ..F(w)..w..

Instituto de Computacin

Lgica

Esquema de Recursin Primitiva para N -Formalizacin


H) Sea B un conjunto y sean


f0 B fs: N x BB

T) Entonces existe una nica funcin F: N B tal que:


i. F(0) = f0 ii. F(S(n)) = fs(n,F(n))

Instituto de Computacin

Lgica

Esquema de Recursin Primitiva -FormalizacinEjemplo: fact(0) = 1 fact(S(n)) = S(n) x fact(n) f0 = 1 ( B) fs(n,r) = S(n) x r (N x BB)

Instituto de Computacin

Lgica

Esquema de Recursin Primitiva -FormalizacinEsquema de Recursin Primitiva para * Sea B un conjunto y sean f B f1: x * x BB

Entonces existe una nica funcin F: * B tal que: i. F() = f ii. F(xw) = f1(x,w,F(w)) Ejemplo: espejo() = f = 1 ( *) espejo(xw) = x espejo(w) x f1(x,w,r) = xrx ( x *x * *)

Instituto de Computacin

Lgica

Otros Esquemas de Recursin


Dado A definido inductivamente. Para definir f :A se debe:
definir f para los objetos base de A definir f en los objetos obtenidos de aplicar clusulas inductivas usando el valor de f en el objeto inmediatamente anterior

(recursin primitiva) Se puede cambiar el segundo punto y poner:


definir f en los objetos obtenidos de aplicar clusulas inductivas usando el valor de f objetos anteriores

Instituto de Computacin

Lgica

Ejemplo de Recursin no Primitiva en N


fib : N N fib (0) = 1 fib (1) = 1 fib (n+2) = fib(n) + fib(n+1)

Para que estas ecuaciones definan una funcin hay que probar que:
son exahustivas no hay superposicin de casos la definicin termina
Instituto de Computacin Lgica

Ejemplo de Recursin no Primitiva en N


fib : N N fib (0) = 1 fib (1) = 1 fib (n+2) = fib(n) + fib(n+1)

Exhaustividad: ver que todo natural es 0, 1 o de la forma n+2 Superposicin: ver que 0 1 n+2 Terminacin: 1) ver que para todo nN: n < n+2 y

n + 1 < n+2
2) en N toda cadena decreciente segn la relacin < tiene mnimo (el orden < de N es bien fundado).
Instituto de Computacin Lgica

Ejemplo de Recursin no Primitiva en N


div : NxN+ div(n, m) = 0 div(n, m) = div(n-m, m)+1

si n < m si m n

Exhaustividad: ver que para todos n, que n < m o m n.

m se cumple

Superposicin: ver que para todos n, m no puede pasar que n < m y m n. Terminacin: ver que para todos n, m , si 0 < m n entonces n-m < n y ver que < es bien fundado en N
Instituto de Computacin Lgica

Definicin inductiva de NxN i. (0,0) NxN ii. Si (n,0) NxN entonces (n+1,0) NxN iii. Si (n, m) NxN entonces (n,m+1) NxN Principio de induccin primitiva para NxN Sea P una propiedad que cumple:
P(0,0) Si P(n,0) entonces P(n+1,0) Si P(n, m) entonces P(n,m+1)

Entonces, P(n,m) para todo (n, m) NxN


Instituto de Computacin Lgica

Esquema de Recursin Primitiva para NxN


Sea B un conjunto y H0 , H1 y H2 tales que:
H0 B H1 : N x B B H2, : NxN x B B

Entonces existe una nica funcin f : NxN B tal que:


f (0,0) = H0 f (n+1,0) = H1(n, f (n,0)) f (n,m+1) = H2(n, m, f (n,m))

Ejemplo: prod : NxN (el producto de dos nmeros Naturales)


Instituto de Computacin Lgica

Ejemplos de Recursin no Primitiva en NxN


mcd : N+xN+ + mcd(n, m) = n si n = m mcd(n, m) = mcd (n,m-n) si n < m mcd(n, m) = mcd(n-m, m) si m < n
Exhaustividad: ??? Superposicin: ??? Terminacin: ?? EJERCICIO!!!
Instituto de Computacin Lgica

10

Ms ejemplos de Recursin en NxN


suma : NxN suma(n, 0) = n suma (n, m+1) = suma (n, m) +1 Correccin? resta : NxNN resta (0, n) = 0 resta (n+1, 0) = n +1 resta (n+1, m+1) = ??? Correccin?
Instituto de Computacin Lgica

Definiciones Inductivas Libres


Definimos Z inductivamente con las siguientes clusulas:
i. 0 Z ii. si x Z entonces x+1 Z iii. si x Z entonces x -1 Z

Cmo justificar que 3 Z?


0 ii 1 ii 2 ii 3 0 iii -1 iii -2 ii -1 ii 0 ii 1 ii 2 ii 3 0 ii 1 ii 2 ii 3 ii 4 ii 5 iii 4 iii 3
Instituto de Computacin Lgica

11

Definiciones Inductivas Libres (cont.)


Definicin: [definicin inductiva libre] Una definicin inductiva de un conjunto es libre cuando cada elemento del conjunto admite una sola secuencia de formacin. Las definiciones que no son libres traen problemas para definir funciones usando esquemas de recursin Ejemplo: f : Z Z definida por

f (0) = 1
f (n+1) = 2 + f (n) f (n -1) = 3 + f (n)

Cunto vale f (3)?


Instituto de Computacin Lgica

Definiciones no Libres: moraleja


Las definiciones inductivas no libres son problemticas para definir funciones usando el esquema de recursin primitiva.
Igual se pueden usar, pero hay que verificar que se est definiendo una funcin (o sea, un nico resultado para cada elemento del conjunto)

No hay problemas con el principio de induccin (salvo que probamos ms de una vez la misma cosa)
Instituto de Computacin Lgica

12

Definiciones Recursivas: moraleja


Sea A un conjunto definido inductivamente
Si la definicin de A es libre entonces se puede aplicar el esquema de recursin primitiva sin problemas Si se quieren usar otros esquemas entonces hay que probar exhaustividad, no superposicin y terminacin exhaustividad, Si la definicin de A no es libre, no alcanza el esquema libre de recursin, dado que hay superposicin. Hay que probar unicidad de la definicin (los casos repetidos dan el mismo resultado)
Instituto de Computacin Lgica

13