Está en la página 1de 12

ESTRUCTURAS DE DATOS

y ALGORITMOS
Licenciatura en Ciencias de la Computacin

COMPLEJIDAD DE
ALGORITMOS
Estructuras de Datos y
Algoritmos

Eficiencia de algoritmos
El estudio de la eficiencia de algoritmos:
permite medir el coste (en tiempo y

recursos), que consume un algoritmo para


encontrar la solucin a un problema y
ofrece la posibilidad de comparar distintos

algoritmos que resuelven un mismo


problema
Estructuras de Datos y
Algoritmos

Eficiencia de algoritmos
Criterios para medir el rendimiento o comportamiento
de un algoritmo:

Simplicidad: facilita su verificacin, el estudio de su


eficiencia y su mantenimiento
Uso eficiente de los recursos: suele medirse en
funcin de dos parmetros: el espacio, es decir,
memoria que utiliza, y el tiempo, lo que tarda el
algoritmo en ejecutarse.
Estructuras de Datos y
Algoritmos

Eficiencia de algoritmos
Tiempo de ejecucin

El tiempo de ejecucin de un algoritmo va a


depender de diversos factores:
los datos de entrada

la calidad del cdigo generado por el compilador

para crear el programa objeto


la naturaleza y rapidez de las instrucciones de

mquina del procesador concreto que ejecute el


programa, y
la complejidad intrnseca del algoritmo.
Estructuras de Datos y
Algoritmos

Eficiencia de algoritmos
Tiempo de ejecucin

Hay dos estudios posibles sobre el tiempo:


Uno que proporciona una medida terica (a priori),

que consiste en obtener una funcin que acote (por


arriba o por abajo) el tiempo de ejecucin del
algoritmo para unos valores de entrada dados.
Otro que ofrece una medida real (a posteriori),

consistente en medir el tiempo de ejecucin del


algoritmo para unos valores de entrada dados y en un
ordenador concreto.
Estructuras de Datos y
Algoritmos

Eficiencia de algoritmos
Tiempo de ejecucin

T(n): tiempo de ejecucin de un algoritmo para


una entrada de tamao n. Tericamente T(n) debe
indicar el nmero de instrucciones ejecutadas por
un ordenador idealizado.

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.
Estructuras de Datos y
Algoritmos

Eficiencia de algoritmos
Tiempo de ejecucin

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. Suelen
estudiarse tres casos:

caso mejor: la traza (secuencia de sentencias) del algoritmo


que realiza menos instrucciones

caso peor: traza del algoritmo que realiza ms instrucciones

caso medio: traza del algoritmo que realiza un nmero de


instrucciones igual a la esperanza matemtica de la variable
aleatoria definida por todas las posibles trazas del algoritmo para
un tamao de la entrada dado, con las probabilidades de que stas
ocurran para esa entrada.
Diapositiva perteneciente a
ALGORITMIA

Anlisis prctico:
Clculo de unidades de tiempo
Reglas
1. Las declaraciones no consumen tiempo.
2. Tiempo de ejecucin de sentencias simples: 1 ut
3. Operaciones aritmticas : 1 ut.
4. Bucles incondicionales: producto del tiempo de ejecucin de las
sentencias que estn dentro del bloque por la cantidad de
iteraciones que se debe realizar. Agregar tiempo de inicializacin
de variables, testeos e incrementos de variable de control.
5. Bucles condicionales: Si la cantidad de iteraciones vara en
funcin del valor de la variable de control, el clculo del tiempo
se expresa como una sumatoria.
Diapositiva perteneciente a
ALGORITMIA

Anlisis prctico:
Clculo de unidades de tiempo
Reglas (continuacin)
6.Ciclos incondicionales Anidados: producto de tiempo de ejecucin del bloque por
cantidad de iteraciones de cada ciclo.

7. Sentencias alternativas:

7.1. Seleccin doble


Si (condicin)
Entonces S1 t1 T= tiempo de condicin + mximo (t1, t2 ).
Sino S2 t2
Finsi

7.2. Alternativa Mltiple


Se adiciona al tiempo de evaluacin de la condicin, el valor
correspondiente al tiempo de ejecucin mximo de las distintas alternativas.
Estructuras de Datos y
Algoritmos
Medidas Asintticas de
Complejidad
Para comparar funciones se definen clases de equivalencia,
que corresponden a las funciones que crecen de la misma
forma (muestran un comportamiento similar)
Cota Superior Notacin O

Sea f: N[0,). Se define el conjunto de funciones de orden O


(Omicron) de f como:

O(f) = {g: N[0,) / cR, c>0, n0N , g(n) cf(n) n n0}

Una funcin t: N [0,) es de orden O de f si t O(f).


Estructuras de Datos y
Algoritmos

rdenes de Complejidad
Se dice que O(f(n)) define un "orden de complejidad". Como
representante de este orden, se escoge a la funcin- f(n), ms
sencilla del mismo.
Se tiene:
O(1) orden constante
O(log n) orden logartmico

O(n) orden lineal


O(n2) orden cuadrtico
O(na) orden polinomial (a > 2)
O(an) orden exponencial (a > 2)
O(n!) orden factorial
Eficiencia de Algoritmos
O(1)
N2
O(log2 N)
N log N
O(N)
O(N log 2N)
N
O(N2)
O(N 3)
O(2 N)
log2 N

N elem N lg 2N N lg N2 N3 2N
2N

2 2 1 2 4 8 4

4 4 2 8 16 64 16

16 16 4 64 256 4.096 65.53


6

64 64 6 384 4.096 262.144 ?

128 128 7 896 16.384 2.097.152 ?

También podría gustarte