Analisis de Tiempos

of 32 /32
ALGORITMOS AVANZADOS ANÁLISIS DE TIEMPOS UPC 2010

Embed Size (px)

description

MATEMATICA COMPUTACIONAL

Transcript of Analisis de Tiempos

  • ALGORITMOS AVANZADOS ANLISIS DE TIEMPOSUPC 2010

  • AgendaPresentacin del Curso. Introduccin a los Algoritmos.Introduccin a la notacin asinttica.Anlisis de tiempos con notacin O, , Notacin Big O.Otras notacionesEjercicios

  • Presentacin del CursoTemtica del Curso.Esquema de evaluacin.4 Prcticas.2 Tareas Acadmicas (Individual).Trabajo Parcial (Individual).Trabajo Final (Grupo 2 personas).Participacin constante.Delegado.Toma de Asistencia.

  • Logro de la ClaseConocer los conceptos para analizar los algoritmos en trminos de eficiencia.

  • Introduccin a los algoritmosQu es un algoritmo?Ejemplos Por qu es importante la eficiencia en los algoritmos?Consideraciones a la hora de disear un algoritmo?Memoria.Tiempo de Ejecucin.

  • Pasos para disear un algoritmo

  • Casos de Anlisis

  • Anlisis de AlgoritmosQu se debe tomar en cuenta?Operaciones de comparacinOperaciones aritmticasAsignacionesOtras operaciones (impresiones, lectura, etc.)Siempre asumimos que el nmero de datos es grande.Para el anlisis utilizamos Notacin Asinttica

  • EjerciciosCalcula el valor de 264. Intente encontrar el menor nmero de multiplicaciones.Suponga que en un pas extrao existen cinco tipos distintos de monedas con denominaciones de 15, 13, 29, 41, y 67 (todos en centavos). Encuentre una combinacin de estas monedas que le permitan pagar 18 dlares y 8 centavos (1808 centavos). Asuma que cuenta con suficientes monedas de cada tipo en su bolsillo.

  • Notaciones

  • Reglas Big ORegla 1: Ciclos for.for i 1 to n do print i print holaTiempo = 2n O(n) LinealRegla 2: Ciclos for anidados.for i 1 to n do for j 1 to n do print holaTiempo =1 * n * n O(n2) Cuadrtico

  • Reglas Big ORegla 3: Condicionales, (Tiempo de la mayor condicin)If cond then S1Else S2Tiempo = MAX(S1, S2)If a>b then for i 1 to n print i Else print aTiempo = MAX(n, 1) O(n)

  • Reglas Big ORegla 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)

  • Reglas Big ORegla 5: Tiempos logartmicos. Se divide el nmero de elementos por una constante de manera sucesiva.

  • Reglas para transformar una funcin en Notacin AsintticaEjemplo: Hallar el promedio de los nmeros 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) + 2Tiempo asinttico = O(n)

  • Propiedades Big Og(n) = O(g(n))cO(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))

  • Ejemplo GrficoTenemos 2 funciones:h(n) = n3 - 12n2 + 20n + 110k(n) = n3 + n2 + 5n + 5En los grficos, se muestra el crecimiento de ambas funciones.

  • Con valores del 0 al 5

  • Con valores del 0 al 15

  • Con valores del 0 al 100

  • Con valores del 0 al 1000

  • Otras Notaciones

  • Resumen de Notacionesf(n) = o(g(n)) a < bf(n) = O(g(n)) a bf(n) = (g(n)) a = bf(n) = (g(n)) a b f(n) = (g(n)) a > b

    o(n) > O(n) (g(n)) (g(n))> (g(n))

  • Tasas de crecimiento

  • Tasas de crecimiento

  • Tasas de crecimiento

  • Tasas de crecimientoPara n = 50

  • EjerciciosAnalizar O(n) para:Ejercicio 1: sum 0for i 1 to n dosum sum +1

    Ejercicio 2:sum 0for i 1 to n dofor j 1 to i dosum sum +1

  • EjerciciosAnalizar O(n) para:Ejercicio 3: sum 0for i 1 to n dofor j 1 to i * 2 do sum sum +1Ejercicio 4:sum 0for i 1 to n dofor j 1 to 5 dosum sum +1

  • EjerciciosAnalizar O(n) para:Ejercicio 5:sum 0if (a > b)for i 1 to n dosum sum +1elsefor i 1 to n dofor j 1 to i do sum sum +1

  • EjerciciosImplementar in algoritmo de bsqueda binaria y luego realizar el anlisis asinttico O(n)

  • BibliografaCormen, Thomas H. and Others. Introduction to Algorithms, Second Edition. 2001.Jeffrey J. McConnell. Analysis of Algorithms: An Active Learning Approach. 2001Weiss, Mark Allen. Estructura de Datos y Algoritmos. 1995.