Está en la página 1de 29

Anlisis y Diseo de Algoritmos

Recurrencias

DR. JESS A. GONZLEZ BERNAL


CIENCIAS COMPUTACIONALES
INAOE
Introduccin
2

Cuando un algoritmo se llama a s mismo


Su tiempo de ejecucin se puede describir con una recurrencia

Recurrencia
Ecuacin o desigualdad que describe una funcin en trminos
de su valor para entradas ms pequeas
Ejemplo de MergeSort
(1) if n = 1,
T (n) =
2T (n / 2) + (n) if n > 1,
Cuya solucin se dijo que es:
T (n) = (n lg n)
Introduccin
3

Mtodos para resolver recurrencias


Substitucin
Adivinar una cota, prueba con induccin matemtica
Mtodo de Iteracin
Expande, itera sobre la recurrencia y la expresa como sumatoria en
trminos dependientes de n y las condiciones iniciales
rboles de recursin
Convierte la recurrencia en un rbol cuyos nodos representan los
costos de los dif. niveles de la recursin
Mtodo maestro
Provee fronteras (bounds) para recurrencias de la forma
T (n) = aT (n / b) + f (n), donde a 1, b 1, f (n) es una funcin dada
Requiere memorizar tres casos
Mtodo de Substitucin
4

Consta de 2 pasos
Adivinar la forma de la solucin
Utilizar induccin matemtica para encontrar las constantes y
mostrar que la solucin funciona
Mtodo poderoso
Solo se aplica a casos en que es fcil adivinar la
forma de la respuesta
Para establecer fronteras superiores o inferiores en
una recurrencia
Mtodo de Substitucin
5

Ejemplo:
Adivinamos:
Probamos que: para una constante c >0
Entonces:
Substituimos en la recurrencia: Asumimos que la
cota es cierta
para n/2

El ltimo paso es cierto si c 1


Mtodo de Substitucin
6

El mtodo de induccin requiere probar que la solucin es cierta para


las condiciones frontera
Elegir c suficientemente grande para que funcione para las
condiciones de frontera
Para notacin asinttica requerimos probar que nosotros
elegimos n0
Evitamos condicin frontera difcil para T(1) = 1 para la prueba de induccin
% (
Aplicamos en la recurrencia T (n) = 2T '!!" n ##$* + n
& 2 )

T (1) = 1 ; La recurrencia no funciona para T(1) al probar en la notacin asinttica


; pero s para T(2) y T(3)
T (2) = 2T (2) + 2 = 2 *1+ 2 = 4
T (3) = 2T (3) + 3 = 2 *1+ 3 = 5

Ahora, en la prueba de notacin Asinttica:


T (2) c2 lg 2 = 2c, c 2
T (3) c3lg3 = 4.75c, c 2
Mtodo de Substitucin
7

Adivinando una buena primera aproximacin


No hay una buena manera general de adivinar soluciones
correctas a recurrencias
Requiere experiencia y creatividad

Algunas heursticas
Usar rboles de recursin para generar buenos valores iniciales
Si la recurrencia es similar a otra, usar una solucin similar
Mtodo de Iteracin
8

No requiere adivinar la respuesta


Puede requerir ms lgebra que el de substitucin
Expande (itera) la recurrencia y la expresa como
sumatoria de trminos dependientes de n y las
condiciones iniciales
Despus usa tcnicas para evaluar sumatorias para
dar cotas a la solucin
Puede ser difcil resolver recurrencias con este
mtodo
A veces al iterar la recurrencia, adivinamos una solucin y
seguimos con el mtodo de substitucin
Mtodo de Iteracin
9

Ejemplo, dada la recurrencia:


Mtodo de Iteracin
10

Qu tanto iteramos para llegar a la condicin de frontera?


El isimo trmino en la serie es 3i n/4i

La iteracin llega a n = 1 cuando n/4i =1 equivalentemente,


cuando i excede log4n, que corresponde a los niveles del rbol
Llevando la iteracin a este punto y usando la frontera:
n/4i n/4i , descubrimos que la sumatoria contiene una serie
geomtrica decreciente:
Mtodo de rbol de Recursin
11

Visualizar la iteracin de una recurrencia


