2. Complejidad de un Algoritmo
• La complejidad de un algoritmo depende del
tamaño del problema que deseamos resolver
3. 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.
4. Espacio
• Para este recurso la complejidad es la cantidad
de memoria requerida para la ejecución del
algoritmo.
5. 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).
6. Tiempo
• Para este recurso la complejidad es la cantidad
de tiempo que necesita un algoritmo para
realizar sus operaciones.
7. 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.
8. Peor Caso
• Indica cuántas operaciones debe realizar un
algoritmo dado para garantizar que producirá
una solución al problema a resolver.
9. Caso Promedio
• Como el nombre lo indica busca encontrar el
promedio de operaciones efectuadas para
solucionar un problema.
10. Tiempo de Ejecución.
• Cuando el tamaño de una entrada crece, la
función para medir dicha complejidad es
denotada como T(n)
11. 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.
12. • 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.
13. 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
14. • 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.
15. • 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.