complejidad de los algoritmos
DESCRIPTION
Complejidad de los algoritmosTRANSCRIPT
![Page 1: Complejidad de los Algoritmos](https://reader033.vdocuments.net/reader033/viewer/2022052909/5597e9581a28abb4628b4741/html5/thumbnails/1.jpg)
Análisis de Algoritmos
![Page 3: Complejidad de los Algoritmos](https://reader033.vdocuments.net/reader033/viewer/2022052909/5597e9581a28abb4628b4741/html5/thumbnails/3.jpg)
La complejidad de un algoritmo se expresa en función del
tamaño del problema que se desea resolver.
![Page 4: Complejidad de los Algoritmos](https://reader033.vdocuments.net/reader033/viewer/2022052909/5597e9581a28abb4628b4741/html5/thumbnails/4.jpg)
La complejidad de un algoritmo
es una medida de la cantidad de
recursos (tiempo y espacio)
que un algoritmo necesita.
![Page 5: Complejidad de los Algoritmos](https://reader033.vdocuments.net/reader033/viewer/2022052909/5597e9581a28abb4628b4741/html5/thumbnails/5.jpg)
La complejidad es la cantidad
de memoria requerida para su ejecución.
Si el recurso es ESPACIO
pila
rpar
dohi
dalg
o@gm
ail.c
om
![Page 6: Complejidad de los Algoritmos](https://reader033.vdocuments.net/reader033/viewer/2022052909/5597e9581a28abb4628b4741/html5/thumbnails/6.jpg)
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@gm
ail.com
![Page 7: Complejidad de los Algoritmos](https://reader033.vdocuments.net/reader033/viewer/2022052909/5597e9581a28abb4628b4741/html5/thumbnails/7.jpg)
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
- Matriz Estáticas
Dinámicas
Bases de
Datos
Archivos
Lineales
No Lineales
- Pilas
- Listas
- Colas
- Árboles
- Grafos
![Page 8: Complejidad de los Algoritmos](https://reader033.vdocuments.net/reader033/viewer/2022052909/5597e9581a28abb4628b4741/html5/thumbnails/8.jpg)
Cada algoritmo se comporta de modo diferente de acuerdo a
cómo se le entregue la información (variables de entrada)
![Page 9: Complejidad de los Algoritmos](https://reader033.vdocuments.net/reader033/viewer/2022052909/5597e9581a28abb4628b4741/html5/thumbnails/9.jpg)
Por eso es conveniente estudiar
su comportamiento en casos extremos.
[Datos muy ordenados o muy desordenados]
![Page 10: Complejidad de los Algoritmos](https://reader033.vdocuments.net/reader033/viewer/2022052909/5597e9581a28abb4628b4741/html5/thumbnails/10.jpg)
Este análisis indica cuántas operaciones tienen que realizar los
algoritmos para GARANTIZAR que producirán una SOLUCION.
Complejidad del Peor Caso
![Page 11: Complejidad de los Algoritmos](https://reader033.vdocuments.net/reader033/viewer/2022052909/5597e9581a28abb4628b4741/html5/thumbnails/11.jpg)
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
![Page 12: Complejidad de los Algoritmos](https://reader033.vdocuments.net/reader033/viewer/2022052909/5597e9581a28abb4628b4741/html5/thumbnails/12.jpg)
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
![Page 14: Complejidad de los Algoritmos](https://reader033.vdocuments.net/reader033/viewer/2022052909/5597e9581a28abb4628b4741/html5/thumbnails/14.jpg)
Necesitamos analizar la potencia de los algoritmos
independientemente de la potencia de la máquina que los ejecute e incluso de la habilidad del programador que los codifique.
![Page 15: Complejidad de los Algoritmos](https://reader033.vdocuments.net/reader033/viewer/2022052909/5597e9581a28abb4628b4741/html5/thumbnails/15.jpg)
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.
![Page 16: Complejidad de los Algoritmos](https://reader033.vdocuments.net/reader033/viewer/2022052909/5597e9581a28abb4628b4741/html5/thumbnails/16.jpg)
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.
![Page 17: Complejidad de los Algoritmos](https://reader033.vdocuments.net/reader033/viewer/2022052909/5597e9581a28abb4628b4741/html5/thumbnails/17.jpg)
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.
![Page 18: Complejidad de los Algoritmos](https://reader033.vdocuments.net/reader033/viewer/2022052909/5597e9581a28abb4628b4741/html5/thumbnails/18.jpg)
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.
![Page 19: Complejidad de los Algoritmos](https://reader033.vdocuments.net/reader033/viewer/2022052909/5597e9581a28abb4628b4741/html5/thumbnails/19.jpg)
Complejidad Terminología
O(1) Complejidad constante
O(n2) Complejidad cuadrática
O(log n) Complejidad logarítmica
O(n) Complejidad lineal
O(n log n) Complejidad casi-lineal
O(n^b) Complejidad polinómica
O(b^n) Complejidad exponencial
O(n!) Complejidad factorial
![Page 20: Complejidad de los Algoritmos](https://reader033.vdocuments.net/reader033/viewer/2022052909/5597e9581a28abb4628b4741/html5/thumbnails/20.jpg)
Talla = Tamaño del problema