15
Análisis de Algoritmos La Complejidad en los Algoritmos Nombre: Felipe Burgos

La complejidad en los algoritmos

Embed Size (px)

Citation preview

Page 1: La complejidad en los algoritmos

Análisis de Algoritmos

La Complejidad en los Algoritmos

Nombre: Felipe Burgos

Page 2: La complejidad en los algoritmos

Complejidad de un Algoritmo

• La complejidad de un algoritmo depende del tamaño del problema que deseamos resolver

Page 3: La complejidad en los algoritmos

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.

Page 4: La complejidad en los algoritmos

Espacio

• Para este recurso la complejidad es la cantidad de memoria requerida para la ejecución del algoritmo.

Page 5: La complejidad en los algoritmos

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).

Page 6: La complejidad en los algoritmos

Tiempo

• Para este recurso la complejidad es la cantidad de tiempo que necesita un algoritmo para realizar sus operaciones.

Page 7: La complejidad en los algoritmos

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.

Page 8: La complejidad en los algoritmos

Peor Caso

• Indica cuántas operaciones debe realizar un algoritmo dado para garantizar que producirá una solución al problema a resolver.

Page 9: La complejidad en los algoritmos

Caso Promedio

• Como el nombre lo indica busca encontrar el promedio de operaciones efectuadas para solucionar un problema.

Page 10: La complejidad en los algoritmos

Tiempo de Ejecución.

• Cuando el tamaño de una entrada crece, la función para medir dicha complejidad es denotada como T(n)

Page 11: La complejidad en los algoritmos

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.

Page 12: La complejidad en los algoritmos

• 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.

Page 13: La complejidad en los algoritmos

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

Page 14: La complejidad en los algoritmos

• 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.

Page 15: La complejidad en los algoritmos

• 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.