analisis de tiempos
DESCRIPTION
MATEMATICA COMPUTACIONALTRANSCRIPT
![Page 1: Analisis de Tiempos](https://reader034.vdocuments.pub/reader034/viewer/2022051517/55cf8e41550346703b9033a4/html5/thumbnails/1.jpg)
ALGORITMOS AVANZADOSANÁLISIS DE TIEMPOS
UPC 2010
![Page 2: Analisis de Tiempos](https://reader034.vdocuments.pub/reader034/viewer/2022051517/55cf8e41550346703b9033a4/html5/thumbnails/2.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022051517/55cf8e41550346703b9033a4/html5/thumbnails/3.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022051517/55cf8e41550346703b9033a4/html5/thumbnails/4.jpg)
Logro de la Clase
Conocer los conceptos para analizar los algoritmos en términos de eficiencia.
![Page 5: Analisis de Tiempos](https://reader034.vdocuments.pub/reader034/viewer/2022051517/55cf8e41550346703b9033a4/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022051517/55cf8e41550346703b9033a4/html5/thumbnails/6.jpg)
Pasos para diseñar un algoritmo
![Page 7: Analisis de Tiempos](https://reader034.vdocuments.pub/reader034/viewer/2022051517/55cf8e41550346703b9033a4/html5/thumbnails/7.jpg)
Casos de Análisis
![Page 8: Analisis de Tiempos](https://reader034.vdocuments.pub/reader034/viewer/2022051517/55cf8e41550346703b9033a4/html5/thumbnails/8.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022051517/55cf8e41550346703b9033a4/html5/thumbnails/9.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022051517/55cf8e41550346703b9033a4/html5/thumbnails/10.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022051517/55cf8e41550346703b9033a4/html5/thumbnails/11.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022051517/55cf8e41550346703b9033a4/html5/thumbnails/12.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022051517/55cf8e41550346703b9033a4/html5/thumbnails/13.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022051517/55cf8e41550346703b9033a4/html5/thumbnails/14.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022051517/55cf8e41550346703b9033a4/html5/thumbnails/15.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022051517/55cf8e41550346703b9033a4/html5/thumbnails/16.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022051517/55cf8e41550346703b9033a4/html5/thumbnails/17.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022051517/55cf8e41550346703b9033a4/html5/thumbnails/18.jpg)
Con valores del 0 al 5
![Page 19: Analisis de Tiempos](https://reader034.vdocuments.pub/reader034/viewer/2022051517/55cf8e41550346703b9033a4/html5/thumbnails/19.jpg)
Con valores del 0 al 15
![Page 20: Analisis de Tiempos](https://reader034.vdocuments.pub/reader034/viewer/2022051517/55cf8e41550346703b9033a4/html5/thumbnails/20.jpg)
Con valores del 0 al 100
![Page 21: Analisis de Tiempos](https://reader034.vdocuments.pub/reader034/viewer/2022051517/55cf8e41550346703b9033a4/html5/thumbnails/21.jpg)
Con valores del 0 al 1000
![Page 22: Analisis de Tiempos](https://reader034.vdocuments.pub/reader034/viewer/2022051517/55cf8e41550346703b9033a4/html5/thumbnails/22.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022051517/55cf8e41550346703b9033a4/html5/thumbnails/23.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022051517/55cf8e41550346703b9033a4/html5/thumbnails/24.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022051517/55cf8e41550346703b9033a4/html5/thumbnails/25.jpg)
Tasas de crecimiento
![Page 26: Analisis de Tiempos](https://reader034.vdocuments.pub/reader034/viewer/2022051517/55cf8e41550346703b9033a4/html5/thumbnails/26.jpg)
Tasas de crecimiento
![Page 27: Analisis de Tiempos](https://reader034.vdocuments.pub/reader034/viewer/2022051517/55cf8e41550346703b9033a4/html5/thumbnails/27.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022051517/55cf8e41550346703b9033a4/html5/thumbnails/28.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022051517/55cf8e41550346703b9033a4/html5/thumbnails/29.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022051517/55cf8e41550346703b9033a4/html5/thumbnails/30.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022051517/55cf8e41550346703b9033a4/html5/thumbnails/31.jpg)
Ejercicios
Implementar in algoritmo de búsqueda binaria y luego realizar el análisis asintótico O(n)
![Page 32: Analisis de Tiempos](https://reader034.vdocuments.pub/reader034/viewer/2022051517/55cf8e41550346703b9033a4/html5/thumbnails/32.jpg)
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.