Sie sind auf Seite 1von 11

Calculo de T(n) Eficiencia y Eficacia de un algoritmo

Universidad de San Buenaventura Anlisis y Diseo de algoritmos Jos Luis Jurado

Calculo de T(n)
Entendemos por tamao de la entrada el nmero de componentes sobre los que se va a ejecutar el algoritmo. Por ejemplo, la dimensin del vector a ordenar o el tamao de las matrices a multiplicar. La unidad de tiempo a la que debe hacer referencia estas medidas de eficiencia no puede ser expresada en segundos o en otra unidad de tiempo concreta, pues no existe un pc estndar al que puedan hacer referencia todas las medidas. Denotaremos por T(n) el tiempo de ejecucin de un algoritmo para una entrada de tamao n

Calculo de T(n)
Tericamente T(n) debe indicar el nmero de instrucciones ejecutadas por un computador. Debemos buscar por tanto medidas simples y abstractas, independientes del computador a utilizar. Para ello es necesario acotar de alguna forma la diferencia que se puede producir entre distintas implementaciones de un mismo algoritmo, ya sea del mismo cdigo ejecutado por dos mquinas de distinta velocidad, como de dos cdigos que implementen el mismo mtodo. Esta diferencia es la que acota el siguiente principio: Principio de Invarianza Dado un algoritmo y dos implementaciones suyas I1 e I2, que tardan T1(n) y T2(n) segundos respectivamente, el Principio de Invarianza afirma que existe una constante real c > 0 y un nmero natural n0 tales que para todo n n0 se verifica que T1(n) cT2(n).

Calculo de T(n)
Con esto podemos definir sin problemas que un algoritmo tarda un tiempo del orden de T(n) si existen una constante real c > 0 y una implementacin I del algoritmo que tarda menos que cT(n), para todo n tamao de la entrada. Tambin es importante hacer notar que el comportamiento de un algoritmo puede cambiar notablemente para diferentes entradas. De hecho, para muchos programas el tiempo de ejecucin es en realidad una funcin de la entrada especfica, y no slo del tamao de sta. As suelen estudiarse tres casos para un mismo algoritmo: caso peor, caso mejor y caso medio

Calculo de T(n)
El mejor caso: corresponde a la secuencia de sentencias del algoritmo que realiza menos instrucciones. El peor caso: corresponde a la secuencia de sentencias que realiza ms instrucciones. El caso medio: corresponde a la traza del algoritmo que realiza todas las posibles instrucciones del algoritmo para un tamao de la entrada dado, con las probabilidades de que stas ocurran para esa entrada. A la hora de medir el tiempo siempre se hace en funcin de las operaciones elementales (OE).

Calculo de T(n)
Se puede considerar a OE como las operaciones aritmticas bsicas asignaciones a variables de tipo predefinido por el compilador, los saltos (llamadas a funciones y procedimientos, retorno desde ellos, etc.), las comparaciones lgicas y el acceso a estructuras indexadas bsicas, como son los vectores y matrices. Cada una de ellas contabilizar como 1 OE. Resumiendo, el tiempo de ejecucin de un algoritmo va a ser una funcin que mide el nmero de operaciones elementales que realiza el algoritmo para un tamao de entrada dado

Ejemplo de Calculo de T(n)


Int buscar (vector a, int c, int i) { j=1; do{ j =j+1; }while(a[j]<c)&&(j<n); If(a[j]==c) return j; else returno 0; } (1) (2) (3) (4) (5) (6)

Ejemplo de Calculo de T(n)


1. 2. 3. 4. 5. 6. En la lnea (1) se ejecuta 1 OE En la lnea (2) se ejecutan 3 OE (una asignacin y un incremento) En la lnea (3) se ejecutan 4 OE (dos comparaciones, un acceso al vector y un AND) En la lnea (4) se ejecutan 2 OE (una comparacin y un acceso al vector) En la lnea (5) se ejecuta 1 OE (un RETURN) En la lnea (6) se ejecuta 1 OE (un RETURN)

Ejemplo de Calculo de T(n)


Mejor Caso: Para este caso se efecta la lnea (1) y de la lnea (3) solo la mitad de la condicin, que supone 2 OE, luego se ejecutaran las lneas entre (4) y (6), esto nos da el siguiente calculo: T(n) = 1 + 2 + 3 = 6 Peor Caso: Para este caso se efecta la lnea (1) y el ciclo se repite n-1 veces hasta que la segunda condicin se cumpla, despus se efecta la lnea (4) y la (6), cabe tener en cuenta que cada iteracin del ciclo esta compuesta por las lneas (2) y (3), mas una lnea adicional de la (2), que es la que ocasiona la salida del ciclo. Esto nos dar como resultado: T(n) = 1+ (
1 =1 (4

+ 2)+4)+2+1

= 6n +1

Ejemplo de Calculo de T(n)


Mejor Caso: Para este caso se efecta la lnea (1) y de la lnea (3) solo la mitad de la condicin, que supone 2 OE, luego se ejecutaran las lneas entre (4) y (6), esto nos da el siguiente calculo: T(n) = 1 + 2 + 3 = 6 Peor Caso: Para este caso se efecta la lnea (1) y el ciclo se repite n-1 veces hasta que la segunda condicin se cumpla, despus se efecta la lnea (4) y la (6), cabe tener en cuenta que cada iteracin del ciclo esta compuesta por las lneas (2) y (3), mas una lnea adicional de la (2), que es la que ocasiona la salida del ciclo. Esto nos dar como resultado: T(n) = 1+ (
1 =1 (4

+ 2)+4)+2+1

= 6n +1

Practica de Calculo de T(n)


public static int buscar( int [] arreglo, int dato) { int inicio = 0; int fin = arreglo.length - 1; int pos; while (inicio <= fin) { pos = (inicio+fin) / 2; if ( arreglo[pos] == dato) return pos; else if ( arreglo[pos] < dato ) { inicio = pos+1; } else { fin = pos-1; } } return -1; }

Das könnte Ihnen auch gefallen