Sei sulla pagina 1di 16

COMPLEJIDAD DE ALGORITMO

Mauricio Amigo

En un sentido amplio, dado un problema y un dispositivo donde resolverlo, es necesario proporcionar un mtodo preciso que lo resuelva, adecuado al dispositivo. A tal mtodo lo denominamos algoritmo.

Mauricio Amigo

Reglas generales para el clculo del nmero de OE La siguiente lista presenta un conjunto de reglas generales para el clculo del nmero de OE, siempre considerando el peor caso. Estas reglas definen el nmero de OE de cada estructura bsica del lenguaje, por lo que el nmero de OE de un algoritmo puede hacerse por induccin sobre ellas.

Mauricio Amigo

Vamos a considerar que el tiempo de una OE es, por definicin, de orden 1. La constante c que menciona el Principio de Invarianza depender de la implementacin particular, pero nosotros supondremos que vale 1.

El tiempo de ejecucin de una secuencia consecutiva de instrucciones se calcula sumando los tiempos de ejecucin de cada una de las instrucciones.

Mauricio Amigo

TCNICAS DE DISEO DE ALGORITMOS

El tiempo de ejecucin de la sentencia CASE C OF v1:S1|v2:S2|...|vn:Sn END; es T = T(C) + max{T(S1),T(S2),...,T(Sn)}.


Obsrvese que T(C) incluye el tiempo de comparacin con v1, v2 ,..., vn.

Mauricio Amigo

El tiempo de ejecucin de la sentencia IF C THEN S1 ELSE S2 END; es T = T(C) + max{T(S1),T(S2)}.

Mauricio Amigo

El tiempo de ejecucin de un bucle de sentencias


WHILE C DO S END; es T = T(C) + (n iteraciones)*(T(S) + T(C)). Obsrvese que tanto T(C) como T(S)

pueden variar en cada iteracin, y por tanto habr que tenerlo en cuenta para su clculo.

Mauricio Amigo

Para calcular el tiempo de ejecucin del resto de sentencias iterativas (FOR, REPEAT, LOOP) basta expresarlas como un bucle WHILE.
A modo de ejemplo, el tiempo de ejecucin del bucle:

FOR i:=1 TO n DO S END; puede ser calculado a partir del bucle equivalente: i:=1; WHILE i<=n DO S; INC(i) END;
Mauricio Amigo

El tiempo de ejecucin de una llamada a un procedimiento o funcin F(P1, P2,..., Pn) es 1 (por la llamada), ms el tiempo de evaluacin de los parmetros P1, P2,..., Pn, ms el tiempo que tarde en ejecutarse F, esto es,
T = 1 + T(P1) + T(P2) + ... + T(Pn) + T(F).

No contabilizamos la copia de los argumentos a la pila de ejecucin, salvo que se trate de estructuras complejas (registros o vectores) que se pasan por valor. En este caso contabilizaremos tantas OE como valores simples contenga la estructura. El paso de parmetros por referencia, por tratarse simplemente de punteros, no contabiliza tampoco.

Mauricio Amigo

Tambin es necesario tener en cuenta, cuando el compilador las incorpore, las optimizaciones del cdigo y la forma de evaluacin de las expresiones, que pueden ocasionar cortocircuitos o realizarse de forma perezosa (lazy). En el presente trabajo supondremos que no se realizan optimizaciones, que existe el cortocircuito y que no existe evaluacin perezosa.

Mauricio Amigo

Recurrencia Son de la forma: T(n) = E(n) donde en E aparece la propia funcin T.

Mauricio Amigo

Recurrencia Homognea Son de la forma:


ai R k N [1,n]

Buscando soluciones que sean combinaciones de ecuaciones exponenciales de la forma:

ci, ri R pi(n) polinomios en n con coeficientes reales.

Mauricio Amigo

Para resolver: Con lo cual se obtiene la funcin caracterstica asociada:

Donde ri pueden ser reales o complejas, dependiendo del orden de multiplicidad se pueden dar los siguientes casos:

Mauricio Amigo

Races Distintas: Es decir ri rj para todo i j


Entonces la ecuacin de recurrencia viene dada por la expresin:

Donde los coeficientes ci se determinan de las condiciones iniciales

Mauricio Amigo

Como ejemplo la sucesin de Fibonacci: T(n) = T(n-1)+T(n-2) n >= 2, con T(0)=0 y T(1)=1

Haciendo el cambio: T(n) = X2. Se obtiene la funcin caracterstica: X2 = X + 1 o X2 X -1 = 0 Cuyas races son: y por tanto:

Mauricio Amigo

Sus coeficientes:

y finalmente:

Mauricio Amigo

Potrebbero piacerti anche