complejidad_3 ejercicios

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

description

llllllllllkkkkkkkkkkkk

Transcript of complejidad_3 ejercicios

  • Complejidad espacialde algoritmos recursivos

    Algoritmos y Estructuras de Datos Departamento de Electricidad y Electronica (UPV/EHU) Complejidad espacial de algoritmos recursivos p.1/10

  • Arbol de recurrencia

    B La ejecucin de un algoritmo recursivo podra llegar asaturar la memoria disponible, en el mejor caso slo por elespacio que cada llamada ocupa en la pila del sistema, y enel peor caso tambin por la reservas dinmicas que cadallamada podra estar acumulando.

    B La evolucin de un algoritmo recursivo se representamediante lo que conocemos como rbol de recurrencia.

    Algoritmos y Estructuras de Datos Departamento de Electricidad y Electronica (UPV/EHU) Complejidad espacial de algoritmos recursivos p.2/10

  • Arbol de recurrencia

    B Cada nodo del rbol representa una llamada a la funcin yse 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 smisma.

    B La solucin para un cierto nodo se obtiene mediantecombinacin de las soluciones de sus nodos hijos.

    B En ltima instancia, la solucin del nodo raz se obtienemediante una combinacin estructurada de solucionestriviales.

    Algoritmos y Estructuras de Datos Departamento de Electricidad y Electronica (UPV/EHU) Complejidad espacial de algoritmos recursivos p.3/10

  • Arbol de recurrencia

    Ejemplo: serie de Fibonacci

    fibonacci(2)

    fibonacci(1) fibonacci(0)

    fibonacci(3)

    fibonacci(1)

    2

    1

    1

    01

    1 0

    3

    1

    fibonacci(4)

    fibonacci(2)

    fibonacci(1) fibonacci(0)

    Algoritmos y Estructuras de Datos Departamento de Electricidad y Electronica (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 seefectan nuevas llamadas y se retorna de las mismas.

    B En cada instante no existe ms que una parte de una ramadel rbol, formada por los nodos vivos (llamadasacumuladas en la pila del sistema), de los cuales slo unoes 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 nmerode llamadas acumuladas en la pila del sistema durante laejecucin del algoritmo.

    Algoritmos y Estructuras de Datos Departamento de Electricidad y Electronica (UPV/EHU) Complejidad espacial de algoritmos recursivos p.5/10

  • Arbol de recurrencia

    Ejemplo: serie de Fibonaccifibonacci(4)

    fibonacci(3) fibonacci(2)

    (*)

    Algoritmos y Estructuras de Datos Departamento de Electricidad y Electronica (UPV/EHU) Complejidad espacial de algoritmos recursivos p.6/10

  • Arbol de recurrencia

    Ejemplo: serie de Fibonacci

    fibonacci(1)

    fibonacci(4)

    fibonacci(3) fibonacci(2)(*)

    fibonacci(2)

    Algoritmos y Estructuras de Datos Departamento de Electricidad y Electronica (UPV/EHU) Complejidad espacial de algoritmos recursivos p.6/10

  • Arbol de recurrencia

    Ejemplo: serie de Fibonacci

    fibonacci(0)

    fibonacci(4)

    fibonacci(3) fibonacci(2)

    fibonacci(2) fibonacci(1)(*)

    fibonacci(1)

    Algoritmos y Estructuras de Datos Departamento de Electricidad y Electronica (UPV/EHU) Complejidad espacial de algoritmos recursivos p.6/10

  • Arbol de recurrencia

    Ejemplo: serie de Fibonacci

    = 1

    fibonacci(4)

    fibonacci(3) fibonacci(2)

    fibonacci(2) fibonacci(1)

    fibonacci(1) fibonacci(0)(*)

    Algoritmos y Estructuras de Datos Departamento de Electricidad y Electronica (UPV/EHU) Complejidad espacial de algoritmos recursivos p.6/10

  • Arbol de recurrencia

    Ejemplo: serie de Fibonacci

    1

    fibonacci(4)

    fibonacci(3) fibonacci(2)

    fibonacci(2) fibonacci(1)

    fibonacci(0)(*)= 0

    Algoritmos y Estructuras de Datos Departamento de Electricidad y Electronica (UPV/EHU) Complejidad espacial de algoritmos recursivos p.6/10

  • Arbol de recurrencia

    Ejemplo: serie de Fibonacci

    1 + 0 = 1

    fibonacci(4)

    fibonacci(3) fibonacci(2)

    fibonacci(2) fibonacci(1)(*)

    Algoritmos y Estructuras de Datos Departamento de Electricidad y Electronica (UPV/EHU) Complejidad espacial de algoritmos recursivos p.6/10

  • Arbol de recurrencia

    Ejemplo: serie de Fibonacci

    = 1

    fibonacci(4)

    fibonacci(3) fibonacci(2)

    fibonacci(1)(*)1

    Algoritmos y Estructuras de Datos Departamento de Electricidad y Electronica (UPV/EHU) Complejidad espacial de algoritmos recursivos p.6/10

  • Arbol de recurrencia

    Ejemplo: serie de Fibonacci

    1 + 1 = 2

    fibonacci(4)

    fibonacci(3) fibonacci(2)(*)

    Algoritmos y Estructuras de Datos Departamento de Electricidad y Electronica (UPV/EHU) Complejidad espacial de algoritmos recursivos p.6/10

  • Arbol de recurrencia

    Ejemplo: serie de Fibonacci

    fibonacci(0)

    fibonacci(4)

    fibonacci(2)(*)2

    fibonacci(1)

    Algoritmos y Estructuras de Datos Departamento de Electricidad y Electronica (UPV/EHU) Complejidad espacial de algoritmos recursivos p.6/10

  • Arbol de recurrencia

    Ejemplo: serie de Fibonacci

    = 1

    fibonacci(4)

    fibonacci(2)2

    fibonacci(1) fibonacci(0)(*)

    Algoritmos y Estructuras de Datos Departamento de Electricidad y Electronica (UPV/EHU) Complejidad espacial de algoritmos recursivos p.6/10

  • Arbol de recurrencia

    Ejemplo: serie de Fibonacci

    1

    fibonacci(4)

    fibonacci(2)2

    fibonacci(0)(*)= 0

    Algoritmos y Estructuras de Datos Departamento de Electricidad y Electronica (UPV/EHU) Complejidad espacial de algoritmos recursivos p.6/10

  • Arbol de recurrencia

    Ejemplo: serie de Fibonacci

    1 + 0 = 1

    fibonacci(4)

    fibonacci(2)2 (*)

    Algoritmos y Estructuras de Datos Departamento de Electricidad y Electronica (UPV/EHU) Complejidad espacial de algoritmos recursivos p.6/10

  • Arbol de recurrencia

    Ejemplo: serie de Fibonaccifibonacci(4)(*)2 + 1 = 3

    Algoritmos y Estructuras de Datos Departamento de Electricidad y Electronica (UPV/EHU) Complejidad espacial de algoritmos recursivos p.6/10

  • Coste espacial de algoritmos recursivos

    B En general:

    S(n) =

    m(n)

    i=1

    memoria_total(i, n)

    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 ramade profundidad mxima

    Algoritmos y Estructuras de Datos Departamento de Electricidad y Electronica (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 ymemoria_total(i, n) = C, de modo que:

    Sfibonacci(n) =

    n

    i=1

    C = Cn (n)

    B En general, habr que determinar m(n) ymemoria_total(i, n) y llevar a cabo la suma para la ramams profunda del rbol de recurrencia.

    Algoritmos y Estructuras de Datos Departamento de Electricidad y Electronica (UPV/EHU) Complejidad espacial de algoritmos recursivos p.8/10

  • Ejercicios

    1. La funcin de Ackermann se define como sigue:

    A(n,m) =

    m + 1 n = 0

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

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

    Obtngase el valor que retorna A(2, 1) y dibjese el rbolde recurrencia correspondiente, indicando el orden en quese efectan las llamadas.

    Algoritmos y Estructuras de Datos Departamento de Electricidad y Electronica (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 losvalores ya calculados, de manera que no sea necesariorecalcularlos. Esa estructura podra consistir en un array den posiciones con los ltimos valores calculados en cada filai [0, n], as como el ndice de columna j a quecorresponden. Se sugiere tambin ir acumulando en unavariable 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 msinformacin consltense las entradas dedicadas a la funcinde Ackermann en mathworld.wolfram.com y enen.wikipedia.org.

    Algoritmos y Estructuras de Datos Departamento de Electricidad y Electronica (UPV/EHU) Complejidad espacial de algoritmos recursivos p.10/10

    Arbol de recurrenciaArbol de recurrenciaArbol de recurrenciaArbol de recurrenciaArbol de recurrenciaCoste espacial de algoritmos recursivosCoste espacial de algoritmos recursivosEjerciciosEjercicios