Dibujar un rbol de recursin y obtener una buena solucin
inicial
Utilizamos mtodo de sustitucin para comprobar

rbol de recursin
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 recursin
tiles cuando la recurrencia describe tiempo de ejecucin de
un algoritmo divide-y-conquista
Mtodo de rbol de Recursin
12

Para resolver la recurrencia T (n) = 3T ( n / 4) + (n 2 )

Creamos rbol de recursin para T (n) = 3T (n / 4) + cn 2


Inclumos el coeficiente c > 0

Asumimos que n es una potencia exacta de 4


Mtodo de rbol de Recursin
13
Mtodo de rbol de Recursin
14
Mtodo de rbol de Recursin
15

El tamao del problema decrece con la profundidad


del rbol
Eventualmente alcanzamos condicin frontera
Qu tan lejos de la raz llegamos?
El tamao del subproblema para un nodo en profundidad i es
n/4i
El tamao llega a n = 1 cuando n/4i = 1, o i = log4n

Entonces el rbol tiene log4n+1 niveles (0, 1, 2, , log4n)


Mtodo de rbol de Recursin
16

Despus determinamos el costo en cada nivel del


rbol
Cada nivel tiene tres veces ms nodos que el nivel anterior
El nmero 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 (nlog 3 )
4
Mtodo de rbol de Recursin
17

Sumamos los costos de todos los niveles para obtener


el costo de todo el rbol
Mtodo de rbol de Recursin
18

Podemos usar una serie geomtrica infinita


decreciente como cota superior, ecuacin A.6
Mtodo Maestro
19

Receta para recurrencias del tipo:


a 1 y b > 1 son constantes y f(n) es una funcin
asintticamente positiva
La recurrencia describe el tiempo de ejecucin de un
algoritmo que:
Divide un problema de tamao n en a subproblemas
Cada subproblema de tamao 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)
Mtodo Maestro
20

Teorema maestro
Sean a 1 y b > 1 constantes
Sea f(n) una funcin
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


asintticamente como sigue:
Mtodo Maestro
21

En todos los casos compara f(n) con nlogba


La solucin a la recurrencia la domina la mayor de las 2
funciones
Caso 1: nlogba es la mayor, la solucin es T(n) = (nlogba)

Caso 3: f(n) es mayor, la solucin es T(n) = (f(n))

Caso 2: las dos funciones son del mismo tamao,


multiplicamos por un factor logartmico, T(n) = (nlog algn) =
b

(f(n)lgn)
Mtodo Maestro
22

Algunos aspectos tcnicos


En el caso 1:
f(n)
debe ser polinmicamente ms pequea que nlog a b

Asintticamente ms pequea que nlog a por un factor de n para


b

una constante > 0.


En el caso 3:
f(n)
debe ser polinmicamente mayor a nlog a b

Tambin debe satisfacer la condicin de regularidad de af(n/b)


cf(n)
Esta condicin se satisface por la mayora de las funciones
polinmicamente acotadas que podemos encontrar.
Esto quiere decir que los 3 casos no cubren todas las
posibilidades de f(n).
Polinomios
23
Exponentes
24
Mtodo Maestro
25

Ejemplo 1:
Mtodo Maestro
26

Ejemplo 2:
Mtodo Maestro
27

Ejemplo 3:
Mtodo Maestro
28

Ejemplo 4:
Tarea
29

Ejercicios:
4.2-1

4.2-3

Problemas
4-1: a, b

4-4: a, b, c

También podría gustarte

  • Historia Del Teléfono Celular
    Historia Del Teléfono Celular
    Documento7 páginas
    Historia Del Teléfono Celular
    Saúl Hernández Hernández
    Aún no hay calificaciones
  • Redes
    Redes
    Documento51 páginas
    Redes
    Saúl Hernández Hernández
    Aún no hay calificaciones
  • Bajar
    Bajar
    Documento37 páginas
    Bajar
    Saúl Hernández Hernández
    Aún no hay calificaciones
  • Aprendiendo Jlex
    Aprendiendo Jlex
    Documento8 páginas
    Aprendiendo Jlex
    Saúl Hernández Hernández
    Aún no hay calificaciones