Está en la página 1de 22

Complejidad espacial

de algoritmos recursivos

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica


(UPV/EHU)

Complejidad espacial de algoritmos recursivos p.1/10

Arbol de recurrencia

B La ejecucin de un algoritmo recursivo podra llegar a


saturar la memoria disponible, en el mejor caso slo por el
espacio que cada llamada ocupa en la pila del sistema, y en
el peor caso tambin por la reservas dinmicas que cada
llamada podra estar acumulando.
B La evolucin de un algoritmo recursivo se representa
mediante lo que conocemos como rbol de recurrencia.

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica


(UPV/EHU)

Complejidad espacial de algoritmos recursivos p.2/10

Arbol de recurrencia
B Cada nodo del rbol representa una llamada a la funcin y
se etiqueta con los valores de los argumentos.
B El nodo raz es la primera llamada.
B Cada hoja representa un caso base o solucin trivial.
B Los nodos hijos representan las llamadas de la funcin a s
misma.
B La solucin para un cierto nodo se obtiene mediante
combinacin de las soluciones de sus nodos hijos.
B En ltima instancia, la solucin del nodo raz se obtiene
mediante una combinacin estructurada de soluciones
triviales.
Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica


(UPV/EHU)

Complejidad espacial de algoritmos recursivos p.3/10

Arbol de recurrencia
Ejemplo: serie de Fibonacci
3
fibonacci(4)
2

fibonacci(3)
1
fibonacci(2)
1
fibonacci(1)

Algoritmos y Estructuras de Datos

fibonacci(2)

1
1
fibonacci(1) fibonacci(1)

0
fibonacci(0)

0
fibonacci(0)

Departamento de Electricidad y Electr onica


(UPV/EHU)

Complejidad espacial de algoritmos recursivos p.4/10

Arbol de recurrencia
B El rbol de recurrencia es dinmico.
B Los nodos se crean y se destruyen a medida que se
efectan nuevas llamadas y se retorna de las mismas.
B En cada instante no existe ms que una parte de una rama
del rbol, formada por los nodos vivos (llamadas
acumuladas en la pila del sistema), de los cuales slo uno
es nodo activo: aqul que ocupa la cima de la pila, es decir,
la llamada que se est ejecutando en ese instante.
B El coste espacial viene determinado por el mximo nmero
de llamadas acumuladas en la pila del sistema durante la
ejecucin del algoritmo.
Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica


(UPV/EHU)

Complejidad espacial de algoritmos recursivos p.5/10

Arbol de recurrencia
Ejemplo: serie de Fibonacci
(*) fibonacci(4)
fibonacci(3)

Algoritmos y Estructuras de Datos

fibonacci(2)

Departamento de Electricidad y Electr onica


(UPV/EHU)

Complejidad espacial de algoritmos recursivos p.6/10

Arbol de recurrencia
Ejemplo: serie de Fibonacci
fibonacci(4)
(*) fibonacci(3)
fibonacci(2)

Algoritmos y Estructuras de Datos

fibonacci(2)

fibonacci(1)

Departamento de Electricidad y Electr onica


(UPV/EHU)

Complejidad espacial de algoritmos recursivos p.6/10

Arbol de recurrencia
Ejemplo: serie de Fibonacci
fibonacci(4)
fibonacci(3)
(*) fibonacci(2)
fibonacci(1)

Algoritmos y Estructuras de Datos

fibonacci(2)

fibonacci(1)

fibonacci(0)

Departamento de Electricidad y Electr onica


(UPV/EHU)

Complejidad espacial de algoritmos recursivos p.6/10

Arbol de recurrencia
Ejemplo: serie de Fibonacci
fibonacci(4)
fibonacci(3)
fibonacci(2)
(*) fibonacci(1)

fibonacci(2)

fibonacci(1)

fibonacci(0)

= 1

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica


(UPV/EHU)

Complejidad espacial de algoritmos recursivos p.6/10

Arbol de recurrencia
Ejemplo: serie de Fibonacci
fibonacci(4)
fibonacci(3)
fibonacci(2)
1

Algoritmos y Estructuras de Datos

fibonacci(2)

fibonacci(1)

(*) fibonacci(0)
= 0

Departamento de Electricidad y Electr onica


(UPV/EHU)

Complejidad espacial de algoritmos recursivos p.6/10

Arbol de recurrencia
Ejemplo: serie de Fibonacci
fibonacci(4)
fibonacci(3)
(*) fibonacci(2)
1 + 0 = 1

Algoritmos y Estructuras de Datos

fibonacci(2)

