Está en la página 1de 18

MODELO FUNCIONAL

rdenes de Complejidad

RDENES DE COMPLEJIDAD
La familia O(f(n)) define un Orden de Complejidad. Elegiremos
como representante de este Orden de Complejidad a la
funcin f(n) ms sencilla perteneciente a esta familia.
Las funciones de complejidad algortmica ms habituales en
las cuales el nico factor del que dependen es el tamao de la
muestra de entrada n, ordenadas de mayor a menor eficiencia
son:

RDENES DE COMPLEJIDAD

RDENES DE COMPLEJIDAD
Se identifica una Jerarqua de Ordenes de Complejidad que coincide con el
orden de la tabla mostrada; jerarqua en el sentido de que cada orden de
complejidad inferior tiene a las superiores como subconjuntos.

O(1): Complejidad constante. Cuando las instrucciones se ejecutan una vez.

O(log n): Complejidad logartmica. Esta suele aparecer en determinados


algoritmos con iteracin o recursin no estructural, ejemplo la bsqueda
binaria.

RDENES DE COMPLEJIDAD

O(n): Complejidad lineal. Es una complejidad buena y tambin muy


usual. Aparece en la evaluacin de bucles simples siempre que la
complejidad de las instrucciones interiores sea constante.

O(n log n): Complejidad cuasi-lineal. Se encuentra en algoritmos de


tipo divide y vencers como por ejemplo en el mtodo de ordenacin
quicksort y se considera una buena complejidad. Si n se duplica, el
tiempo de ejecucin es ligeramente mayor del doble.

RDENES DE COMPLEJIDAD

O(n2): Complejidad cuadrtica. Aparece en bucles o ciclos

doblemente anidados. Si n se duplica, el tiempo de ejecucin


aumenta cuatro veces.

O(n3): Complejidad cbica. Suele darse en bucles con triple


anidacin. Si n se duplica, el tiempo de ejecucin se multiplica
por ocho. Para un valor grande de n empieza a crecer
dramticamente.

RDENES DE COMPLEJIDAD

O(na): Complejidad polinmica (a > 3). Si a crece, la

complejidad del programa es bastante mala.

O(2n): Complejidad exponencial. No suelen ser muy tiles en

la prctica por el elevadsimo tiempo de ejecucin. Se dan en


subprogramas recursivos que contengan dos o ms llamadas
internas.

MEDIR EFICIENCIA DEL ALGORITMO


Interesa medir la eficiencia del algoritmo por el
hecho de ser ese algoritmo, independiente del
lenguaje en el que se haya codificado y de la
mquina en la cual se ejecute.
Anlisis A prori

CALCULAR EL ORDEN DE COMPLEJIDAD


El contador de frecuencias es una expresin algebraica que
indica el nmero de veces que se ejecutan las instrucciones de
un algoritmo.

Su orden de complejidad es
constante O(1), debido a que
cada instruccin se ejecuta slo
una vez.
Total de veces que se ejecutan
las instrucciones es 6.
Este valor es el contador de
frecuencias.

CALCULAR EL ORDEN DE COMPLEJIDAD

Su complejidad
O(n)

es

lineal

OBTENER ORDEN DE COMPLEJIDAD

El orden de complejidad es el concepto que define la eficiencia del


algoritmo en cuanto a tiempo de ejecucin. Se obtiene a partir del
contador de frecuencias: se elimina los coeficientes, las constantes y
lo trminos negativos, de los trminos resultantes: si son
dependientes entre s se eligen el mayor de ellos y este ser el
orden de complejidad de dicho algoritmo.

CALCULAR EL ORDEN DE COMPLEJIDAD

Su orden de complejidad es de O(n2).

CALCULAR EL ORDEN DE COMPLEJIDAD LOGORITMO


Logaritmo,
La definicin clsica de logaritmo de un nmero x es:
es el exponente al cual hay que evaluar un nmero llamado base para
obtener x.

Otra definicin,
Logaritmo de un nmero x es el nmero de veces que hay que dividir
un nmero por otro llamado base, para obtener como cociente uno (1).

EJEMPLO

PRCTICO
LOGARTMICOS

DE

ALGORITMOS

1. Bsqueda secuencial
2. Bsqueda binaria T. D. y V.

CALCULAR EL ORDEN DE COMPLEJIDAD LOGORITMO

SEGUNDA TCNICA

También podría gustarte