14
Complejidad de un algoritmo. Análisis de algoritmos. Autor: Luis Guzmán. Docente: Pilar Pardo. 26 – Marzo – 2014.

Complejidad de un algoritmo

Embed Size (px)

Citation preview

Complejidad de un algoritmo.Análisis de algoritmos.

Autor: Luis Guzmán.Docente: Pilar Pardo.26 – Marzo – 2014.

¿Qué es la complejidad de un algoritmo?

La complejidad de un algoritmo es una métrica que se expresa según el tamañodel problema, en donde se mide la cantidad de recursos (tiempo – espacio) que el algoritmo necesite.

En donde si el recurso a considerar es el espacio la complejidad se basa en la cantidad de memoria requerida para ejecutar, la cual está asociada a las estructuras de datos usadas en su implementación.

Estructuras de datos

Internas

EstáticasVectores

Matrices

Dinámicas

Lineales

Pilas

Listas

Colas

No linealesÁrboles

GrafosExternas

Bases de datos

Archivos

La complejidad se basa en la cantidad de tiempo necesario para la ejecución de operaciones.

Mientras que si el Recurso es tiempo

La resolución de un problema puede obtenerse con muchos algoritmos. Por tanto, es obvio querer elegir el “mejor”.

Si el problema es sencillo puede elegir el más “fácil”. Si el problema es complejo o existen muchas soluciones se tiene que elegir el algoritmo que menos recursos utilice (tiempo – espacio). La eficiencia de un algoritmo (lo rápido que se ejecutará) dependerá del “tamaño” de los datos de entrada.

El peor de los casos indica el mayor tiempo obtenido, considerando todas las entradas posibles.

El caso promedio indica el tiempo medio obtenido, considerando todas las entradas posibles.

El mejor de los casos indica el menor tiempo obtenido, considerando todas las entradas posibles.

Si los datos de entrada son grandes el tiempo de ejecución será mayor.

Expresado como T(n).

Tiempo de ejecución.

Notación Asintótica

Comportamiento límite de una función denotado por Big-0

Lo más importante del análisis de algoritmo es saber cómo crece el tiempo de ejecución cuando el tamaño de entrada crece.

A esto se le denomina eficiencia asintótica del algoritmo, donde se indica como crece "t" para los valores que tienden al infinito, es decir con comportamiento asintótico.

"Asintótico es analizar el comportamiento de las funciones en base a su tasa de crecimiento." Para esto se creó la notación Big-0 donde 0 es un valor que puede tender al infinito.

Existe un conjunto de funciones que poseen un mismo comportamiento, a esto se le denomina orden de complejidad, el cual está representado por la siguiente tabla

Complejidad Orden

O(1) Constante

0(n2) Cuadrática

0(log n) Logarítmica

0(n) Lineal

0(n log n) Casi-Lineal

0(nb) Polinómica

0(bn) Exponencial

0(n!) Factorial