El documento presenta un resumen de los conceptos clave del análisis de algoritmos, incluyendo modelos de referencia como la máquina de acceso aleatorio, el análisis del algoritmo de ordenamiento por inserción mostrando que su tiempo de ejecución es cuadrático, y las notaciones como Theta, Big-Oh y Omega para expresar el orden de crecimiento de funciones que modelan el tiempo de ejecución de los algoritmos.
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
Análisis Algoritmos Insertion Sort
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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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