Está en la página 1de 16

Análisis matemático de algoritmos recursivos

Dr. Eduardo A. R ODRÍGUEZ T ELLO

C INVESTAV-Tamaulipas

24 de enero de 2018

Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV) Análisis matemático de algoritmos 24 de enero de 2018 1 / 16


1 Análisis matemático de algoritmos
Análisis de algoritmos recursivos
Ejemplos
Ejercicios
Tarea 4

Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV) Análisis matemático de algoritmos 24 de enero de 2018 2 / 16


Análisis matemático de algoritmos Análisis de algoritmos recursivos

1 Análisis matemático de algoritmos


Análisis de algoritmos recursivos
Ejemplos
Ejercicios
Tarea 4

Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV) Análisis matemático de algoritmos 24 de enero de 2018 3 / 16


Análisis matemático de algoritmos Análisis de algoritmos recursivos

Análisis de algoritmos recursivos

1 Decidir acerca del parámetro n que indica el tamaño de la entrada del


algoritmo

2 Identificar la operación básica del algoritmo

3 Determinar si el número de veces que la operación básica es ejecutada


puede variar para diferentes entradas del mismo tamaño n (analizar los
casos peor, promedio y mejor si existen)

4 Expresar como una relación de recurrencia, con una condición inicial


(CI) adecuada, el número total de ejecuciones de la operación básica

5 Resolver la relación de recurrencia (o al menos establecer el orden de


crecimiento de su solución), i.e., encontrar una fórmula explícita para el
término genérico que satisfaga la recurrencia y la CI o probar que no
existe

Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV) Análisis matemático de algoritmos 24 de enero de 2018 4 / 16


Análisis matemático de algoritmos Ejemplos

1 Análisis matemático de algoritmos


Análisis de algoritmos recursivos
Ejemplos
Ejercicios
Tarea 4

Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV) Análisis matemático de algoritmos 24 de enero de 2018 5 / 16


Análisis matemático de algoritmos Ejemplos

Ejemplo 1

1 Decidir acerca del parámetro n que indica el tamaño de la entrada del algoritmo: n es el número del
cual se calculará el factorial.
2 Identificar la operación básica del algoritmo: la multiplicación, denotada M (n).
3 Determinar si el número de veces que la operación básica es ejecutada puede variar para diferentes
entradas del mismo tamaño n: no existen variaciones.
4 Expresar como una relación de recurrencia, con una condición inicial adecuada, el número de veces
que la operación básica es ejecutada:
M (n) = M (n − 1) + 1 para n > 0.
| {z } |{z}
F (n−1) F (n−1)∗n

M (0) = 0 condición inicial.

Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV) Análisis matemático de algoritmos 24 de enero de 2018 6 / 16


Análisis matemático de algoritmos Ejemplos

Ejemplo 1

5 Resolver la relación de recurrencia (o al menos establecer el orden de crecimiento de su


solución) empleando sustituciones hacia atrás o algún otro método

M (n) = M (n − 1) + 1 sustituir M (n − 1) = M (n − 2) + 1
= [M (n − 2) + 1] + 1 = M (n − 2) + 2 sustituir M (n − 2) = M (n − 3) + 1
= [M (n − 3) + 1] + 2 = M (n − 3) + 3

Podemos determinar entonces un patrón: M (n) = M (n − i) + i


Tomando en cuenta la CI (M (0) = 0), tenemos que si se sustituye i = n en la fórmula anterior
se obtiene:
M (n) = M (n − i) + i = M (n − n) + n = n
El algoritmo es lineal.

Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV) Análisis matemático de algoritmos 24 de enero de 2018 7 / 16


Análisis matemático de algoritmos Ejemplos

Ejemplo 2

Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV) Análisis matemático de algoritmos 24 de enero de 2018 8 / 16


Análisis matemático de algoritmos Ejemplos

Ejemplo 2

1 Decidir acerca del parámetro n que indica el tamaño de la entrada del algoritmo: n es el número de
discos.
2 Identificar la operación básica del algoritmo: mover un disco, denotada M (n).
3 Determinar si el número de veces que la operación básica es ejecutada puede variar para diferentes
entradas del mismo tamaño n: no existen variaciones.
4 Expresar como una relación de recurrencia, con una condición inicial adecuada, el número de veces
que la operación básica es ejecutada:
M (n) = M (n − 1) + 1 + M (n − 1) = 2M (n − 1) + 1 para n > 1.
M (1) = 1 condición inicial.

Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV) Análisis matemático de algoritmos 24 de enero de 2018 9 / 16


