Está en la página 1de 32

Algortmica III 2011 II Ing.

Mara Yornet Cuba Del Castillo

Est determinada por la cantidad de recursos que consume un programa durante su ejecucin. A menor consumo de recursos (Tiempo/Espacio) ser mayor la eficiencia.

1.

El tiempo de procesador o Complejidad Temporal:


T y expresa el tiempo que tarda en ejecutarse un programa Depender del nmero de instrucciones elementales que ejecuta y la rapidez de cada una de ellas

2.

Espacio en memoria o Complejidad Espacial: Se denota por la letra E y expresa la cantidad de memoria que requiere un programa. Depende principalmente del nmero de variables que utiliza y del espacio que cada variable ocupa.

1.
2.

El algoritmo utilizado. El tamao de la entrada, que es una medida de la cantidad de datos que se debern procesar.

El tiempo de ejecucin y el espacio en memoria requerida se expresan en funcin del tamao de los datos de entrada: n = datos de entrada Quien determina el consumo de los recursos ser la cantidad de datos procesados: Tiempo en funcin de n = T( n) y Espacio en funcin de n E(n)

1. 2.

3.

Si la entrada de datos es un solo entero, el tamao para n es el valor del entero. Si la entrada es una secuencia de datos , el tamao para n es la cantidad de elementos de la secuencia. Si la entrada de datos es estructurada, el tamao para n es el nmero de elementos del dato

Prueba emprica: Consiste en implementar el programa y probarlo por medio de su ejecucin, midiendo el tiempo y el espacio en una mquina concreta y con datos especficos. Anlisis de Complejidad: Consiste en estimar el tiempo y el espacio a partir del anlisis de las instrucciones que componen el algoritmo.

a)

b) c)

d)

El resultado es dependiente de la mquina Es poco informativo Requiere implementar el algoritmo y ejecutarlo varias veces Nos da valores exactos, como el tiempo en segundos y el espacio de memoria en bytes, pero solo para una mquina determinada y datos concretos.

a) b) c)

d)

Es independiente de la mquina Es ms informativo Se aplica sin necesidad de implementar el programa Nos da valores aproximados

La prueba emprica:

El anlisis del algoritmo

Las notaciones asintticas son aquellas que permiten caracterizar el ritmo de crecimiento de una funcin, en este caso las notaciones asintticas nos permiten caracterizar el comportamiento de T(n) y E(n)

Con la notacin asinttica no se pretende establecer el tiempo exacto de ejecucin o el espacio de memoria ocupado sino que simplemente se clasifica el algoritmo en funcin del tamao de los datos de entrada

Notacin

Definicin
Conjunto de funciones cuyo crecimiento es menor o igual a f (Cota superior asinttica)

O(f) (f)
(f)

Conjunto de funciones cuyo ritmo de


crecimiento es mayor o igual a f (cota inferior asinttica) Conjunto de funciones con el mismo ritmo de crecimiento en E(n) y T(n) (cota

ajustada asinttica)

Ocupando el tamao de la entrada como el tamao o el parmetro que define el tiempo de ejecucin de un programa es posible describir por ejemplo a la funcin: T(n)=n2+2n Esta funcin proporciona la informacin necesaria para clasificarla en los diferentes algoritmos.

1.

Sentencias simples: sentencias de asignacin, operaciones aritmticas, entradas y salidas. Esta sentencia requiere un trabajo constante siendo su orden de complejidad igual a 1. Ejemplo: Suma= 0 1

2.

Ciclos: Su tiempo de ejecucin es al menos el tiempo de ejecucin de las instrucciones dentro de l, multiplicado por el nmero de la iteraciones, sumndole los componentes del ciclo. Ejemplo
Suma= 0 1 For(i=0;i<n;i++) 1,n+1,n = 2n+2 T(n) = 4n+3 Suma+=i ; 2n

3.

