Upload
andres-ibarra
View
126
Download
3
Embed Size (px)
Citation preview
Análisis de Algoritmos
La Complejidad en los Algoritmos
Nombre: Felipe Burgos
Complejidad de un Algoritmo
• La complejidad de un algoritmo depende del tamaño del problema que deseamos resolver
Complejidad de un Algoritmo
• La complejidad de un algoritmo se puede entender como una medición de la cantidad de recursos que un algoritmo necesita para su funcionamiento.
Espacio
• Para este recurso la complejidad es la cantidad de memoria requerida para la ejecución del algoritmo.
Espacio
• La complejidad del algoritmo también se asocia a las diferentes estructuras de datos usadas en su implementación, ya sean estáticas (vectores o matrices) o dinámicas (pilas, listas, colas, árboles y grafos).
Tiempo
• Para este recurso la complejidad es la cantidad de tiempo que necesita un algoritmo para realizar sus operaciones.
Variables de entrada
• Los algoritmos se comportan de distinta manera de acuerdo a como se les ingrese la información.
• Por esto es necesario analizar como se comportan en los casos extremos, utilizando datos muy ordenados o datos muy desordenados.
Peor Caso
• Indica cuántas operaciones debe realizar un algoritmo dado para garantizar que producirá una solución al problema a resolver.
Caso Promedio
• Como el nombre lo indica busca encontrar el promedio de operaciones efectuadas para solucionar un problema.
Tiempo de Ejecución.
• Cuando el tamaño de una entrada crece, la función para medir dicha complejidad es denotada como T(n)
Notación Asintótica
• Se necesita analizar la potencia de los algoritmos independientemente de al potencia del hardware que los ejecute e incluso de la habilidad del desarrollador que los codifique.
• Los problemas pequeños se pueden resolver de cualquier forma, pero es de nuestro interés el análisis cuando el algoritmo se aplica a grandes problemas.
Comportamiento Asintótico
• En base a lo anterior nos interesa estudiar el comportamiento de un algoritmo cuando se fuerza el tamaño del problema al que se aplica.
• Matemáticamente hablando es cuando N tiende al infinito
• Se denomina asintótico porque se analiza el comportamiento de las funciones en base a su tasa de crecimiento.
• Esta notación se describe por medio de una función cuyo dominio es de los números naturales (N), estimado a partir de los recursos tiempo de ejecución o de espacio de memoria de algoritmos en base a la longitud de entrada.
• Lo que se intenta identificar son “familias” de funciones usando como criterio de agrupación su comportamiento asintótico.
• A un conjunto de funciones que comparten un mismo comportamiento asintótico les denominamos un orden de complejidad.