Beruflich Dokumente
Kultur Dokumente
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
TimeAnalysis-1
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
TimeAnalysis-2
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)
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,
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
TimeAnalysis-6
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
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
Anlisis Asinttico
Anlisis y Diseo de Algoritmos TimeAnalysis-9
2000
1000
10
15
20
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
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)) }
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) )
TimeAnalysis-13
n2 + 10 n
10
Anlisis y Diseo de Algoritmos TimeAnalysis-14
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
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
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) )]
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
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
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 ))
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
TimeAnalysis-25
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:
TimeAnalysis-27
Observaciones
F Los lmites se pueden usar para determinar el orden
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)
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))
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
F Transitividad
Si g(n) = O( f (n) ) f(n) = O(h(n)) g(n) = O( h(n) )
TimeAnalysis-32
16
TimeAnalysis-33
TimeAnalysis-34
17
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
TimeAnalysis-35
O(i )
O(n)
TimeAnalysis-36
18