Análisis y Diseño de Algoritmoscarranza/docs/alg/t3.pdf · 3 Introducción Métodos para resolver...

27
DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES INAOE Análisis y Diseño de Algoritmos Recurrencias

Transcript of Análisis y Diseño de Algoritmoscarranza/docs/alg/t3.pdf · 3 Introducción Métodos para resolver...

Page 1: Análisis y Diseño de Algoritmoscarranza/docs/alg/t3.pdf · 3 Introducción Métodos para resolver recurrencias Substitución Adivinar una cota, prueba con inducción matemática

DR. JOSÉ MARTÍNEZ CARRANZA

CIENCIAS COMPUTACIONALESINAOE

Análisis y Diseño de AlgoritmosRecurrencias

Page 2: Análisis y Diseño de Algoritmoscarranza/docs/alg/t3.pdf · 3 Introducción Métodos para resolver recurrencias Substitución Adivinar una cota, prueba con inducción matemática

2

Introducción

Cuando un algoritmo se llama a sí mismo Su tiempo de ejecución se puede describir con una recurrencia

Recurrencia Ecuación o inigualdad que describe una función en términos

de su valor para entradas más pequeñas

Ejemplo de QuickSort

Cuya solución se es:

2

T (n)={Θ(1) if n = 1,2T (n/2 )+Θ (n ) if n > 1, }

T (n)=Θ (n lg n )

Page 3: Análisis y Diseño de Algoritmoscarranza/docs/alg/t3.pdf · 3 Introducción Métodos para resolver recurrencias Substitución Adivinar una cota, prueba con inducción matemática

3

Introducción

Métodos para resolver recurrencias Substitución

Adivinar una cota, prueba con inducción matemática

Método de Iteración Expande, itera sobre la recurrencia y la expresa como sumatoria en

términos dependientes de n y las condiciones iniciales

Árboles de recursión Convierte la recurrencia en un árbol cuyos nodos representan los costos

de los dif. niveles de la recursión

Método maestro Provee fronteras (bounds) para recurrencias de la forma

Requiere memorizar tres casos

3

T (n)=aT (n/b )+f (n ), donde a ≥ 1, b ≥ 1, f ( n) es una función dada

Page 4: Análisis y Diseño de Algoritmoscarranza/docs/alg/t3.pdf · 3 Introducción Métodos para resolver recurrencias Substitución Adivinar una cota, prueba con inducción matemática

4

Método de Substitución

Consta de 2 pasos Adivinar la forma de la solución Utilizar inducción matemática para encontrar las constantes y

mostrar que la solución funciona

Método poderoso Solo se aplica a casos en que es fácil adivinar la

forma de la respuesta Para establecer fronteras superiores o inferiores en

una recurrencia

4

Page 5: Análisis y Diseño de Algoritmoscarranza/docs/alg/t3.pdf · 3 Introducción Métodos para resolver recurrencias Substitución Adivinar una cota, prueba con inducción matemática

5

Método de Substitución

Ejemplo: Adivinamos: Probamos que: para una constante c >0 Entonces: Substituimos en la recurrencia:

El último paso es cierto si c 1

5

Asumimos que lacota es cierta

para n/2

Page 6: Análisis y Diseño de Algoritmoscarranza/docs/alg/t3.pdf · 3 Introducción Métodos para resolver recurrencias Substitución Adivinar una cota, prueba con inducción matemática

6

Método de Substitución

El método de inducción requiere probar que la solución escierta para las condiciones frontera Elegir c suficientemente grande para que funcione para

las condiciones de frontera Para notación asintótica requerimos probar que

nosotros elegimos n0

Evitamos condición frontera difícil para T(1) = 1 para la prueba de inducción

6

T (1)=1 ; La recurrencia no funciona para T (1) ; pero sí para T (2) y T (3 )T (2)=2T (1 )+2=4T (3)=2T (1)+3=5T (2) ≤ c 2lg2=2c, c ≥ 2T (3) ≤ c 3lg3=4 . 75c, c ≥ 2

Page 7: Análisis y Diseño de Algoritmoscarranza/docs/alg/t3.pdf · 3 Introducción Métodos para resolver recurrencias Substitución Adivinar una cota, prueba con inducción matemática

7

Método de Substitución

Adivinando una buena primera aproximación No hay una buena manera general de adivinar soluciones

correctas a recurrencias Requiere experiencia y creatividad Algunas heurísticas

Usar árboles de recursión para generar buenos valores iniciales Si la recurrencia es similar a otra, usar una solución similar

7

