Está en la página 1de 35

Capítulo 7

FUNCIONES RECURSIVAS

exp(x,y) = xy.

Dónde:
x0 = 1,
x1 = x,
x2 = x•x,



xy = x•x•...•x,

y veces

xy+1 = x•x• ... •x•x = x•xy

y+1 veces

Primera y última ecuaciones:


1) x0 = 1,
2) xy+1 = x•xy,

son suficientes para evaluar toda la función.

(eq. 2) 53=52+1 =5•52 (x=5 y y=2),


(eq. 2) 52=51+1 =5•51 (x=5 y y=1),
(eq. 2) 51=50+1 =5•50 (x=5 y y=0),
(eq. 1) 50=1

Entonces:

53 = 5•52 = 5•5•51 = 5•5•5•50 = 5•5•5•1


1
Capítulo 7

Recusión = Descomponer una función en sus


componentes básicos.

Recursión = Reducir una función a sus funciones


constitutivas.

Recursión = Eliminar una función a favor de sus


funciones constitutivas.

Ejemplo:

53 = 5•5•5•1 = 1 + 1 + . . . + 1

125 “1”s

Reduce Reduce
Exp Producto Suma

Recursión: Re-Escribir una expresión

Expresiones más simples.

2
Capítulo 7

FUNCIÓN SUCESOR

Recordemos que la “SUMA” no es una operación


fundamental: Puede descomponerse en “Quitar y Poner”.

Definamos como básico:

número cero ‘0’


función sucesor ‘S’ (1 argumento)

s:

0
0 1
1 2
2 3
• •
• •
• •
n n+1

tomando en cuenta ‘+’ y ‘s’ :

x+0=x x + s(y) = s(x+y)

Recordar:

‘+’ función de dos argumentos

‘s’ función de un argumento


3
Capítulo 7

RELACION ENTRE FUNCIONES “+” y “S”

+ x+y
y• • •
s• x• x+s(y) •s
• • •
s(y) +

x + s(y) = s(x + y)

La ley de la conservación de las


CANICAS:

x canicas y canicas s(y)canicas x+s(y)

@ @ @ @ @ @ @
@ @ @ @ @ @ @ @
@ @ @ @ @

x=3 y=4 s(y) = 5 x + s(y) = 8

x+s(y) s(x + y)

@ @ @ @ @
@ @ @ = @ @ @ @
@ @ @ @

x + s(y) = 8 s(x + y) = 8

4
Capítulo 7

Ejemplo Evaluar 2 + 3 : s(s(0))) + s(s(s(0)))

(eq. 1) x+0=x
(eq. 2) x + s(y) = s(x + y)

x = s(s(0)) = ss0
y = s(s(s(0))) = sss0
s(y) = s(s(s(s(0)))) = ssss0

(eq. 2) ss0 + sss0 = s(ss0 + ss0)

más simple que

(eq.2) ss0 + ss0 = s (ss0 + so)

(eq. 2) ss0 + s0 = s (ss0 + 0)

(eq. 1) ss0 + 0 = ss0

Reescribimos Top-Down:

ss0 + sss0 = s(ss0 + ss0)


Recordar ss0 + ss0 = s(ss0 + s0) ⇒ s(s(ss0 + s0))
⇒ s(s(s(ss0 + 0)))
⇒ s(s(s(ss0 )))
⇒ sssss0

ss0 + sss0 = sssss0

5
Capítulo 7

Hemos establecido claramente que toda expresión

puede ser reducida eliminando los símbolos de las

funciones compuestas en favor de las funciones simples,

tan solo conociendo la 1a. y la última ecuación de la

reducción.

Ejemplo: En ss0 + sss0 sssss0

eliminando reescribiendo

1a. x + 0 = 0
última x + s(y) = s(x + y)

Generalizando: ¿Podemos evaluar todas las


funciones de esta forma?

CLASE DE FUNCIONES RECURSIVAS PRIMITIVAS

1) Funciones Básicas (Unidades Atómicas)


2) Operaciones de Construcción:
• Composición
• Recursión Primitiva
3) Nada pertenece a la clase si no es una función
primitiva o construída por medio de composición o
recursión.

6
Capítulo 7

Conjunto Básico de Funciones Recursivas Primitivas

1) Función Cero “z” : z(x) = 0


2) Función Sucesor “s” : s(0) = 1, s(1) = 2 ...
3) Funciones Identidad Varias: n

id 11 (x) = x

id 12 (x,y) = x, id 22 (x,y) = y

id 13 (x,y,z) = x, id 23 (x,y,z) = y, id 33 (x,y,z) = z

Proyecciones:

y •(x,y) id 12 (x,y) = proyx (x,y) = x


id 22 (x,y) = proyy (x,y) = y

x

