Análisis de algoritmos

2,208 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,208
On SlideShare
0
From Embeds
0
Number of Embeds
20
Actions
Shares
0
Downloads
67
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Análisis de algoritmos

  1. 1. Outline Modelos de referencia An´lisis del Insertion Sort a Crecimiento de funciones Notaci´n Theta o Notaci´n Big Oh o Notaci´n Omega o Notaci´n Small o o An´lisis de Algoritmos a Roberto Carlos Abreu D´ ıaz December 2, 2009 Roberto Carlos Abreu D´ ıaz An´lisis de Algoritmos a
  2. 2. Outline Modelos de referencia An´lisis del Insertion Sort a Crecimiento de funciones Notaci´n Theta o Notaci´n Big Oh o Notaci´n Omega o Notaci´n Small o o 1 Modelos de referencia 2 An´lisis del Insertion Sort a Pseudoc´digo o 3 Crecimiento de funciones 4 Notaci´n Theta o 5 Notaci´n Big Oh o 6 Notaci´n Omega o 7 Notaci´n Small o o Roberto Carlos Abreu D´ ıaz An´lisis de Algoritmos a
  3. 3. Outline Modelos de referencia An´lisis del Insertion Sort a Crecimiento de funciones Notaci´n Theta o Notaci´n Big Oh o Notaci´n Omega o Notaci´n Small o o Modelos de referencia Antes de analizar un algoritmo debemos tener un modelo de la implementaci´n de la tecnolog´ que se va a usar, incluyendo un o ıa modelo para los recursos de esa tecnolog´ y sus costos. ıa Nosotros... Asumamos un modelo de computaci´n gen´rico de acceso aleatorio o e (Random-Access Machine) y nuestros algoritmos son implementados como programas de computadoras Roberto Carlos Abreu D´ ıaz An´lisis de Algoritmos a
  4. 4. Outline Modelos de referencia An´lisis del Insertion Sort a Crecimiento de funciones Notaci´n Theta o Notaci´n Big Oh o Notaci´n Omega o Notaci´n Small o o El modelo RAM Las instrucciones se ejecutan una tras otra No hay operaciones concurrentes Roberto Carlos Abreu D´ ıaz An´lisis de Algoritmos a
  5. 5. Outline Modelos de referencia An´lisis del Insertion Sort a Crecimiento de funciones Notaci´n Theta o Notaci´n Big Oh o Notaci´n Omega o Notaci´n Small o o El modelo RAM Las instrucciones se ejecutan una tras otra No hay operaciones concurrentes Contiene instrucciones com´nmente encontradas en u computadores reales: aritm´ticas( +, -, *, /, %), movimiento e de data (cargar, copiar, almacenar) y control (condicionales, llamado de funciones y retorno) Roberto Carlos Abreu D´ ıaz An´lisis de Algoritmos a
  6. 6. Outline Modelos de referencia An´lisis del Insertion Sort a Crecimiento de funciones Notaci´n Theta o Notaci´n Big Oh o Notaci´n Omega o Notaci´n Small o o El modelo RAM Las instrucciones se ejecutan una tras otra No hay operaciones concurrentes Contiene instrucciones com´nmente encontradas en u computadores reales: aritm´ticas( +, -, *, /, %), movimiento e de data (cargar, copiar, almacenar) y control (condicionales, llamado de funciones y retorno) No modela la jerarqu´ de memoria que se encuentra en ıa las arquitecturas modernas: cache, memoria virtual, etc... Roberto Carlos Abreu D´ ıaz An´lisis de Algoritmos a
  7. 7. Outline Modelos de referencia An´lisis del Insertion Sort a Crecimiento de funciones Notaci´n Theta o Notaci´n Big Oh o Notaci´n Omega o Notaci´n Small o o El modelo RAM Las instrucciones se ejecutan una tras otra No hay operaciones concurrentes Contiene instrucciones com´nmente encontradas en u computadores reales: aritm´ticas( +, -, *, /, %), movimiento e de data (cargar, copiar, almacenar) y control (condicionales, llamado de funciones y retorno) No modela la jerarqu´ de memoria que se encuentra en ıa las arquitecturas modernas: cache, memoria virtual, etc... Roberto Carlos Abreu D´ ıaz An´lisis de Algoritmos a
  8. 8. Outline Modelos de referencia An´lisis del Insertion Sort a Crecimiento de funciones Pseudoc´digo o Notaci´n Theta o Notaci´n Big Oh o Notaci´n Omega o Notaci´n Small o o An´lisis del Insertion Sort a El tiempo que toma Insertion Sort depende fundamentalmente de la entrada: el ordenamiento de 1,000 n´meros toma m´s u a que el de 10. M´s aun, el Insertion Sort puede tomar distinta cantidad de a tiempo para ordenar dos entradas del mismo tama˜o pero n diferiendo en qu´ tan ya ordenadas est´n. e e Preliminares... El tiempo de ejecuci´n de un algoritmo en funci´n de su entrada es o o la cantidad pasos ejecutados. Asumeremos que un tiempo constante se necesita para ejecutar cada l´ınea de c´digo. o Las l´ıneas pueden tener distintos tiempos, pero asumeremos que el tiempo de la i-´sima l´ e ınea toma Ci, donde Ci es constante. Roberto Carlos Abreu D´ ıaz An´lisis de Algoritmos a
  9. 9. Outline Modelos de referencia An´lisis del Insertion Sort a Crecimiento de funciones Pseudoc´digo o Notaci´n Theta o Notaci´n Big Oh o Notaci´n Omega o Notaci´n Small o o Pseudoc´digo o Las l´ ıneas donde est´n definidos los bucles se ejecutan una vez a m´s que el cuerpo del bucle mismo. ¿Por qu´? a e El tiempo de ejecuci´n del algoritmo es la suma de los o tiempos de ejecuci´n de cada sentencia ejecutada. Una o sentencia que tome Cx tiempo An´lisis de Algoritmos veces contribuye Roberto Carlos Abreu D´ ıaz ya se repita n
  10. 10. Outline Modelos de referencia An´lisis del Insertion Sort a Crecimiento de funciones Pseudoc´digo o Notaci´n Theta o Notaci´n Big Oh o Notaci´n Omega o Notaci´n Small o o Tiempo de ejecuci´n del Insertion Sort o Sumando los productos anteriores (costo x veces) llegamos a la siguiente f´rmula: o T(n) = c1 n + c2 (n − 1) + c4 (n − 1) + c5 n tj + j=2 c6 n (tj − 1) + c7 n (tj − 1) + c8 (n − 1) j=2 j=2 Roberto Carlos Abreu D´ ıaz An´lisis de Algoritmos a
  11. 11. Outline Modelos de referencia An´lisis del Insertion Sort a Crecimiento de funciones Pseudoc´digo o Notaci´n Theta o Notaci´n Big Oh o Notaci´n Omega o Notaci´n Small o o Tiempo de ejecuci´n del Insertion Sort (2) o Notando que: n n(n+1) j=2 tj = 2 −1 y n n(n+1) j=2 (tj − 1) = 2 Entonces: T(n) = c1 n + c2 (n − 1) + c4 (n − 1) + c5 ( n(n+1) − 1) + c6 ( n(n+1)) + c7 ( n(n+1) ) 2 2 2 T(n) T(n) = ( c25 + c26 + c27 )n2 +(c1 +c2 +c4 + c25 − c26 − c27 +c8 )n−(c2 +c4 +c5 +c8 ) Roberto Carlos Abreu D´ ıaz An´lisis de Algoritmos a
  12. 12. Outline Modelos de referencia An´lisis del Insertion Sort a Crecimiento de funciones Pseudoc´digo o Notaci´n Theta o Notaci´n Big Oh o Notaci´n Omega o Notaci´n Small o o Este tiempo de ejecuci´n puede ser expresado de la forma o an2 + bn + c para las constantes a, b y c que dependen de los costos ci . Por lo tanto, es una funci´n cuadr´tica o a Generalmente nos interesamos por el peor tiempo de ejecuci´n o de los algoritmos, porque... (1) Es un l´ ımite superior, garantiza que el algoritmo no exceder´ tal l´ a ımite (2) El peor de los casos ocurre frecuentemente. Considera el ejemplo de una b´squeda en una base de datos. u (3) El caso promedio es dif´ de especificar y termina siendo ıcil una funci´n similar a la del peor de los casos o Roberto Carlos Abreu D´ ıaz An´lisis de Algoritmos a
  13. 13. Outline Modelos de referencia An´lisis del Insertion Sort a Crecimiento de funciones Notaci´n Theta o Notaci´n Big Oh o Notaci´n Omega o Notaci´n Small o o Crecimiento de funciones En el an´lisis de algoritmos nos interesa la proporci´n o orden a o de crecimiento. Este orden de crecimiento es el t´rmino de mayor orden del e polinomio que expresa el tiempo de ejecuci´n (n2 en el caso o del ordenamiento por inserci´n o Esto es porque, a medida que n crece, los otros t´rminos no e aportan tanto. En el caso del ordenamiento por inserci´n, decimos entonces o que su tiempo de ejecuci´n en el peor de los casos es de orden o θ(n2 ) Hay distintas notaciones para expresar el tiempo de ejecuci´n... o Roberto Carlos Abreu D´ ıaz An´lisis de Algoritmos a
  14. 14. Outline Modelos de referencia An´lisis del Insertion Sort a Crecimiento de funciones Notaci´n Theta o Notaci´n Big Oh o Notaci´n Omega o Notaci´n Small o o Notaci´n Theta o Dada una funci´n g (n), decimos por Θ(g (n)) el conjunto de o funciones Θ(g (n)) = {f(n): existen constantes positivas c1 , c2 yn0 tal que 0 <= c1 g (n) <= f (n) <= c2 g (n) para todas las n => n0} O sea Una funci´n f(n) pertenece al conjunto Θ(g (n)) si existen o constante c1 yc2 tal que pueda estar en el medio entre c1 g (n)yc2 g (n), para una n suficientemente grande. Al decir f(n) = Θ(g (n)) se debe leer ”f(n) es del orden Θ(g (n))” Roberto Carlos Abreu D´ ıaz An´lisis de Algoritmos a
  15. 15. Outline Modelos de referencia An´lisis del Insertion Sort a Crecimiento de funciones Notaci´n Theta o Notaci´n Big Oh o Notaci´n Omega o Notaci´n Small o o Roberto Carlos Abreu D´ ıaz An´lisis de Algoritmos a
  16. 16. Outline Modelos de referencia An´lisis del Insertion Sort a Crecimiento de funciones Notaci´n Theta o Notaci´n Big Oh o Notaci´n Omega o Notaci´n Small o o Notaci´n Big Oh o Dada una funci´n g (n), denotamos por O(g (n)) el conjunto de o funciones O(g (n)) = {f(n): existen constantes positivas cyn0 tal que f (n) <= cg (n) para todas las n => n0} O sea La notaci´n O s´lo denota un l´ o o ımite superior. Es como decir, ”a lo sumo X”. Por lo tanto, n = O(n2 ). Esto implica tambi´n que al e utilizar la notaci´n O para expresar el peor tiempo de ejecuci´n de o o un algoritmo, tambi´n estamos expresando tiempo de ejecuci´n e o para cada entrada. Al decir f(n) = O(g (n)) se debe leer ”f(n) es del orden O(g (n))” Roberto Carlos Abreu D´ ıaz An´lisis de Algoritmos a
  17. 17. Outline Modelos de referencia An´lisis del Insertion Sort a Crecimiento de funciones Notaci´n Theta o Notaci´n Big Oh o Notaci´n Omega o Notaci´n Small o o Roberto Carlos Abreu D´ ıaz An´lisis de Algoritmos a
  18. 18. Outline Modelos de referencia An´lisis del Insertion Sort a Crecimiento de funciones Notaci´n Theta o Notaci´n Big Oh o Notaci´n Omega o Notaci´n Small o o Notaci´n Omega o Dada una funci´n g (n), denotamos por Ω(g (n)) el conjunto de o funciones Ω(g (n)) = {f(n): existen constantes positivas cyn0 tal que 0 <= cg (n) <= f (n) para todas las n => n0} O sea As´ como O(g(n)) expresa un l´ ı ımite asint´tico superior, Ω(g (n)) o exprea un l´ ımite asint´tico inferior. Esto implica, similar a Big Oh, o que al expresar el mejor tiempo de ejecuci´n con Ω tambi´n o e estamos expresando el tiempo de ejecuci´n de todas las entradas. o Ejemplo: El tiempo de ejecuci´n del insertion-sort cae entre o Ω(n)yO(n2 ). Al decir f(n) = Ω(g (n)) se debe leer ”f(n) es del orden Ω(g (n))” Roberto Carlos Abreu D´ ıaz An´lisis de Algoritmos a
  19. 19. Outline Modelos de referencia An´lisis del Insertion Sort a Crecimiento de funciones Notaci´n Theta o Notaci´n Big Oh o Notaci´n Omega o Notaci´n Small o o Small o Dada una funci´n g (n), denotamos por o(g (n)) el conjunto de o funciones o(g (n)) = {f(n): existen constantes positivas cyn0 tal que 0 <= f (n) < cg (n) para todas las n => n0} O sea Small o representa, a diferencia de Big O, un l´ ımite asint´tico o superior pero no fuerte. Ejemplo: 2n = o(n2 ) pero no 2n2 = o(n2 ) Al decir f(n) = o(g (n)) se debe leer ”f(n) es del orden o(g (n))” Roberto Carlos Abreu D´ ıaz An´lisis de Algoritmos a

×