Page 8: Análisis y Diseño de Algoritmoscarranza/docs/alg/t3.pdf · 3 Introducción Métodos para resolver recurrencias Substitución Adivinar una cota, prueba con inducción matemática

Método de Iteración

No requiere adinivinar la respuesta Puede requerir más álgebra que el de substitución Expande (itera) la recurrencia y la expresa como sumatoria de términos

dependientes de n y las condiciones iniciales Después usa técnicas para evaluar sumatorias para dar cotas a la

solución Puede ser difícil resolver recurrencias con éste método

A veces al iterar la recurrencia, adivinamos una solución y seguimos con el método de substitución

8

Page 9: Análisis y Diseño de Algoritmoscarranza/docs/alg/t3.pdf · 3 Introducción Métodos para resolver recurrencias Substitución Adivinar una cota, prueba con inducción matemática

Método de Iteración

Ejemplo, dada la recurrencia:

9

Page 10: Análisis y Diseño de Algoritmoscarranza/docs/alg/t3.pdf · 3 Introducción Métodos para resolver recurrencias Substitución Adivinar una cota, prueba con inducción matemática

Método de Iteración

¿Qué tanto iteramos para llegar a la condición de frontera? El i’ésimo término en la serie es 3i n/4i La iteración llega a n = 1 cuando n/4i =1 ó cuando i excede

log4n Llevando la iteración a este punto y usando la frontera: n/4i n/4i , descubrimos que la sumatoria contiene una serie geométrica decreciente:

10

Page 11: Análisis y Diseño de Algoritmoscarranza/docs/alg/t3.pdf · 3 Introducción Métodos para resolver recurrencias Substitución Adivinar una cota, prueba con inducción matemática

11

Método de Árbol de Recursión

Visualizar la iteración de una recurrencia Dibujar un árbol de recursión y obtener una buena solución

inicial Utilizamos método de sustitución para comprobar

Árbol de recursión Cada nodo representa el costo de un subproblema en el

conjunto de llamadas a funciones recursivas Sumamos costos por nivel y determinamos el costo total de

todos los niveles de recursión Útiles cuando la recurrencia describe tiempo de ejecución de

un algoritmo divide-y-conquista

11

Page 12: Análisis y Diseño de Algoritmoscarranza/docs/alg/t3.pdf · 3 Introducción Métodos para resolver recurrencias Substitución Adivinar una cota, prueba con inducción matemática

12

Método de Árbol de Recursión

Para resolver la recurrencia Creamos árbol de recursión para Incluímos el coeficiente c > 0 Asumimos que n es una potencia exacta de 4

12

T (n)=3T ( ⌊n /4 ⌋)+Θ (n2 )

T (n)=3T (n /4 )+cn2

Page 13: Análisis y Diseño de Algoritmoscarranza/docs/alg/t3.pdf · 3 Introducción Métodos para resolver recurrencias Substitución Adivinar una cota, prueba con inducción matemática

13

Método de Árbol de Recursión13

Page 14: Análisis y Diseño de Algoritmoscarranza/docs/alg/t3.pdf · 3 Introducción Métodos para resolver recurrencias Substitución Adivinar una cota, prueba con inducción matemática

14

Método de Árbol de Recursión14

Page 15: Análisis y Diseño de Algoritmoscarranza/docs/alg/t3.pdf · 3 Introducción Métodos para resolver recurrencias Substitución Adivinar una cota, prueba con inducción matemática

15

Método de Árbol de Recursión

El tamaño del problema decrece con la profundidad del árbol Eventualmente alcanzamos condición frontera

¿Qué tan lejos de la raíz llegamos? El tamaño del subproblema para un nodo en profundidad i es

n/4i

El tamaño llega a n = 1 cuando n/4i = 1, o i = log4n Entonces el árbol tiene log4n+1 niveles (0, 1, 2, …, log4n)

15

Page 16: Análisis y Diseño de Algoritmoscarranza/docs/alg/t3.pdf · 3 Introducción Métodos para resolver recurrencias Substitución Adivinar una cota, prueba con inducción matemática

16

Método de Árbol de Recursión

Después determinamos el costo en cada nivel del árbol Cada nivel tiene tres veces más nodos que el nivel anterior El número de nodos a profundidad i es 3i

Cada nodo a profundidad i para i = 0, 1, 2, …, log4n-1 tiene costo de c(n/4i)2

Multiplicando, vemos que el costo de todos los nodos al nivel i para i = 0, 1, 2, …, log4n-1 es 3ic(n/4i)2 = (3/16)icn2

El último nivel a profundidad log4n tiene 3log4n = nlog4 3 nodos, cada uno con costo T(1), con costo total nlog4 3 T(1) con (nlog4 3 )