Ciclos anidados: Se analizan desde el ciclo interno hasta el ms externo. Una vez que se obtiene la complejidad del ciclo interno se multiplica por el nmero de iteraciones del ciclo externo obteniendo la complejidad final para el ciclo externo de la misma forma que un ciclo simple. (continua)

Ejemplo:
For(j=1;j<=n; j++) 1, n+1, n = 2n+2 + 4n2+2n T(n)= 4n2+4n+2 For(i=0;i<n;i++) 1, n+1,n = Suma+=i ;
2n 2n+2 (4n+2)(n)= 4n2+2n

4.

Condicionales: La comparacin es de complejidad constante igual a 1 que se debe sumar con el peor de los casos entre el verdadero y el falso. Ejemplo: If (n>i) 1+3 = 4 Suma+=i*j; 3 Else Suma=i; 1

A partir de la funcin de tiempo, para determinar el orden del algoritmo se eliminan todos los trminos excepto el de mayor grado, despus se elimina el coeficiente del
T(n)=7n2+11n+6 n2, es decir O(n2).

O (1) Orden Constante O (log n) Orden Logartmico O(n) Orden lineal O(n log n) Orden Cuasi-lineal O (n2) Orden Cuadrtico O (n3) Orden cbico O (na) Orden Polinomial O (an) Orden Exponencial O (n!) Orden Factorial

Indica cuando las instrucciones se ejecutan una sola vez.

Suele aparecer en determinados algoritmos y se considera un caso especial pues en el doble de tiempo permiten resolver problemas notablemente mayores y para resolver un problema doblemente mayor solo hace falta un poco ms de tiempo pero nunca el doble.

Es una complejidad buena y tambin muy usual su comportamiento es ms natural es decir con el doble de datos a procesar nos dar el doble de tiempo de ejecucin. Aparece en la evaluacin de ciclos simples siempre que la complejidad de las instrucciones anteriores sea constante.

Se encuentra en algoritmos de tipo divide y vencers como el mtodo de ordenacin QuickSort. Se considera una buena complejidad si n se duplica el tiempo de ejecucin es ligeramente mayor de el doble.

Aparece en ciclos doblemente anidados Si n se duplica el tiempo de ejecucin puede aumentar hasta 4 veces.

Se da en ciclos de triple anidacin Si n se duplica el tiempo de ejecucin se multiplica hasta 8 veces.

Estos algoritmos se encuentran con dificultad a problemas de tamao creciente y se encuentran en el lmite de lo tratado. La complejidad es bastante mala.

Estos algoritmos no suelen ser muy tiles en la prctica por el elevadsimo tiempo de ejecucin. Se dan en programas recursivos que contienen dos o ms llamadas internas.

Se debe conocer la complejidad Temporal por medio de alguna de las dos formas de medirla, recomendndose siempre el Anlisis del Algoritmo La Complejidad Espacial del algoritmo depender de la memoria que requiera, y puede ser para diferentes conceptos:
a) b) c) d) Variables estticas y Locales Variables dinmicas Parmetros de funcione y mtodos Indicadores de archivos

El impacto relativo de los factores que determinan el consumo de recursos de un proceso depende de la cantidad de datos a procesar y almacenar.
1. Para un tamao de datos de entrada pequeo el lenguaje, el compilador y el equipo tienen un impacto considerable en el tiempo de ejecucin.

entrada de datos es pequea nmero de instrucciones menor

la velocidad individual de cada instruccin elemental determinar el tiempo de ejecucin

2.

Para un tamao de datos de entrada grande, el lenguaje, el compilador y el equipo pierden importancia y lo ms importante pasa a ser el algoritmo, esto se debe a que un cambio en el equipo afecta el tiempo de ejecucin en un factor constante mientras que el cambio en el algoritmo puede llegar a incrementar, duplicar, elevar al cuadrado, al cubo etc el tiempo de ejecucin.

3.

La eficiencia es especialmente importante en:


Aplicaciones Interactivas Sistemas operativos multiproceso Aplicaciones que se usan reiteradamente.

También podría gustarte