Download - Analisis de Tiempos

Transcript
Page 1: Analisis de Tiempos

ALGORITMOS AVANZADOSANÁLISIS DE TIEMPOS

UPC 2010

Page 2: Analisis de Tiempos

Agenda

Presentación del Curso. Introducción a los Algoritmos.Introducción a la notación asintótica.Análisis de tiempos con notación O, Ω, θNotación Big O.Otras notacionesEjercicios

Page 3: Analisis de Tiempos

Presentación del Curso

Temática del Curso.Esquema de evaluación.

4 Prácticas. 2 Tareas Académicas (Individual). Trabajo Parcial (Individual). Trabajo Final (Grupo 2 personas).

Participación constante.Delegado.Toma de Asistencia.

Page 4: Analisis de Tiempos

Logro de la Clase

Conocer los conceptos para analizar los algoritmos en términos de eficiencia.

Page 5: Analisis de Tiempos

Introducción a los algoritmos

¿Qué es un algoritmo? Ejemplos

¿Por qué es importante la eficiencia en los algoritmos?

¿Consideraciones a la hora de diseñar un algoritmo? Memoria. Tiempo de Ejecución.

Page 6: Analisis de Tiempos

Pasos para diseñar un algoritmo

Page 7: Analisis de Tiempos

Casos de Análisis

Page 8: Analisis de Tiempos

Análisis de Algoritmos

¿Qué se debe tomar en cuenta? Operaciones de comparación Operaciones aritméticas Asignaciones Otras operaciones (impresiones, lectura,

etc.)Siempre asumimos que el número de

datos es grande.Para el análisis utilizamos Notación

Asintótica

Page 9: Analisis de Tiempos

Ejercicios

Calcula el valor de 264. Intente encontrar el menor número de multiplicaciones.

Suponga que en un país extraño existen cinco tipos distintos de monedas con denominaciones de 15, 13, 29, 41, y 67 (todos en centavos). Encuentre una combinación de estas monedas que le permitan pagar 18 dólares y 8 centavos (1808 centavos). Asuma que cuenta con suficientes monedas de cada tipo en su bolsillo.

Page 10: Analisis de Tiempos

Notaciones

Notación

Símbolo Resumen

Explicación

Big O O(f(n)) Peor Caso

Nos permite evaluar en términos de cotas superiores (upper bounds). Representa lo máximo que demoraría un algoritmo.

Big Omega

Ω(f(n)) Mejor caso

Nos permite evaluar en términos de cotas inferiores (lower bounds). Representa lo mínimo que demoraría un algoritmo.

Big Theta

θ(f(n)) Tight Bounds

Representa cotas exactas (tight bounds). Es decir, sin importar la entrada, el algoritmo siempre crecerá de la misma forma. θ(f(n)) = θ(f(n)) ∩ Ω(f(n))

Page 11: Analisis de Tiempos

Reglas Big O

• Regla 1: Ciclos for. for i 1 to n do print i print “hola”Tiempo = 2n ≈ O(n) Lineal

• Regla 2: Ciclos for anidados.

for i 1 to n do for j 1 to n do print “hola”Tiempo =1 * n * n ≈ O(n2) Cuadrático

Page 12: Analisis de Tiempos

Reglas Big O

• Regla 3: Condicionales, (Tiempo de la mayor condición)o If cond then

S1Else S2Tiempo = MAX(S1, S2)If a>b then for i 1 to n print i Else print a Tiempo = MAX(n, 1) ≈ O(n)

Page 13: Analisis de Tiempos

Reglas Big O

• Regla 4: Proposiciones consecutivas. Sumar

for i 1 to n do print ifor i 1 to n do for j 1 to n do print i * jTiempo = n + 2n2 ≈ O(n2)

Page 14: Analisis de Tiempos

Reglas Big O

Regla 5: Tiempos logarítmicos. Se divide el número de elementos por una constante de manera sucesiva.

Page 15: Analisis de Tiempos

Reglas para transformar una función en Notación Asintótica

Ejemplo: Hallar el promedio de los números en el array A. Sum 0 n length(A) for i 1 to n do sum sum + A[i] Prom sum / nTiempo muy detallado = 1 + 2 + (2n) + 2 Tiempo asintótico = O(n)

