Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Tecnologa de la Programacin
Eficiencia
1. Introduccin
2. Notaciones asintticas
3. Otras notaciones asintticas
2
Introduccin
Objetivo en Programacin
PROBLEMA PROGRAMA
ALGORITMO
3
Introduccin
Objetivos
1. Determinar los criterios que definen la eficiencia
de un algoritmo.
2. Formular una forma de medir la eficiencia.
3. Caracterizar los problemas que son resolubles en
tiempo razonable.
4
Introduccin
Objetivos
1. Determinar los criterios que definen la eficiencia
de un algoritmo.
1. Algoritmo fcil de entender, codificar y depurar.
2. Algoritmo use eficientemente los recursos del
ordenador.
1. En tiempo de ejecucin
2. En espacio
5
Introduccin
Factores de los que depende el tiempo de ejecucin
de un algoritmo/programa
1. Tamao de los datos de entrada.
2. Contenido de los datos de entrada.
3. El algoritmo en s.
4. La calidad del cdigo generado por el compilador.
5. La mquina en la que se ejecute: procesador, lenguaje
mquina, ...
7
Notaciones asintticas
Objetivo: formalizar las unidades de medida
Son las unidades de medida utilizadas para medir la
eficiencia de un algoritmo:
Se trata de medir el coste en tiempo que tarda en ejecutarse
un algoritmo segn el tamao y contenido de los datos de
entrada.
asinttico = eficiencia se estudia para volmenes grandes
de datos.
Coste en tiempo se expresa mediante la funcin de
complejidad
+
f : R
En la prctica la funcin de complejidad NO se calcula, solo
se estima.
8
Notaciones asintticas
Objetivo: formalizar las unidades de medida
O(f)={g:R {0}|c0R n0 tq nn0
+ +
g(n)c0f(n)}
O(f)= conjunto de funciones que crecen como
mximo con la misma rapidez que f.
Si gO(f) diremos que g es del orden de f o
que g es O de f.
9
Notaciones asintticas
Ejemplos y propiedades
1. Un polinomio p(n)=a0+a1n+ ... + aknk con ak>0
pertenece a O(nk).
2. f O(f)
3. f O(g) O(f) O(g)
4. f O(g) g O(h) f O(h)
5. O(f) = O(g) f O(g) g O(f)
c R g O(f) cg O(f)
+
6. :
10
Notaciones asintticas
Operaciones con rdenes de complejidad
+
O(f)+O(g)={h:R {0}|fO(f)gO(g)
tq h(n)=f(n)+g(n) n}
+
O(f)O(g)={h:R {0}|fO(f)gO(g)
tq h(n)=f(n)g(n) n}
11
Notaciones asintticas
Reglas prcticas
1. O(f)+O(g)=O(f+g)=O(mx{f,g})
2. O(f)O(g)=O(fg)
3. Jerarqua de rdenes
O(1) O(log n) O(n) O(n log n)
12
Notaciones asintticas
Notaciones asintticas
Qu significa que un algoritmo sea
O(1)?
O(n)?
O(n2), O(n3), O(n4), ?
O(2n)?
O(log n)?
Notaciones asintticas
Reglas prcticas para estimar la funcin de
complejidad
O(1)
1. Instrucciones elementales (asignacin, lectura, escritura)
2. Evaluacin de expresiones aritmticas o booleanas
3. Acceso a componentes de un vector o a campos de un
registro
15
Notaciones asintticas
Composicin secuencial S1
S2
T(S1) O(f1)
}T(
T(S2) O(f2)
S1
S2
)O(mx{f 1,f2})
16
Notaciones asintticas
Composicin condicional Si B entonces
S1
si_no
S2
T(B) O(fB) fsi
}
T(S1) O(f1)
T(S2) O(f2)
T(si...fsi)
O(mx{fB,f1,f2})
17
Notaciones asintticas
Composicin iterativa mq B hacer
S
fmq
numIterac O(fiter)
T(B S) O(fB,S) } T(mq...fmq)
O(fB,Sfiter)
18
Otras notaciones asintticas
(f)={g:R {0}|c0R n0 tq nn0
+ +
g(n) c0f(n)}
(f)= conjunto de funciones que crecen con igual o mayor
rapidez que f.
(f)={g:R {0}|c,dR n0
+ +
tq
nn0 cf(n) g(n) df(n)}
(f)=conjunto de funciones de orden exacto de f.
(f)= O(f) (f)
limnf(n)/g(n)=k R -{0} (f) = (g)
+
19