Análisis matemático de algoritmos Ejemplos

Ejemplo 2
5 Resolver la relación de recurrencia (o al menos establecer el orden de crecimiento de su
solución) empleando sustituciones hacia atrás o algún otro método

M (n) = 2M (n − 1) + 1 sust. M (n − 1) = 2M (n − 2) + 1
2
= 2[2M (n − 2) + 1] + 1 = 2 M (n − 2) + 2 + 1 sust. M (n − 2) = 2M (n − 3) + 1

= 22 [2M (n − 3) + 1] + 2 + 1 = 23 M (n − 3) + 22 + 2 + 1

El patrón sugiere que el siguiente término será: 24 M (n − 4) + 23 + 22 + 2 + 1, y en general después de i


sustituciones:

i i−1 i−2 i i
M (n) = 2 M (n − i) + 2 +2 + · · · + 2 + 1 = 2 M (n − i) + 2 − 1 ,

como la CI está especificada para n = 1, que se logra con i = n − 1, se obtiene:

M (n) = 2n−1 M (n − (n − 1)) + 2n−1 − 1


= 2n−1 M (1) + 2n−1 − 1

= 2n−1 + 2n−1 − 1
= 2n − 1

El algoritmo es exponencial.
Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV) Análisis matemático de algoritmos 24 de enero de 2018 10 / 16
Análisis matemático de algoritmos Ejercicios

1 Análisis matemático de algoritmos


Análisis de algoritmos recursivos
Ejemplos
Ejercicios
Tarea 4

Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV) Análisis matemático de algoritmos 24 de enero de 2018 11 / 16


Análisis matemático de algoritmos Ejercicios

Ejercicios, parte 1

Considerando el algoritmo no recursivo mostrado arriba responda las siguientes


preguntas:

a ¿Qué calcula el algoritmo?


b ¿Cuál es la operación básica?
c ¿Cuántas veces se ejecuta la operación básica?
d ¿Cuál es la clase de eficiencia a la que pertenece este algoritmo?
e Sugiera una mejora, o un mejor algoritmo e indique su clase de eficiencia. Si esto
no es posible, pruébelo.

Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV) Análisis matemático de algoritmos 24 de enero de 2018 12 / 16


Análisis matemático de algoritmos Ejercicios

Ejercicios, parte 2

Resuelva las siguientes relaciones de recurrencia:

a x(n) = x(n − 1) + 5 para n > 1, x(1) = 0

b x(n) = 3x(n − 1) para n > 1, x(1) = 4

c x(n) = x(n − 1) + n para n > 0, x(0) = 0

d x(n) = x(n/2) + n para n > 1, x(1) = 1 (resolver para n = 2k )

Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV) Análisis matemático de algoritmos 24 de enero de 2018 13 / 16


Análisis matemático de algoritmos Ejercicios

Ejercicios, parte 3

Considerando el algoritmo recursivo mostrado arriba responda las


siguientes preguntas:
a ¿Qué calcula el algoritmo?
b ¿Cuál es la operación básica?
c Plantee y resuelva una relación de recurrencia para el número de veces
que el algoritmo ejecuta la operación básica
d ¿Existe un algoritmo más eficiente para realizar este cálculo?, si es así
compare las eficiencias de ambos algoritmos

Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV) Análisis matemático de algoritmos 24 de enero de 2018 14 / 16


Análisis matemático de algoritmos Tarea 4

1 Análisis matemático de algoritmos


Análisis de algoritmos recursivos
Ejemplos
Ejercicios
Tarea 4

Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV) Análisis matemático de algoritmos 24 de enero de 2018 15 / 16


Análisis matemático de algoritmos Tarea 4

Tarea 4

En la carpeta de Dropbox del curso encontrarán un archivo con las


especificaciones de esta tarea. Genere un reporte en Latex donde presente
los detalles del trabajo realizado, así como sus conclusiones personales.

Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV) Análisis matemático de algoritmos 24 de enero de 2018 16 / 16

También podría gustarte