Para un espacio de orden n:

id ni ( x1, ..., xi, ... xn ) = xi

Las funciones identidad varias pueden ser ordenadas

id, id 12 , id 22 , id 13 , id 23 , id 33 ...

7
Capítulo 7

Construcción de Funciones

Composición: (Cn)

g f
• •
x• •g(x) •f(g(x))


h

f (g(x)) = h(x)

Sea F es el conjunto de todas las funciones, definamos


la función aridad de una función “a”

a: F N

dónde si f ∈ F , a(f) = r dónde r es el número de


elementos (componentes) de los argumentos de f.

¿Hay alguna relación entre a(n), a(g) y a(f)?

8
Capítulo 7

Composición:

Considere: A: N x N, B: N x N y C:N

Considere Funciones:

h:N x N N g1, g2, g3:N x N N y f: N x N x N N

P1
f
g1 0
1
g2 P2 2
.
g3 .
.
P3 n

h(x,y) = f(g1(x,y), g2(x,y), g3(x,y))

a(h) = a(gi) a(f) = número de g´s

Generalizando:

h(x1, ..., xn) = f(g1(x1, ... xn), ..., gn (x1, ..., xn))

Abreviando:

h = Cn[f, g1, ..., gm] Cn = composición

9
Capítulo 7

Ejemplos de Composición

1) f = s

g = id 33

h(x1, x2, x3) = s(id 33 (x1, x2, x3)) = x3 + 1

h = Cn[s, id 33 ]

2) Calcula h(x) = x + 2

f =s
g=s
h(x) = s(s(x)) = Cn[s, s] (x)

h = Cn[s, s] nombre argumento


de
funció
n

3) Calcula h(x) = x + 3

f=s
g = Cn[s, s]
h(x) = s(Cn[s, s](x))

h = Cn[s, Cn[s, s]]

10
Capítulo 7

Construcción de funciones

Recursión Primitiva: (Pr)

Ecuación Inicial: h(x, o) = f(x)

h

Ÿ

Ÿ
f

Última Ecuación: h(x, s(y)) = g (x, y, h(x, y))

h

xŸ •h(x, y)
h
yŸ •

s(y)Ÿ •

g

Ciclo de Recursión

h = Pr [f, g]

11
Capítulo 7

Otra forma de ver la recursividad:

h

h(x,s(y))=g(x,y,h(x,y))
g •

(x,s(y)) h(x,y)
h

(x,y)

h

h(x,s(0))=g(x,y,h(x,0))
g •

(x,s(0)) h h(x,0)=f(x)

x
(x,0)

f

12
Capítulo 7

Ejemplos de recursión primitiva

Suma:

Sum(x,0) = x
Sum(x,s(y)) = s(sum(x,y))

(Pr )
h (x,0) = f(x)
h(x,s(y)) = g(x,y,h(x,y)

n = sum: El problema es construir “sum” para lo


cual hay que encontrar las funciones
“f” y “g”

1) f = id 11 ê f(x) = x; “condición inicial”

2) sum(x,s(y)) = s(id 33 ( -, -, sum(x,y)))

g = Cn[s, id 33 ]

sum = Pr [id 11 ,Cn[s, id 33 ]]

13
Capítulo 7

“SUM”

o• 2
sum •x sum(x, o) = id(x) = x
h
1
x• •
id

f = id

x + s(y) = s(x + y)

sum

xŸ •x + y
sum
yŸ •

s(y)=y+1Ÿ • x + s(y)
1

2
C n s ,id[ 3
3 ]•

mero de argumento 3

g = Cn[s,id 33 ] = s(id 33 ( _, _, sum(x,y)))

x, y son argumentos vacuos de g (es este caso)

∴ sum = Pr [id, Cn[s,id 33 ]]


14
Capítulo 7

prod

1) prod (x, 0) = 0

prod
0• 2
• •0
1
x•
z

f=z función cero z(0) =0, z(1) =0, ...

2) prod (x,s(y)) = x + prod(x,y)

prod

xŸ • x•y
prod
yŸ •

s(y) = y+1Ÿ • x•(y + 1)


1
sum(x,x•y)
2 •
3

g = Cn[sum, id 13 , id 33 ]

prod = Pr [z, Cn [sum, id 13 , id 33 ]]

15
Capítulo 7

Exp: Xy

1) x0 = 1
2) xy+1 = x• xy

1) Exp (x,0) = 1

0• Exp •1

x•

f(x) =1 f = Cn[s,z] ⇒ f(x) = s(z(x))

2)
exp

xŸ • xy
exp
yŸ •

s(y) = y+1Ÿ • xy+1

prod(x,xy)

g = Cn[prod, id 13 , id 33 ]

Exp = Pr[Cn[s, z], Cn[prod, id 13 , id 33 ]]

