Sei sulla pagina 1di 19

Tema 1

Nociones bsicas sobre


eficiencia

Tecnologa de la Programacin
Eficiencia
1. Introduccin
2. Notaciones asintticas
3. Otras notaciones asintticas

2
Introduccin
Objetivo en Programacin

PROBLEMA PROGRAMA
ALGORITMO

Varios algoritmos resuelven el mismo problema


Cul elegir?
1. Qu criterio seguir?
2. Cmo medirlo?

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, ...

Analizaremos la eficiencia de los algoritmos de forma


independiente a las mquinas.
6
Introduccin
Objetivos
2. Determinar un mtodo para medir la eficiencia.
Por medio de una funcin que utiliza el tamao de los
datos como argumento.
Esa funcin complejidad da el nmero de operaciones
que requiere la ejecucin del algoritmo para una
entrada de un tamao dado.
T(n) = tiempo de ejecucin de un algoritmo con una
entrada de tamao n
Complejidad en el mejor caso, en media, en el peor,

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. :

c R g O(f) c+g O(f)


+
7. :

8. limnf(n)/g(n)=0 O(f) O(g)

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)

O(n2) ... O(nk) O(2n) O(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

Potrebbero piacerti anche