Sie sind auf Seite 1von 18

Anlisis y Diseo de Algoritmos

Tiempo de Ejecucin
Arturo Daz Prez
Seccin de Computacin Departamento de Ingeniera Elctrica CINVESTAV-IPN Av. Instituto Politcnico Nacional No. 2508 Col. San Pedro Zacatenco Mxico, D. F. CP 07300 Tel. 5061 3800 Ext. 6562, 6660 e-mail: adiaz@cs.cinvestav.mx

Anlisis y Diseo de Algoritmos

TimeAnalysis-1

Midiendo el Tiempo de Ejecucin


F Benchmarking
Benchmarks: una coleccin de entradas tpicas representativas de una carga de trabajo para un programa

F Profiling
Asociar a cada instruccin de un programa un nmero que representa la fraccin del tiempo total tomada para ejecutar esa instruccin particular Regla del 90-10 /Regla informal que afirma que el 90% del tiempo de ejecucin se invierte en el 10% del cdigo

Anlisis y Diseo de Algoritmos

TimeAnalysis-2

Midiendo el Tiempo de Ejecucin

F Anlisis
Agrupar las entradas de acuerdo a su tamao, n, y estimar el tiempo de ejecucin del programa en entradas de ese tamao, T(n)

Anlisis y Diseo de Algoritmos

TimeAnalysis-3

El Problema de Ordenamiento
Entrada: una secuencia de nmeros <a1, a2, ..., an> Salida: una permutacin de la secuencia <a1, a2, ..., an> tal que,

a1= a2 = ... = an F Ejemplo:


25 1 3 2 12 3 19 6 2 9 1 12 9 19 6 25
TimeAnalysis-4

Anlisis y Diseo de Algoritmos

Mtodo de Insercin
void Insercin( int A[], int n ) { int i,j; for( i=1; i < n; i++ ) { j:= i; while( j > 0 && A[j] < A[j-1] ) { Intercambia( &A[j], &A[j-1] ); j-} } }

A: llave ordenado
Anlisis y Diseo de Algoritmos TimeAnalysis-5

Mtodo de Insercin: Ejemplo


25 3 3 3 2 1 1 1 3 25 12 12 3 2 2 2 12 12 25 19 12 3 3 3 19 25 19 12 9 6 2 25 19 12 9 1 25 19 12 9 25 19 6 25 19 2 1 9 6

Anlisis y Diseo de Algoritmos

TimeAnalysis-6

La Entrada del Problema


FTiempo de Ejecucin
Debe ser definido como una funcin de la entrada / Tp = f(E) Con frecuencia el tiempo de ejecucin depende del tamao de la entrada /T(n): El tiempo de ejecucin de un programa en entradas de tamao n
3Ejemplo: T(n) = c n2, para alguna constante c
Anlisis y Diseo de Algoritmos TimeAnalysis-7

Tipos de Anlisis
F El tiempo de ejecucin del peor caso, Tw(n)
El mximo de los tiempos de ejecucin sobre todas las entradas de tamao n Puede no ser muy fiel

F El tiempo promedio de ejecucin: Ta(n)

El promedio de los tiempos de ejecucin sobre todas las entradas de tamao n Puede ser ms fiel En algunas ocasiones puede ser difcil de determinar

F El tiempo de ejecucin del mejor caso: Tb(n)


El menor de los tiempos de ejecucin sobre todas las entradas de tamao n Puede ser engaoso en un algoritmo lento que trabaja rpido sobre algunas entradas
Anlisis y Diseo de Algoritmos TimeAnalysis-8

Tiempo independiente de la computadora


F El tiempo de ejecucin no debe ser expresado en unidades de tiempo estndar F Qu significa el tiempo del peor caso para el mtodo de insercin?
Depende de la velocidad de una computadora /Velocidad relativa (en la misma computadora) /Velocidad absoluta (en computadoras diferentes)

F Ignore las constantes dependientes de la computadora F Observe el crecimiento de T(n) conforme n ? .


/El tiempo de ejecucin de un algoritmo es proporcional a f(n)

Anlisis Asinttico
Anlisis y Diseo de Algoritmos TimeAnalysis-9

Comparando Tiempos de Ejecucin


T(n) 3000 2n n3 / 2 5n2 100n

2000

1000

5 Running Time T(n) 100 n 2 5n n3 / 2 2n


Anlisis y Diseo de Algoritmos

10

15

20

n Increase in Max. Problem Size 10.0 3.2 2.3 1.3


TimeAnalysis-10

Max. Problem Size 3 for 10 sec 10 14 12 10

Max. Problem Size for 104 sec 100 45 27 13

Funcin de Complejidad
F Definicin:
Una funcin de complejidad puede ser cualquier funcin de los enteros no negativos a los reales no negativos f: N R0

F Ejemplos:
f f f f (n ) = n (n ) = n2 (n ) = log n (n ) = 3n + 4n2

Anlisis y Diseo de Algoritmos

TimeAnalysis-11