fibonacci(1)

Departamento de Electricidad y Electr onica


(UPV/EHU)

Complejidad espacial de algoritmos recursivos p.6/10

Arbol de recurrencia
Ejemplo: serie de Fibonacci
fibonacci(4)
fibonacci(3)
1

Algoritmos y Estructuras de Datos

fibonacci(2)

(*) fibonacci(1)
= 1

Departamento de Electricidad y Electr onica


(UPV/EHU)

Complejidad espacial de algoritmos recursivos p.6/10

Arbol de recurrencia
Ejemplo: serie de Fibonacci
fibonacci(4)
(*) fibonacci(3)
1 + 1 = 2

Algoritmos y Estructuras de Datos

fibonacci(2)

Departamento de Electricidad y Electr onica


(UPV/EHU)

Complejidad espacial de algoritmos recursivos p.6/10

Arbol de recurrencia
Ejemplo: serie de Fibonacci
fibonacci(4)
2

(*) fibonacci(2)
fibonacci(1)

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica


(UPV/EHU)

fibonacci(0)

Complejidad espacial de algoritmos recursivos p.6/10

Arbol de recurrencia
Ejemplo: serie de Fibonacci
fibonacci(4)
2

fibonacci(2)

(*) fibonacci(1)
= 1

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica


(UPV/EHU)

fibonacci(0)

Complejidad espacial de algoritmos recursivos p.6/10

Arbol de recurrencia
Ejemplo: serie de Fibonacci
fibonacci(4)
2

fibonacci(2)
1

Algoritmos y Estructuras de Datos

(*) fibonacci(0)
= 0

Departamento de Electricidad y Electr onica


(UPV/EHU)

Complejidad espacial de algoritmos recursivos p.6/10

Arbol de recurrencia
Ejemplo: serie de Fibonacci
fibonacci(4)
2

Algoritmos y Estructuras de Datos

(*) fibonacci(2)
1 + 0 = 1

Departamento de Electricidad y Electr onica


(UPV/EHU)

Complejidad espacial de algoritmos recursivos p.6/10

Arbol de recurrencia
Ejemplo: serie de Fibonacci
(*) fibonacci(4)
2 + 1 = 3

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica


(UPV/EHU)

Complejidad espacial de algoritmos recursivos p.6/10

Coste espacial de algoritmos recursivos


B En general:
m(n)

S(n) =

memoria_total(i, n)

i=1

donde:
. m(n): profundidad mxima del rbol de recurrencia
. memoria_total(i, n): memoria total (dinmica y en pila)
atribuible a la llamada que ocupa la posicin i en la rama
de profundidad mxima

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica


(UPV/EHU)

Complejidad espacial de algoritmos recursivos p.7/10

Coste espacial de algoritmos recursivos


B En el caso de la serie de Fibonacci, m(n) = n y
memoria_total(i, n) = C, de modo que:
Sf ibonacci (n) =

n
X

C = Cn (n)

i=1

B En general, habr que determinar m(n) y


memoria_total(i, n) y llevar a cabo la suma para la rama
ms profunda del rbol de recurrencia.

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica


(UPV/EHU)

Complejidad espacial de algoritmos recursivos p.8/10

Ejercicios
1. La funcin de Ackermann se define como sigue:

m+1
n=0

A(n, m) =
A(n 1, 1)
n 6= 0

A(n 1, A(n, m 1)) n 6= 0

m=0
m 6= 0

Obtngase el valor que retorna A(2, 1) y dibjese el rbol


de recurrencia correspondiente, indicando el orden en que
se efectan las llamadas.

Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica


(UPV/EHU)

Complejidad espacial de algoritmos recursivos p.9/10

Ejercicios
2. Escrbase una implementacin de A(m, n) en lenguaje C.
Se sugiere utilizar una estructura para almacenar los
valores ya calculados, de manera que no sea necesario
recalcularlos. Esa estructura podra consistir en un array de
n posiciones con los ltimos valores calculados en cada fila
i [0, n], as como el ndice de columna j a que
corresponden. Se sugiere tambin ir acumulando en una
variable global el nmero total de llamadas a la funcin.
Advertencia: no pasar de A(4, 1).
3. Cul es el coste espacial de A(n, m)? Para obtener ms
informacin consltense las entradas dedicadas a la funcin
de Ackermann en mathworld.wolfram.com y en
en.wikipedia.org.
Algoritmos y Estructuras de Datos

Departamento de Electricidad y Electr onica


(UPV/EHU)

Complejidad espacial de algoritmos recursivos p.10/10

También podría gustarte