Sie sind auf Seite 1von 19

TIEMPO DE EJECUCIN DE UN

PROGRAMA

Al resolver un problema, debemos elegir el


algoritmo a utilizar, siguiendo los siguientes
objetivos:

algoritmo fcil de entender, codificar y depurar.


uso eficiente de los recursos y ejecucin veloz.

En la mayora de los casos, estos objetivos son


contrapuestos.
Depende, en gran forma, de la cantidad de
veces que el programa se va a ejecutar.

Medicin del tiempo de ejecucin de


un programa.

El tiempo de ejecucin de un programa depende de


factores como:
Los datos de entrada al programa.
La calidad del cdigo generado por el compilador.
La naturaleza y rapidez de las instrucciones usadas
en el programa.
La complejidad de tiempo del algoritmo base del
programa.
Muchas veces el tiempo depende del tamao de la
entrada ms que de la entrada en s misma.
La longitud de la entrada es una medida apropiada de
tamao.
Se denomina T(n) el tiempo de ejecucin de un
programa con entrada de tamao n.
3

Medicin del tiempo de ejecucin de


un programa

Cuando el tiempo de ejecucin es funcin de


una entrada especfica y no slo del tamao,
entonces se define T(n) como el tiempo de
ejecucin del peor caso.
Tambin se calcula el Tprom(n), o sea, el tiempo
promedio de ejecucin, pero suele ser
bastante ms difcil.
El hecho de que el tiempo de ejecucin
dependa del compilador y de la mquina
impide que se pueda expresar en unidades de
tiempo normales.
Se dir entonces que, por ejemplo, el
algoritmo es proporcional a n2.
4

Notacin asinttica - Orden del tiempo


de ejecucin.

Se dice que el tiempo de ejecucin de un


programa es de orden n, ( T(n) es O(n) ), si
existen dos constantes enteras positivas c y
n0 tales que,

para todo n >= n0 , T(n) <= c * n

Ejemplo: Dado
T(0) = 1, T(1) = 4, y en general T(n) = (n+1)2.
Entonces se observa que T(n) es O(n2) cuando n0 = 1 y c = 4, o sea,
para
n >= 1 se tiene que (n+1)2 <= 4n2.

Notacin asinttica - Orden del tiempo


de ejecucin.

Se dice que T(n) es O(f(n)) si existen dos


constantes enteras positivas c y n0 tales
que,

para todo n >= n0 , T(n) <= c * f(n)

en este caso, se dice que el programa tiene


velocidad de crecimiento f(n).

Ejemplo: Dada
la funcin T(n) = 3n3 + 2n2 es O(n3).

Sean n0 = 0 y c = 5. Para n >= 0, 3n3 + 2n2 <= 5n3.

Notacin asinttica - Orden del tiempo


de ejecucin.

Si T(n) es O(f(n)) , f(n) es una cota superior


para la velocidad de crecimiento de T(n).

Ejemplo: Dada la funcin 3n no es de O(2n).


Para demostrar esto, sean las constantes n0 y c tales que para todo n >=
n0 se tiene que 3n <= c* 2n.
Entonces, c >= (3/2)n para cualquier valor de n >= n0.
Pero (3/2)n se hace arbitrariamente grande a medida que n crece y, por lo
tanto, ninguna constante c puede ser mayor que (3/2)n para toda n.

Notacin asinttica - Orden del tiempo


de ejecucin.

La cota inferior se especifica notando T(n) es (g(n)).


Esto significa que existe una constante c tal que

T(n) >= c*g(n) para un nmero infinito de valores de n.

Suponemos que podemos evaluar programas


comparando sus funciones de tiempo de ejecucin, sin
considerar las constantes de proporcionalidad. De
acuerdo a esto, un programa con tiempo de ejecucin
O(n2) es mejor que uno con tiempo de ejecucin O(n 3).
Adems de los factores del compilador y la mquina,
existe un factor debido al programa mismo.
100 * n2 milisegundos vs. 5 * n3 milisegundos.

Efecto de multiplicar por diez la


velocidad del procesador

T(n)

100 n
2
5n
3
n /2
n
2
2010

tamao para
3
t = 10 s

tamao para
4
t = 10 s

Incremento

10
14
12
10

100
45
27
13

10.0
3.2
2.3
1.3

Programacin II - Universidad Catlica del Uruguay

11

Tiempo de ejecucin

Si un programa se va a ejecutar poco, el costo de su


desarrollo es el dominante.
Si el programa se ejecuta slo con entradas pequeas,
la velocidad de crecimiento puede ser menos
importante que el factor constante.
Un algoritmo eficiente pero complicado an puede no
ser adecuado, por razones de mantenimiento.
Algunos algoritmos eficientes requieren demasiado
espacio, debindose utilizar almacenamiento
secundario, con lo cual pierden su eficiencia.
En los algoritmos numricos, la precisin y la
estabilidad son tan importantes como la eficiencia.

12

Clculo del tiempo de ejecucin de un


programa

Reglas de la suma y producto en notacin asinttica.


El tiempo de ejecucin de cada proposicin de
asignacin puede tomarse como O(1).
El tiempo de ejecucin de una secuencia de
proposiciones se determina por la regla de la suma.
El tiempo de ejecucin de una proposicin condicional if
es el costo de las proposiciones que se ejecutan
condicionalmente, ms el tiempo para evaluar la
condicin (se toma O(1)).
El tiempo para ejecutar un ciclo es la suma sobre todas
las iteraciones del ciclo, del tiempo de ejecucin del
cuerpo y del empleado para evaluar la condicin de
terminacin. Normalmente este tiempo es el producto
del nmero de iteraciones del ciclo por el mayor tiempo
posible para una ejecucin del cuerpo.
13

Clculo del tiempo de ejecucin de un


programa

Clculo del tiempo de ejecucin de un


programa

Clculo del tiempo de ejecucin de un


programa

2010

16

Clculo del tiempo de ejecucin de un


programa

2010

17

Cul es el orden de las siguientes


expresiones:

2010

18

Cul es el orden de las siguientes


expresiones:

2010

19

Considere el siguiente algoritmo, en el


cual:

R, x, m
tabla
N

son variables enteras,


es un vector ordenado de enteros,
es el tamao mximo de la entrada

L0
RN
Mientras L < R hacer
m (L + R) div 2
Si tabla[m] < x
entonces L m + 1
sino
Rm
FinSi
FinMientras

2010

Explicar cmo funciona y qu es lo que produce.


Calcular el orden de ejecucin.
20

Das könnte Ihnen auch gefallen