Page 16: Analisis de Tiempos

Propiedades Big O

g(n) = O(g(n))c·O(g(n)) = O(g(n)), donde c es una

constanteO(g(n))+O(g(n)) = O(g(n))O(g(n))·O(h(n)) = O(g(n)·h(n)) h(n)·O(g(n)) = O(h(n)·g(n))O(g(n))+O(h(n)) = O del mayorO(g(n))-O(g(n)) = O(g(n))

Page 17: Analisis de Tiempos

Ejemplo Gráfico

Tenemos 2 funciones: h(n) = n3 - 12n2 + 20n + 110 k(n) = n3 + n2 + 5n + 5

En los gráficos, se muestra el crecimiento de ambas funciones.

Page 18: Analisis de Tiempos

Con valores del 0 al 5

Page 19: Analisis de Tiempos

Con valores del 0 al 15

Page 20: Analisis de Tiempos

Con valores del 0 al 100

Page 21: Analisis de Tiempos

Con valores del 0 al 1000

Page 22: Analisis de Tiempos

Otras Notaciones

Notación

Símbolo Resumen

Explicación

Little o o(f(n)) Mayor al Peor caso.

En el peor de los casos, el tiempo que demore el algoritmo será siempre menor a o(f(n)).

Little ω ω (f(n)) Menor al Mejor caso.

En el mejor de los casos, el tiempo que algoritmo nunca será mayor a ω(f(n)).

Page 23: Analisis de Tiempos

Resumen de Notaciones

f(n) = o(g(n)) ≈ a < b f(n) = O(g(n)) ≈ a ≤ b f(n) = θ(g(n)) ≈ a = b f(n) = Ω(g(n)) ≈ a ≥ b f(n) = ω(g(n)) ≈ a > b

o(n) > O(n) ≥ θ(g(n)) ≥ Ω(g(n)) > ω(g(n))

Page 24: Analisis de Tiempos

Tasas de crecimiento

Función Nombre

c Constante

log(n) Logarítmica

log2(n) Logarítmica cuadrada

n Lineal

n log(n) N log N

n2 Cuadrática

n3 Cúbica

na , a>3 Polinómica de grado “a”

2n Exponencial

n! Factorial

Page 25: Analisis de Tiempos

Tasas de crecimiento

Page 26: Analisis de Tiempos

Tasas de crecimiento

Page 27: Analisis de Tiempos

Tipo de Función# de Instrucciones

(Aprox.)Logarítmica O(log n) 6 Logarítmica cuadrada O(log2 n)

32

Lineal O(n)

50 Linearítmica O( N log n)

282

Cuadrática O(n2) 2,500 Cúbica O(n3) 125,000 Exponencial O(2n) 1.13 x 1015

Factorial O(n!) 3.04 x 1064

Tasas de crecimiento

Para n = 50

Page 28: Analisis de Tiempos

Ejercicios

Analizar O(n) para:Ejercicio 1:

sum 0for i 1 to n do

sum sum +1

Ejercicio 2:sum 0for i 1 to n do

for j 1 to i dosum sum +1

Page 29: Analisis de Tiempos

Ejercicios

Analizar O(n) para:Ejercicio 3:

sum 0

for i 1 to n do

for j 1 to i * 2 do sum sum +1

Ejercicio 4:sum 0

for i 1 to n do

for j 1 to 5 dosum sum +1

Page 30: Analisis de Tiempos

Ejercicios

Analizar O(n) para:Ejercicio 5:

sum 0

if (a > b)

for i 1 to n dosum sum +1

else

for i 1 to n dofor j 1 to i do

sum sum +1

Page 31: Analisis de Tiempos

Ejercicios

Implementar in algoritmo de búsqueda binaria y luego realizar el análisis asintótico O(n)

Page 32: Analisis de Tiempos

Bibliografía

Cormen, Thomas H. and Others. Introduction to Algorithms, Second Edition. 2001.

Jeffrey J. McConnell. Analysis of Algorithms: An Active Learning Approach. 2001

Weiss, Mark Allen. Estructura de Datos y Algoritmos. 1995.