16
Capítulo 7

Super Exponenciación

x
x y veces
x
Sup (x,y) = x

Sup (x,0) = 1

Sup (x, y + 1) = xsup (x, y)

1) Sup (x, 0) = 1

0• sup •1 f(x) = 1

x•

f

f = Cn[s,z]

f(x) = s(z(x))

17
Capítulo 7

2) Sup(x, y +1) = xsup(x,y)

sup

xŸ • sup(x,y)
sup
yŸ •

s(y) Ÿ • sup(x,s(y)


Exp(x,sup(x,y))

g = Cn[Exp, id 13 , id 33 ]

Sup = Pr[Cn[s, z], Cn[Exp, id 13 , id 33 ]]

18
Capítulo 7

Fact

1) 0! = 1 fact(0) = 1
2) s(y)! = s(y)•y! fact(s(y)) = s(y)•fact(y)

fact

0• •1

f = s(0) el único argumento de f es cero

fact

yŸ fact • y!

s(y) Ÿ •s(y)!


prod(s(id 12 ), id 22 )

g = Cn[prod, Cn[s, id 12 ], id 22 ]

fact = Pr [s(0), Cn[prod, Cn[s, id 12 ], id 22 ]]

Formato (eliminando argumento “x”) h = fact


h(0) = f(0) dónde f = s
h(s(y)) = g(y, h(g)) dónde g = prod (s(y), h(y))

19
Capítulo 7

Formato General de Pr

h(x1, ..., xn,0) = f(x1, ..., xn)

h(x1, ..., xn,s(y)) = g(x1, ... xn, y, h(x1, ... xn, y))

1)
h

x1• •
.
.
xn•

0• f

a(h) = n+1 n 0
a(f) = n

2) h

x1• • h(x1,...,xn,y)
.
.
xn•
y• • h(x1,...,xn,s(y))
• h
s(y) •

g

20
Capítulo 7

Funciones Recursivas son Abacus

Si x ∈ R entonces x ∈ A

x⊆A

∀x R(x) A(x)

La Historia Hasta Ahora

u h

21
Capítulo 7

Método para comprobar que

R ⊆ A

a) Establecer programas Abacus para las funciones


recursivas básicas

1) z(x) = 0

2) s(x) = x + 1

3) id 11 , id 12 , id 22 , ...

b) Establecer programa Abacus que implementa:

1) Composición
2) Recursión

Método:

Dada una función recursiva primitiva sustituir cada


término constituyente por su programa abacus respectivo.

22
Capítulo 7

PROGRAMAS ABACUS DE FUNCIONES BÁSICAS

Formato de argumentos y valor de la función

R1 R2 . . . Rn Rn+1

n argumentos valor de la función

1) Los registros R1 ... Rn no se modifican.

2) Al inicio [Rm] = 0 para todo m > n.

3) Al final [Rn+1] = valor función

1) Función z z(1) = 0, z(2) = 0 ... z(n) = 0

El programa que no hace nada para


evaluar z(x) = 0.

Al inicio y al final

[1] = x
[2] = 0

23
Capítulo 7

PROGRAMAS ABACUS DE FUNCIONES BÁSICAS

2) s(x) = s+1

Inicialmente [1] = x
[2] = 0

al final: [2] = s(x)

[1] + [2] 2 copia el contenido de R1 a R2

2+ incrementa en 1 el cont. de R2

3) id nm

Inicialmente [1] = x1, . . . , [n] = xn y [n + 1] = 0

Finalmente [n + 1] = xm, 1≤m≤n

[m] + [n + 1] n+1 copia el cont. de Rm a Rn + 1

24
Capítulo 7

COMPOSICION DE FUNCIONES

1) Composición: h = Cn[f, g1, . . . gm]

n = a(h) = a(gi) 1≤i≤m

dados m + 1 programas

f(ŠŠ1‹‹, ..., Š m‹‹) m+1 g1(ŠŠ1‹‹, ..., Š n‹‹) n+1 ... gm (ŠŠ1‹‹, ..., Š n‹‹) n+1

Queremos construir un solo programa:

f(g1 (ŠŠ1‹‹, ..., Š n‹‹), ..., gm (ŠŠ1‹‹, ..., Š n‹‹)) n+1

1) Considere que el programa buscado tiene n


argumentos.

2) Considere que un valor intermedio será necesario para


almacenar el valor de cada g

3) Considere que los argumentos se encuentran inicial y


finalmente en el formato estándard

4) La composición requiere de n + m registros no usados


por ninguno de los m + 1 programas

25
Capítulo 7

Composición n = 3, m = 4

(1) g1 ([1]], [2]], [3]]) P1 g2 ([1]], [2]], [3]]) P2

