Professional Documents
Culture Documents
Anlisis
de
la
eciencia
de
los
algoritmos
Coste
asintDco
temporal
ndice
3-2
Introduccin
rdenes de complejidad
Bibliografa
Javier Vlez Reyes jvelez@lsi.uned.es Jos Ignacio Mayorga Toledano nmayorga@lsi.uned .es
Obje8vos
3-3
Medida asinttica O
Algoritmos recursivos
Algoritmos iterativos
Javier Vlez Reyes jvelez@lsi.uned.es Jos Ignacio Mayorga Toledano nmayorga@lsi.uned .es
Denicin
El
anlisis
de
la
eciencia
de
los
algoritmos
es
un
estudio
terico,
formal,
compara6vo
e
independiente
de
la
implementacin
que
6ene
por
objeto
clasicar
a
los
algoritmos
en
familias
de
complejidad
de
acuerdo
a
cmo
se
comportan
segn
crece
la
magnitud
de
sus
parmetros
de
entrada
Estudio terico
3-4
Independencia
Estudio formal
De recursos de mquina
Terico
Comparativo
De aspectos constantes
Clasificatorio
De aspectos de escala
Javier Vlez Reyes jvelez@lsi.uned.es Jos Ignacio Mayorga Toledano nmayorga@lsi.uned .es
int temp;
int i = 0;
return repetidos;
temp = v[k];
v[k]
=
v[k-1];
v[k-1]=
temp;
int i = p;
tiempo
<
3-5
Javier Vlez Reyes jvelez@lsi.uned.es Jos Ignacio Mayorga Toledano nmayorga@lsi.uned .es
Criterios de medida
3-6
Espacial
Se analiza la relacin funcional existente entre
el tamao del problema expresado en trminos
de sus parmetros de entrada y la consumicin
del recurso memoria
Temporal
Se analiza la relacin funcional existente entre
el tamao del problema expresado en trminos
de sus parmetros de entrada y la consumicin
del recurso tiempo de cmputo
Foco de
atencin
Otros
Se analiza la relacin funcional existente entre
el tamao del problema expresado en trminos
de sus parmetros de entrada y la consumicin
de otros recursos como perifricos empleados,
ancho de banda, consumo elctrico, etc.
Javier Vlez Reyes jvelez@lsi.uned.es Jos Ignacio Mayorga Toledano nmayorga@lsi.uned .es
Criterios de medida
3-7
Peor caso
Se estima la mxima cantidad de recursos que
un algoritmo puede necesitar consumir para su
ejecucin en funcin de su entrada. Supone
una cota superior de estos recursos
Foco de
atencin
Caso medio
Se estima el comportamiento a partir de una
hiptesis sobre la distribucin estadstica de los
datos de entrada que se supone ms probable.
Tambin llamado anlisis probabilstico
Mejor caso
Se estiman los recursos necesarios para su
ejecucin en condiciones ptimas en funcin de
la entrada. Esta medida afecta al ejemplar ms
sencillo del problema
Javier Vlez Reyes jvelez@lsi.uned.es Jos Ignacio Mayorga Toledano nmayorga@lsi.uned .es
Criterios de medida
3-8
Cota superior. O
Se mide el coste asinttico de la ejecucin de
un algoritmo de acuerdo a una cota superior. Es
decir, la ejecucin nunca, a partir de cierto
valor, sobrepasar la cota de coste establecida
Foco de
atencin
Cota inferior.
Se mide el coste asinttico de la ejecucin de
un algoritmo de acuerdo a una cota inferior. Es
decir, la ejecucin nunca, a partir de cierto
valor, ser menor que la cota establecida
Cota exacta.
Se mide el coste asinttico de la ejecucin de
un algoritmo de acuerdo a una cota resultante
de la interseccin entre O y . Es decir, la
ejecucin crece al ritmo de la cota establecida
Javier Vlez Reyes jvelez@lsi.uned.es Jos Ignacio Mayorga Toledano nmayorga@lsi.uned .es
Cota superior. O
Cota inferior.
3-9
Cota exacta.
Si g(n) es la funcin de coste de un
algoritmo, se dice que g(n) est en
(f(n)) si crece de la misma forma (al
mismo ritmo) que f(n)
Javier Vlez Reyes jvelez@lsi.uned.es Jos Ignacio Mayorga Toledano nmayorga@lsi.uned .es
Tiempo medido
Tiempo de ejecucin
A * n + B
2n
A * 2n + B
2t
3n
A * 3n + B
3t
...
...
...
kn
A * kn + B
kt
O (n)
3 - 10
Javier Vlez Reyes jvelez@lsi.uned.es Jos Ignacio Mayorga Toledano nmayorga@lsi.uned .es
Ordenes
de
eciencia
El
anlisis
asint6co
nos
permite
clasicar
el
espacio
de
algoritmos
en
dis6ntas
familias
que
se
corresponden
con
rdenes
de
complejidad
diferentes
int
factorial
(int
n)
{
if
(n
==
0)
return
1;
else
return
n
*
factorial
(n
-
1);
}
Hiperexponencial. O (nn)
Factorial.
O
(n!)
Exponencial
de
grado
k.
O
(kn)
...
Exponencial.
O
(2n)
Polinmica
de
grado
k.
O
(nk)
...
Cbica.
O
(n3)
Cuadrtica.
O
(n2)
Cuasilineal.
O
(n
log
n)
Lineal.
O
(n)
Cuadrtica
inversa.
O
(n)
Logartmica.
O
(log
n)
Constante.
O
(1)
3 - 11
Javier Vlez Reyes jvelez@lsi.uned.es Jos Ignacio Mayorga Toledano nmayorga@lsi.uned .es
Ordenes
de
eciencia
C a d a
o r d e n
d e
e c i e n c i a
representa
un
nivel
de
crecimiento
con
respecto
al
tamao
del
problema.
En
la
grca
adjunta
p u e d e
v e r s e
l a
r e l a c i n
compara6va
de
los
niveles
de
crecimiento
de
los
primeros
rdenes
de
eciencia
anteriores
3 - 12
Javier Vlez Reyes jvelez@lsi.uned.es Jos Ignacio Mayorga Toledano nmayorga@lsi.uned .es
Ordenes
de
eciencia
C a d a
o r d e n
d e
e c i e n c i a
representa
un
nivel
de
crecimiento
con
respecto
al
tamao
del
problema.
En
la
grca
adjunta
p u e d e
v e r s e
l a
r e l a c i n
compara6va
de
los
niveles
de
crecimiento
de
los
rdenes
de
eciencia
siguientes
a
n2
3 - 13
Javier Vlez Reyes jvelez@lsi.uned.es Jos Ignacio Mayorga Toledano nmayorga@lsi.uned .es
Algoritmos
recursivos
El
clculo
del
coste
temporal
de
un
algoritmo
recursivo
se
expresa
en
trminos
del
coste
de
los
casos
base
y
los
casos
de
recursin
del
mismo.
Para
ilustrar
cmo
se
procede
consideremos
la
funcin
del
clculo
de
un
nmero
factorial
en
su
versin
recursiva.
Entonces,
si
u6lizamos
T(n)
para
representar
el
coste
de
computar
la
ejecucin
con
tamao
n
C1
si
n
==
0
Coste caso base
T
(n)
=
T
(n-1)
+
C2
si
n
>
0
Coste caso recurrente
}
Resolucin
para
factorial
(5):
T(5)
=
T(4)
+
C2
=
T(3)
+
C2
+
C2
=
T(2)
+
C2
+
C2
+
C2
=
T(1)
+
C2
+
C2
+
C2
+
C2
=
O
(n)
3 - 14
= T(0) + C2 + C2 + C2 + C2 + C2 = C1 + C2 + C2 + C2 + C2 + C2 = C1 + 5 * C2
Javier Vlez Reyes jvelez@lsi.uned.es Jos Ignacio Mayorga Toledano nmayorga@lsi.uned .es
Algoritmos
recursivos
Para
evitar
en
cada
caso
un
razonamiento
similar
al
anterior,
podemos
derivar
una
frmula
general
de
clculo
en
funcin
de
la
estructura
de
la
funcin
recursiva,
solucin
anal6ca
de
la
ecuacin
de
recurrencias
adjunta
c1nk
si
n
<
d
T
(n)
=
iT(n
d)
+
c2nk
si
n
>=
d
3 - 15
Javier Vlez Reyes jvelez@lsi.uned.es Jos Ignacio Mayorga Toledano nmayorga@lsi.uned .es
Algoritmos
recursivos
Para
evitar
en
cada
caso
un
razonamiento
similar
al
anterior,
podemos
derivar
una
frmula
general
de
clculo
en
funcin
de
la
estructura
de
la
funcin
recursiva,
solucin
anal6ca
de
la
ecuacin
de
recurrencias
adjunta
Si
reduccin
por
substraccin
O (nk+1) si i == 1
T
(n)
=
iT(n
d)
+
c2nk
si
n
>=
d
O
(nk)
si
i
<
dk
T
(n)
=
O
(nk
log
n)
si
i
=
dk
T
(n)
=
O
(in/d)
si
i
>
1
3 - 16
c1nk si n < d
O (nlogdi) si i > dk
Javier Vlez Reyes jvelez@lsi.uned.es Jos Ignacio Mayorga Toledano nmayorga@lsi.uned .es
Algoritmos
itera8vos
El
coste
temporal
de
un
algoritmo
itera6vo
se
calcula
acumula6vamente
a
par6r
del
coste
de
cada
una
de
sus
instrucciones
cons6tuyentes.
Estudiemos
su
coste
Instruccin
3 - 17
Coste
Instruccin
Coste
Operaciones bsicas1
Sentencias iterativas
- Entrada / salida
O(1)
- Asignacin
O(1)
- Expresiones escalares
O(1)
Secuencias sentencias
Invocacin subprogramas
- s1; s2; s3
- f (e1, e2)
Sentencias condicionales
- O (f + g)
- switch (e) {
- O (f * g)
case c1 : b1;
case c2 : b2;
Javier Vlez Reyes jvelez@lsi.uned.es Jos Ignacio Mayorga Toledano nmayorga@lsi.uned .es
Algoritmos
itera8vos
A
par6r
de
los
anlisis
anteriores
de
coste
de
cada
instruccin
analicemos
la
eciencia
de
un
algoritmo
itera6vo
boolean
ordenar
(T[]
v)
{
int
temp;
for
(int
i
=
1;
i
<
v.length;
i++)
O(1)
for
(int
k
=
i+1;
k
<
v.length;
k++)
O(1)
if
(v[i]
<
v[k])
{
O(1)
O(n2)
max
max
max
max
3 - 18
Javier Vlez Reyes jvelez@lsi.uned.es Jos Ignacio Mayorga Toledano nmayorga@lsi.uned .es
BibliograJa
Bibliografa bsica
Estructuras de datos en java. Weiss, Mark
Allen. Pearson Addison Wesley. ISBN
9788478290352
3 - 19
Javier Vlez Reyes jvelez@lsi.uned.es Jos Ignacio Mayorga Toledano nmayorga@lsi.uned .es
BibliograJa
Bibliografa complementaria
Fundamentos de Algoritmia. G. Brassard, P.
Bratley. Prentice Hall. SBN: 84-89660-00-X
1997
3 - 20
Javier Vlez Reyes jvelez@lsi.uned.es Jos Ignacio Mayorga Toledano nmayorga@lsi.uned .es