Complejidad de los Algoritmos

12,137 views

Published on

Complejidad de los algoritmos

3 Comments
5 Likes
Statistics
Notes
No Downloads
Views
Total views
12,137
On SlideShare
0
From Embeds
0
Number of Embeds
9,371
Actions
Shares
0
Downloads
59
Comments
3
Likes
5
Embeds 0
No embeds

No notes for slide

Complejidad de los Algoritmos

  1. 1. Análisis de Algoritmos
  2. 2. pilarpardohidalgo@gmail.com
  3. 3. La complejidad de un algoritmo se expresa en función deltamaño del problemaque se desea resolver.
  4. 4. La complejidad de un algoritmoes una medidade la cantidad derecursos(tiempo y espacio)que un algoritmonecesita.pilarpardohidalgo@gmail.com
  5. 5. La complejidad es la cantidadde memoria requerida para su ejecución.Si el recurso es ESPACIOpilarpardohidalgo@gmail.com
  6. 6. La complejidad se asocia a la cantidad de tiempo que necesita elalgoritmo para la ejecución de operaciones.Si el recurso es TIEMPOpilarpardohidalgo@gmail.com
  7. 7. La complejidad del algoritmo está asociada a las estructuras de datos usadas su implementaciónSi el recurso es ESPACIOInternasExternasEstructurade Datos- Vectores- MatrizEstáticasDinámicasBases deDatosArchivosLinealesNo Lineales- Pilas- Listas- Colas- Árboles- Grafospilarpardohidalgo@gmail.com
  8. 8. Cada algoritmo se comporta de modo diferente de acuerdo acómo se le entregue la información (variables de entrada)pilarpardohidalgo@gmail.com
  9. 9. Por eso es conveniente estudiarsu comportamiento en casos extremos.[Datos muy ordenados o muy desordenados]pilarpardohidalgo@gmail.com
  10. 10. Este análisis indica cuántas operaciones tienen que realizar losalgoritmos para GARANTIZAR que producirán una SOLUCION.Complejidad del Peor Caso
  11. 11. Se busca el promedio de operacionesrealizadas para solucionar un problema considerando todas lasposibles entradas con un tamaño determinado.Complejidad del Caso Promediopilarpardohidalgo@gmail.com
  12. 12. El interés principal del análisis de algoritmos radica en saber cómocrece elTiempo de Ejecucióncuando el tamaño de la entrada crece , la función para medir esacomplejidad se denota como T(n).Esta función se puede medir físicamente ejecutandoel programa, calcularse sobre el código contandoinstrucciones a ejecutar y multiplicando por eltiempo requerido por cada instrucción
  13. 13. pilarpardohidalgo@gmail.com
  14. 14. Necesitamos analizar la potenciade los algoritmosindependientemente de la potencia de la máquina que los ejecutee incluso de la habilidad del programador que los codifique.
  15. 15. Casi siempre los problemas pequeños se pueden resolver decualquier forma.Nos interesa entonces el análisis especialmente cuando elalgoritmo se aplica a grandes problemas.
  16. 16. Las consideraciones anteriores nos llevan a estudiar elcomportamiento de un algoritmo cuando se fuerza el tamaño delproblema al que se aplica.Matemáticamente hablando es cuandoN tiende a InfinitoEs decir, su ComportamientoAsintótico.pilarpardohidalgo@gmail.com
  17. 17. Se denomina “asintótica” porque analiza el comportamiento de lasfunciones en base a su tasa de crecimiento.La notación asintótica se describe por medio de una función cuyodominio es los números naturales N , estimado a partir de tiempo deejecución o de espacio de memoria de algoritmos en base a lalongitud de la entrada. La complejidad del algoritmo se denota segúnla notación Big-O.Se consideran las funciones asintóticamente no negativas.
  18. 18. Lo que vamos a intentar es identificar "familias"de funciones, usando como criterio de agrupación sucomportamiento asintótico.A un conjunto de funciones que comparten un mismocomportamiento asintótico le denominaremos unorden de complejidad.Habitualmente estos conjuntos se denominan Oexistiendo una infinidad de ellos.
  19. 19. Complejidad TerminologíaO(1) Complejidad constanteO(n2) Complejidad cuadráticaO(log n) Complejidad logarítmicaO(n) Complejidad linealO(n log n) Complejidad casi-linealO(n^b) Complejidad polinómicaO(b^n) Complejidad exponencialO(n!) Complejidad factorial
  20. 20. Talla = Tamaño del problema

×