[1]] [2]] [3]] [1]] [2]] [3]] es posible

paralelizar
• •
g1 g2

P1 P2

2) Vacia n registros

posible [1]] q1 -m e

paralelizar [2]] q2
[3]] q3 +n

s[n]] = 0 [m]] + [n]] n


[m]] = 0

3) Calcula f([P1] , [P2] )

[P1] + [1]] 1 [1]] [2]]


Es posible
[P2] + [2]] 2 paralelizar •
f
[3]

4) Finaliza: (1) [3]] 4 (Es posible


(2) [q1] 1, [q2] 2, [q3] 3 paralelizar)

f (g1([1], [2], [3]), g2([1], [2], [3])) 4

26
Capítulo 7

Programa abacus para recursión primitiva

h

x• 0• •


f
h
x• • • h(x, y)
h
y• • •h(x,s(y))

s(y) • •
g

h = Pr[f, g]

Dados:
f([x]) 2 g([1], [2], [3]) 4

Obtener:
h ([1], [2]) 3

Inicialmente:
[1] = x, [2] = y [3] = [4] = ... = 0

usamos Rp, no usado en f y g, como contador.

27
Capítulo 7

¿Cómo Funciona la Recursión?

h

x• 0• •


f

h
x• • • h(x, y)
h
y• • •h(x,s(y))

s(y) • •
g

28
Capítulo 7

Computo de h:
x, y

p=y, y=0

f(x) = h(x,0)

si
p=0 h(x, 0) = f(x)
no

g(x, 0, h(x, 0)) = h(x, 1) g(x,1,h(x,1)) = h(x, 2)

y = y+1 etc

p=p-1

p veces si no
h(x, y ) p=0

29
Capítulo 7

Inicialmente [1] = x, [2] = y, [3] = 0

Programa 6.2 vaciar [2] en P p = y, y = 0

Programa 6.2 f([1]) 2 f(x) = h(x,0) Registro 2

Programa 6.2 vacia [2] en 3 h(x, 0) R3

e
p- termina

g([1],[2],[3]) 4 g(x,y,h(x,y)) = h(x,s(y)) R4

2+ y = y + 1 (para 2o. Argumento)

3- vacia R3

vacia R4 en R3 h(x,s(y))anterior h(x,y)actual

termina [1]= x [2] = y [3] = h(x,y)

30
Capítulo 7

MINIMIZACION

Abacus ≥ PR
funciones recursivas

miniminización
Funciones
-básicas recursivas
- Composición primitivas
- Recursivas
Primitivas

Hay mas programas Abacus que funciones recursivas


primitivas

Minimización h

x1• •y
.
.
. •
xn• f
y• •0

la y más pequeña para la cual f(x1,...,xn,y) = 0


h(x1, ..., xn) =
indefinido si no existe y tal que f(x1,...,xn,y) = 0

h = Mn[f]

31
Capítulo 7

Considere Mn[sum]

Sum Pr[id 11 , Cn[s, id 33 ]]

Número de argumentos de sum = 2

h = Mn[f] si f = sum

f(x,y) = sum(x,y) = 0 si y sólo si x=y=0

h = Mn[sum](0) = 0 dado sum(0, 0) = 0

Mn[sum]

0• •0
1•
2•
3•
.
.
.
etc.

Mn Puede producir funciones parciales

32
Capítulo 7

Mn[Prod]

prod(x, y) = x • y

prod(x, y) = 0 si x = 0 & y = 0
o x≠0 & y=0
o x=0 & y≠0

Mn[prod](x) = 0 (x•0 = 0)

h = Mn[prod]

0• •0
1•
2•
3•
.
.
.

33
Capítulo 7

En general

Mn[f](x1,...,xn) = y

Si f(x1,...,xn,y) = 0

& f(x1,...,xn, t) es definida y positiva


para t < y

Ejemplo

f(0) = N
f(1) = 0 y = 1 pero no existe t f(t)

0• •0

t

1•

Mn[f] no está definida


(El único t < y es t = 0, pero f(0) = φ)

34
Capítulo 7

Abacus para Mn

y si f(x1,...,xn, y) = 0 cuando
Mn[f] (x1, ..., xn) exista f(x1,...,xn,t) & ∀t, t<y
Si no existe y Mn[f](x1,...,xn) = φ

* Minimización de funciones totales y pariciales

Abacus de Mn, para n = 1, (a(f) =2)

f([1], [2]) = ?

Mn[f] R3

Inicialmente:

[1] = x [2] = 0 [3] = 0

Secuencia:
f(x,0) 3
f([1],[2]) 3 f(x,1) 3 ≠ 0
f(x,2) 3

3- 3- 2+ f(x,y) = 0 [2] = y
e
e Mn[f](x) = [2]

35

También podría gustarte