Ordenes de Crecimiento
F Dada f: N R, una funcin con valores no negativos
O ( f (n) ) = { g: N R 0 | c > 0 y N0 N: (n N0 g(n) c * f (n)) }

( f (n) ) = { g: N R 0 | [g O(f)] [f O(g)] }

( f (n) ) = { g: N R 0 | c > 0 y N0 N: (n N0 f(n) c * g (n)) }

Anlisis y Diseo de Algoritmos

TimeAnalysis-12

Ordenes de Crecimiento
F Se escribe g(n) = ( f (n) ) en lugar de g ( f ) F El crecimiento de g est dominado por el de f, si y solo si, g(n) = O( f (n) ) F g y f poseen el mismo orden de crecimiento, si y solo si, g(n) = ( f (n) ) F El crecimiento de g es al menos el de f, si y solo si, g(n) = ( f (n) )

Anlisis y Diseo de Algoritmos

TimeAnalysis-13

O( f(n) ): De orden f (n)


n2 + 10 n es O(n2) Por qu? 2 n2 Tome c = 2 y N = 10

n2 + 10 n

10
Anlisis y Diseo de Algoritmos TimeAnalysis-14

Cota Superior Asinttica: O


c * f (n)

g (n)

N0
Anlisis y Diseo de Algoritmos

g(n) = O ( f ( n ))
TimeAnalysis-15

O: Ejemplos
F 1,000,000n2 es O(n2)? F (n - 1)n / 2 es O(n2)? F n / 2 es O(n2)? F log (n 1000000) es O(n)? F n2 es O(n)?
Anlisis y Diseo de Algoritmos TimeAnalysis-16

Cota Inferior Asinttica:


g (n)

c * f (n)

N0
Anlisis y Diseo de Algoritmos

g(n) = ( f ( n ) )
TimeAnalysis-17

: Ejemplos
F 1,000,000 n2 es (n2)? F (n - 1)n / 2 es (n2)? F n / 2 es (n2)? F log (n 1000000) es (n)? F n2 es (n)?
Anlisis y Diseo de Algoritmos TimeAnalysis-18

: Mismo Orden de Crecimiento


c * f (n) g (n)

d * f (n)

g(n) = ( f ( n )) N0
Anlisis y Diseo de Algoritmos TimeAnalysis-19

: Ejemplos
F 1,000,000 n es (n2)? F (n - 1)n / 2 es (n2)? F n / 2 es (n2)? F log (n 1000000) es (n)? F n2 es (n)?
Anlisis y Diseo de Algoritmos TimeAnalysis-20

10

Observaciones
F Para cualesquiera f, g: N R :
g(n) = O( f (n) ) f(n) = ( g(n) ) g(n) = ( f (n) ) [g(n) = O( f (n) )] [g(n) = ( f (n) )]

Anlisis y Diseo de Algoritmos

TimeAnalysis-21

Observaciones
F Tambin se define
o( f (n) ) = { g: N R 0 | c > 0, N0 N: (n N0 g(n) c * f (n)) } ( f (n) ) = { g: N R 0 | f o(g(n)) } esto es, /g(n) = o( f (n) ) /g(n) = ( f (n) )
n

lim

g (n ) =0 f (n ) g (n ) = + f (n )

lim

Anlisis y Diseo de Algoritmos

TimeAnalysis-22

11

Propiedades
F Transitividad: {O, , , o, }:
g(n) = ( f (n) ) f(n) = (h(n)) g(n) = ( h(n) )

F Reflexividad:
f(n) = ( f (n) )

{O, , }:

F Simetra:
g(n) = ( f (n) ) f(n) = ( g(n) ) Por lo tanto, g(n) = ( f (n) ) define una relacin de equivalencia en el espacio de funciones

Anlisis y Diseo de Algoritmos

TimeAnalysis-23

Propiedades
F Simetra transpuesta:
f (n) = (g(n )), si y solo si, g (n) = (f (n )) f (n) = (g(n )), si y solo si, g (n) = (f (n ))

Anlisis y Diseo de Algoritmos

TimeAnalysis-24

12

Diferencia entre O y o
O ( f (n) ) = {g: N R 0 | : existen constantes positivas c and N0 tal que g( n) c * f (n ) para toda n N0 } o ( f (n) ) = {g: N R 0 | : para toda constante positiva c existe una constante Nc > 0, tal que, g( n) c * f (n ) para toda n Nc }
Para o la desigualdad se mantiene para todas las constantes positivas Mientras que para O la desigualdad se mantiene para algunas constantes positivas

Anlisis y Diseo de Algoritmos

TimeAnalysis-25

Analoga con los Nmeros Reales


F f (n) = ( g(n)) F f (n) = ( g(n)) F f (n) = ( g(n)) F f (n) = ( g(n)) F f (n) = ( g(n)) ab ab a=b a<b a>b

Anlisis y Diseo de Algoritmos

TimeAnalysis-26

13

Observaciones
F A diferencia de los nmeros reales NO todas las funciones son asintticamente comparables Ejemplo: n 1+ sin n y n F El conjunto o(f (n)) NO es el mismo que el conjunto O(f (n)) - (f (n))
Ejemplo:

n si n es par g (n) = 1 si n es impar

Anlisis y Diseo de Algoritmos

TimeAnalysis-27

Observaciones
F Los lmites se pueden usar para determinar el orden

c entonces, g ( n ) = O ( f (n )) si c > 0 g (n ) lim = 0 entonces, g ( n ) = o( f ( n )) n f ( n ) entonces, f ( n ) = o( g (n ))

Anlisis y Diseo de Algoritmos

TimeAnalysis-28

14

Big O Revisada
T(n) es un O(f(n)), ledo como O de f(n), si existe una constante positiva c y n0, tales que, T(n) cf(n) para todo n n0 Factores constantes no importan /Para cualquier constante positiva d y cualquier funcin T(n), T(n) es O(dT(n)) /Si T(n) es O(f(n)), entonces, T(n) es O(df(n)) para cualquier d > 0 Trminos de orden inferior no importan /Si T(n) es un polinomio de la forma aknk + ak-1nk-1 + . . . + a1n + a0, tal que, ak > 0, entonces, T(n) es O(nk)

Anlisis y Diseo de Algoritmos

TimeAnalysis-29

Big O Revisada
Si p(n) son q(n) y son polinomios y el grado de q(n) es mayor o igual al grado de p(n), entonces, p(n) es O(q(n)) p(n) es O(an), exponenciales, an, a > 1, crecen ms rpido que cualquier polinomio, p(n) f(n) es una cota O ajustada de T(n) si /T(n) es O(f(n)) /Si T(n) es O(g(n)), entonces, f(n) es O(g(n))

Anlisis y Diseo de Algoritmos

TimeAnalysis-30

15

Regla de la Suma
F Supongamos que T1(n) y T2(n) son los tiempos de ejecucin de dos fragmentos de programa P1 y P2, respectivamente y que T1(n) es O(f(n)) y T2(n) es O(g(n)), entonces, T1(n) +T2(n) es O(max( f(n), g(n))) Si T1(n) es O(f(n)), c1,n1, tales que, T1(n) c1f(n), n n1 Si T2(n) es O(g(n)), c2,n2, tales que, T2 (n) c2g(n), n n2 Sea n0 = max(n1,n2), n n0, T1(n) + T2(n) c1f(n) + c2g(n) De aqu que, n n0, T1(n) +T2(n) (c1 + c2) max( f(n), g(n) ) Por lo tanto, T1(n) + T2(n) es un O(max( f(n), g(n)))
Anlisis y Diseo de Algoritmos TimeAnalysis-31

Regla del Producto


F Regla del producto
Si T1(n) y T2(n) son O(f(n)) y O(g(n)), respectivamente, entonces, T1(n)*T2(n) es O( f(n)*g(n) )

F Transitividad
Si g(n) = O( f (n) ) f(n) = O(h(n)) g(n) = O( h(n) )

Anlisis y Diseo de Algoritmos

TimeAnalysis-32

16

Reglas Generales de Anlisis


Un asignamiento e instrucciones de lectura y escritura que no contengan llamados a funciones toman un tiempo constante O(1) /Cuando existen llamados a funciones, se debe tomar en cuenta el tiempo que toma la ejecucin de la funcin El tiempo de ejecucin de una secuencia de proposiciones se determina por la regla de la suma T(S1; S2; . . . ; Sn) es un O( max(T(S1), T(S2), . . . ,T(Sn)) )

Anlisis y Diseo de Algoritmos

TimeAnalysis-33

Reglas Generales de Anlisis


El tiempo de ejecucin de una proposicin if-then esta determinado por el tiempo de ejecucin de las proposiciones condicionales ms el tiempo para evaluar la condicin T(if C then S) = T(C) + T(S) El tiempo de ejecucin de una proposicin if-then-else es el tiempo para evaluar la condicin ms el mayor de los tiempos necesarios para evaluar las proposiciones cuando la condicin es verdadera y el tiempo para las proposiciones ejecutadas cuando la condicin es falsa T(if C then S1 else S2) = T(C) + max( T(S1), T(S2) )

Anlisis y Diseo de Algoritmos

TimeAnalysis-34

17

Reglas Generales de Anlisis

El tiempo para ejecutar un ciclo es la suma, sobre todas las veces que se ejecuta el ciclo del tiempo para ejecutar el ciclo ms el tiempo para evaluar la condicin de terminacin T( while C do S) =

las veces

[T (C ) + T ( S )] + T (C )
que ciclo

se ejecuta el

Anlisis y Diseo de Algoritmos

TimeAnalysis-35

Reglas Generales de Anlisis


Ejemplo void Insercin( int A[], int n ) { int i,j; for( i=1; i < n; i++ ) { j:= i; while( j > 0 && A[j] < A[j-1] ) { Intercambia( &A[j], &A[j-1] ); j-} } }

O(i )

O(n)

Anlisis y Diseo de Algoritmos

TimeAnalysis-36

18

Das könnte Ihnen auch gefallen