Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
: Resta
t
: Incremento t
: Acceso al vector
Resumen tema 2 Curso 2007/08 Pgina 6 de 8
Las distintas sentencias del algoritmo anterior son:
(1) to + (n 1) ti + n tc
siendo:
t
u
: Asigna i el valor 2 (i 2).
t
+t
) (n 1)
siendo:
t
u
: Significa que hay dos asignaciones (x I[i] y ] i 1)
t
) N(i,I)
(4) (2 t
+2 t
u
+t
+t
) N(i,I)
siendo:
N(i,I): Nmero de iteraciones del bucle mientras en cada
pasada del bucle para. Depende de i y del vector T, por lo que
ser variable.
El tiempo total del bucle mientras ser la suma de (3) y (4):
(3) +(4) (3 t
+2 t
u
+2 t
c
+t
+t
) N(i,I)
(5) (t
+t
+t
u
) (n 1)
Hemos visto los tiempos que emplean. Luego analizaremos los casos
peores y mejores, aunque el caso promedio ya veremos que no es tan fcil
hallarlo, ya que requiere un cono cimiento a priori acerca de la
distribucin de los casos que hay que resolver. Esto suele ser un requisito
poco realista.
Normalmente, consideraremos el caso peor del algoritmo, esto es, para
cada tamao de caso slo consideraremos aqullos en los cuales el
algoritmo requiera ms tiempo, a no ser que se indique lo contrario. Suele
ser ms difcil analizar el comportamiento medio del algoritmo que
hacerlo en el caso peor.
Resumen tema 2 Curso 2007/08 Pgina 7 de 8
2.5. Qu es una operacin elemental?
Corresponder tambin como el principio de invarianza con el primer factor
visto previamente, recordemos que era la implementacin.
Definicin: Una operacin elemental es aqulla cuyo tiempo de ejecucin
puede ser acotada superiormente por una constante que slo depender de la
implementacin particular usada: de la mquina, del lenguaje de programacin,
etc.
De esta manera, la constante no depende ni del tamao ni de los parmetros del
ejemplar que se est considerando. Pueden ser operaciones tales como sumas,
restas, multiplicaciones, divisiones, accesos a un vector, operaciones booleanas,
comparaciones.
Veremos al igual que el anterior algoritmo esta parte en el tema 7, no obstante
hay que hacer hincapi en la definicin, porque se usa mucho y es importante.
Un ejemplo: Supongamos que cuando se analiza algn algoritmo, encontramos
que para resolver un caso de un cierto tamao se necesita efectuar a adiciones, m
multiplicaciones y s instrucciones de asignacin.
Supongamos tambin que se sabe que una suma nunca requiere ms de t
u
ms.,
que una multiplicacin nunca requiere ms de t
m
ms. y que una asignacin
nunca requiere ms de t
s
ms., donde t
u
, t
m
y t
s
son constantes que dependen de
la mquina utilizada. El tiempo total T requerido por nuestro algoritmo estar
acotado por:
I o t
u
+m t
m
+s t
s
max (t
u
, t
m
, t
s
) (o +m+s)
siendo:
o,m,s: Variables segn la implementacin.
t
u
,t
m
,t
s
: Constantes que cambiarn de una implementacin a otra.
T estar acotado por un mltiplo constante del nmero de operaciones
elementales (ejecutadas a coste unitario) que hay que ejecutar.
En conclusin, el primer factor del tiempo de ejecucin visto anteriormente, que
es la implementacin no afectar mucho al coste del algoritmo.
Resumen tema 2 Curso 2007/08 Pgina 8 de 8
2.6. Ms factores de tiempo
En cuanto a los otros factores del tiempo de algoritmo trataremos los dos que
nos quedan los siguientes (aadido del autor, tomando apuntes de otra persona).
Recordemos que hemos visto previamente la implementacin (apartado 2.3):
El contenido de los datos:
En nuestro ejemplo de la ordenacin por insercin tendremos estos casos:
1. Vector ya ordenado:
i
Parte ordenada j Parte desordenada
Nunca se entrar en el bucle mientras (mientras ] >0 y
x <I[]]) por no cumplirse la condicin de x <I[]]. Por tanto,
N(|,T) =.
Recordemos que N(i,I) es el nmero de iteraciones del bucle
mientras en cada pasada del bucle para.
2. Vector completamente desordenado (de mayor a menor):
Se recorrern todos los elementos de la parte desordenada hasta
encontrar su posicin. En este caso, N(|,T) =|.
Tamao del problema:
Siguiendo el ejemplo anterior tendremos:
(1) Coste n
(2) Coste n
Coste
- Caso mejor 0
(3) +(4)
- Caso peor i
n
=2
(5) Coste n
Caso mejor: Vector ya ordenado. Tiene coste lineal (n).
Caso peor: Vector completamente desordenado.
n + i costc n
2
( i
n
=2
n
=2
=
n(n+1)
2
n
2
)
Caso promedio: En general haremos el anlisis para el caso peor. No es
normal hacerlo para el caso promedio.