Está en la página 1de 12

Algoritmos: análisis asintótico

▪ Herramientas para análisis de algoritmos


▪ Definición del análisis asintótico
▪ Orden de crecimiento
▪ Clasificaciones de orden de crecimiento
▪ Constante
▪ Lineal
▪ Cuadrática
▪ Logarítmica
▪ Exponencial
▪ Casos de orden de crecimiento
▪ Worst-case order
▪ Average-case order
▪ Best-case order

linkedin.com/in/samuelluciano| learningwithsam.com
How long will my program take?
Why does my program run out of memory?
Is it my algorythm consider efficient?
How is the performance of my algorythm?
Is it better o worst than…?
Herramientas para análisis de algoritmos

▪ Método Científico
▪ Modelos Matemáticos
▪ Notación de tilde (~)
▪ Orden de crecimiento
Método Científico
▪ Observar
▪ Formular la hipótesis
▪ Predecir
▪ Verificar
▪ Validar

N Tiempo de ejecución
1000 0.1 s
2000 0.8 s
4000 6.4 s
8000 51.1 s
Método Científico
En términos de logaritmo, se podría modelar
una función basado en la experimentación:

Aplicando reglas logarítmicas podríamos


determinar la función matemática que modela
este comportamiento:

Tomando uno de los valores de la tabla del slide


anterior, podemos determinar el valor de la
constante a:
Modelos Matemáticos
Según D. E. Knuth, el tiempo total de ejecución de un algoritmo depende de:
▪ El costo de ejecutar cada sentencia en el computador
▪ La frecuencia de ejecución de cada sentencia según el código fuente

El if del loop mas interno se ejecuta exactamente:


Notación de tilde (~)
Considerando la expresión matemática que se encuentra debajo, en este tipo de expresiones es
típico que haya un término dominante que lidera el crecimiento de la función en comparación
con los demás términos.

N N3/6 N2/2 + N/3


500 20,833,333 125,166
1000 166,666,666 500,333
2000 1,333,333,333 2,000,666

Para representar una función que al ser dividida por f(n) tiende a 1 en la medida que n crece, utilizamos
~f(n). g(n) ~f(n) indica que g(n)/f(n) se aproxima a 1 en la medida en que n crece.
Orden de crecimiento
A pesar de que los análisis matemáticos proveen una aproximación mas real al tiempo de
ejecución de un algoritmo, cuando se trata de comparar eficiencia, se puede utilizar un análisis
mas empírico para determinar el crecimiento de estos y realizar comparaciones.
Orden de crecimiento: clasificaciones

Constante

Logarítmico

Linear

Linearítmico

Cuadrático

Cúbico

Exponencial
Orden de crecimiento: clasificaciones
Orden de crecimiento: casos

Best case Average case Worst case


¿Preguntas?

También podría gustarte