Page 17: Análisis y Diseño de Algoritmoscarranza/docs/alg/t3.pdf · 3 Introducción Métodos para resolver recurrencias Substitución Adivinar una cota, prueba con inducción matemática

17

Método de Árbol de Recursión

Sumamos los costos de todos los niveles para obtener el costo de todo el árbol

17

Page 18: Análisis y Diseño de Algoritmoscarranza/docs/alg/t3.pdf · 3 Introducción Métodos para resolver recurrencias Substitución Adivinar una cota, prueba con inducción matemática

18

Método de Árbol de Recursión

Podemos usar una serie geométrica infinita decreciente como cota superior, ecuación A.6

Page 19: Análisis y Diseño de Algoritmoscarranza/docs/alg/t3.pdf · 3 Introducción Métodos para resolver recurrencias Substitución Adivinar una cota, prueba con inducción matemática

19

Método Maestro

Receta para recurrencias del tipo: a 1 y b > 1 son constantes y f(n) es una función

asintóticamente positiva

La recurrencia describe el tiempo de ejecución de un algoritmo que: Divide un problema de tamaño n en a subproblemas Cada subproblema de tamaño n/b a y b son constantes positivas Los a subproblemas se resuelven recursivamente

En tiempo T(n/b)

Costo de dividir el problema y combinar los resultados esta dado por f(n)

19

Page 20: Análisis y Diseño de Algoritmoscarranza/docs/alg/t3.pdf · 3 Introducción Métodos para resolver recurrencias Substitución Adivinar una cota, prueba con inducción matemática

20

Método Maestro

Teorema maestro Sean a 1 y b 1 constantes

Sea f(n) una función

Sea T(n) definida por los enteros no-negativos por la recurrencia

n/b puede ser n/b ó n/b, entonces T(n) se puede acotar asintóticamente como sigue:

Page 21: Análisis y Diseño de Algoritmoscarranza/docs/alg/t3.pdf · 3 Introducción Métodos para resolver recurrencias Substitución Adivinar una cota, prueba con inducción matemática

21

Método Maestro

En todos los casos compara f(n) con nlogba

La solución a la recurrencia la domina la mayor de las 2 funciones

Caso 1: nlogba es la mayor, la solución es T(n) = (nlogba) Caso 3: f(n) es mayor, la solución es T(n) = (f(n)) Caso 2: las dos funciones son del mismo tamaño,

multiplicamos por un factor logarítmico, T(n) = (nlogbalgn) = (f(n)lgn)

Page 22: Análisis y Diseño de Algoritmoscarranza/docs/alg/t3.pdf · 3 Introducción Métodos para resolver recurrencias Substitución Adivinar una cota, prueba con inducción matemática

22

Método Maestro

Algunos aspectos técnicos… En el caso 1:

f(n) debe ser polinómicamente más pequeña que nlogba

Asintóticamente más pequeñaque nlogba por un factor de n para una constante > 0.

En el caso 3: f(n) debe ser polinómicamente mayor a nlogba

También debe satisfacer la condición de regularidad de af(n/b) cf(n) Esta condición se satisface por la mayoría de las funciones

polinómicamente acotadas que podemos encontrar. Esto quiere decir que los 3 casos no cubren todas las posibilidades de f(n).

22

Page 23: Análisis y Diseño de Algoritmoscarranza/docs/alg/t3.pdf · 3 Introducción Métodos para resolver recurrencias Substitución Adivinar una cota, prueba con inducción matemática

23

Método Maestro

Ejemplo 1:

23

Page 24: Análisis y Diseño de Algoritmoscarranza/docs/alg/t3.pdf · 3 Introducción Métodos para resolver recurrencias Substitución Adivinar una cota, prueba con inducción matemática

24

Método Maestro

Ejemplo 2:

24

Page 25: Análisis y Diseño de Algoritmoscarranza/docs/alg/t3.pdf · 3 Introducción Métodos para resolver recurrencias Substitución Adivinar una cota, prueba con inducción matemática

25

Método Maestro

Ejemplo 3:

25

Page 26: Análisis y Diseño de Algoritmoscarranza/docs/alg/t3.pdf · 3 Introducción Métodos para resolver recurrencias Substitución Adivinar una cota, prueba con inducción matemática

26

Método Maestro

Ejemplo 4:

26

Page 27: Análisis y Diseño de Algoritmoscarranza/docs/alg/t3.pdf · 3 Introducción Métodos para resolver recurrencias Substitución Adivinar una cota, prueba con inducción matemática