3. La complejidad de un algoritmo se expresa en función del
tamaño del problemaque se desea resolver.
4. La complejidad de un algoritmo
es una medidade la cantidad de
recursos(tiempo y espacio)
que un algoritmonecesita.
pilarpardohidalgo@gmail.com
5. La complejidad es la cantidad
de memoria requerida para su ejecución.
Si el recurso es ESPACIO
pilarpardohidalgo@gmail.com
6. La complejidad se asocia a la cantidad de tiempo que necesita el
algoritmo para la ejecución de operaciones.
Si el recurso es TIEMPO
pilarpardohidalgo@gmail.com
7. La complejidad del algoritmo está asociada a las estructuras de datos usadas su implementación
Si el recurso es ESPACIO
Internas
Externas
Estructura
de Datos
- Vectores
- MatrizEstáticas
Dinámicas
Bases de
Datos
Archivos
Lineales
No Lineales
- Pilas
- Listas
- Colas
- Árboles
- Grafos
pilarpardohidalgo@gmail.com
8. Cada algoritmo se comporta de modo diferente de acuerdo a
cómo se le entregue la información (variables de entrada)
pilarpardohidalgo@gmail.com
9. Por eso es conveniente estudiar
su comportamiento en casos extremos.
[Datos muy ordenados o muy desordenados]
pilarpardohidalgo@gmail.com
10. Este análisis indica cuántas operaciones tienen que realizar los
algoritmos para GARANTIZAR que producirán una SOLUCION.
Complejidad del Peor Caso
11. Se busca el promedio de operaciones
realizadas para solucionar un problema considerando todas las
posibles entradas con un tamaño determinado.
Complejidad del Caso Promedio
pilarpardohidalgo@gmail.com
12. El interés principal del análisis de algoritmos radica en saber cómo
crece el
Tiempo de Ejecución
cuando el tamaño de la entrada crece , la función para medir esa
complejidad se denota como T(n).
Esta función se puede medir físicamente ejecutando
el programa, calcularse sobre el código contando
instrucciones a ejecutar y multiplicando por el
tiempo requerido por cada instrucción
14. Necesitamos analizar la potenciade los algoritmos
independientemente de la potencia de la máquina que los ejecute
e incluso de la habilidad del programador que los codifique.
15. Casi siempre los problemas pequeños se pueden resolver de
cualquier forma.
Nos interesa entonces el análisis especialmente cuando el
algoritmo se aplica a grandes problemas.
16. Las consideraciones anteriores nos llevan a 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 a Infinito
Es decir, su Comportamiento
Asintótico.
pilarpardohidalgo@gmail.com
17. Se denomina “asintótica” porque analiza el comportamiento de las
funciones en base a su tasa de crecimiento.
La notación asintótica se describe por medio de una función cuyo
dominio es los números naturales N , estimado a partir de tiempo de
ejecución o de espacio de memoria de algoritmos en base a la
longitud de la entrada. La complejidad del algoritmo se denota según
la notación Big-O.
Se consideran las funciones asintóticamente no negativas.
18. Lo que vamos a intentar es identificar "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 le denominaremos un
orden de complejidad.
Habitualmente estos conjuntos se denominan O
existiendo una infinidad de ellos.