ordenes de complejidad

18
MODELO FUNCIONAL Órdenes de Complejidad

Upload: abril-martinez-velasquez

Post on 11-Jan-2016

80 views

Category:

Documents


0 download

DESCRIPTION

ordenes

TRANSCRIPT

Page 1: Ordenes de Complejidad

MODELO FUNCIONAL Órdenes de Complejidad

Page 2: Ordenes 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

función f(n) más sencilla perteneciente a esta familia.

Las funciones de complejidad algorítmica más habituales en

las cuales el único factor del que dependen es el tamaño de la

muestra de entrada n, ordenadas de mayor a menor eficiencia

son:

Page 3: Ordenes de Complejidad

ÓRDENES DE COMPLEJIDAD

Page 4: Ordenes de Complejidad

ÓRDENES DE COMPLEJIDAD

Se identifica una Jerarquía de Ordenes de Complejidad que coincide con el

orden de la tabla mostrada; jerarquía 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 logarítmica. Esta suele aparecer en determinados

algoritmos con iteración o recursión no estructural, ejemplo la búsqueda

binaria.

Page 5: Ordenes de Complejidad

ÓRDENES DE COMPLEJIDAD

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

usual. Aparece en la evaluación 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 vencerás como por ejemplo en el método de ordenación

quicksort y se considera una buena complejidad. Si n se duplica, el

tiempo de ejecución es ligeramente mayor del doble.

Page 6: Ordenes de Complejidad

ÓRDENES DE COMPLEJIDAD

O(n2): Complejidad cuadrática. Aparece en bucles o ciclos

doblemente anidados. Si n se duplica, el tiempo de ejecución

aumenta cuatro veces.

O(n3): Complejidad cúbica. Suele darse en bucles con triple

anidación. Si n se duplica, el tiempo de ejecución se multiplica

por ocho. Para un valor grande de n empieza a crecer

dramáticamente.

Page 7: Ordenes de Complejidad

ÓRDENES DE COMPLEJIDAD

O(na): Complejidad polinómica (a > 3). Si a crece, la

complejidad del programa es bastante mala.

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

la práctica por el elevadísimo tiempo de ejecución. Se dan en

subprogramas recursivos que contengan dos o más llamadas

internas.

Page 8: Ordenes de Complejidad
Page 9: Ordenes de Complejidad

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

máquina en la cual se ejecute.

Análisis A príori

Page 10: Ordenes de Complejidad

CALCULAR EL ORDEN DE COMPLEJIDAD

El contador de frecuencias es una expresión algebraica que

indica el número de veces que se ejecutan las instrucciones de

un algoritmo.

Su orden de complejidad es

constante O(1), debido a que

cada instrucción se ejecuta sólo

una vez.

Total de veces que se ejecutan

las instrucciones es 6.

Este valor es el contador de

frecuencias.

Page 11: Ordenes de Complejidad

CALCULAR EL ORDEN DE COMPLEJIDAD

Su complejidad es lineal

O(n)

Page 12: Ordenes de Complejidad

OBTENER ORDEN DE COMPLEJIDAD

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

algoritmo en cuanto a tiempo de ejecución. Se obtiene a partir del

contador de frecuencias: se elimina los coeficientes, las constantes y

lo términos negativos, de los términos resultantes: si son

dependientes entre sí se eligen el mayor de ellos y este será el

orden de complejidad de dicho algoritmo.

Page 13: Ordenes de Complejidad

CALCULAR EL ORDEN DE COMPLEJIDAD

Su orden de complejidad es de O(n2).

Page 14: Ordenes de Complejidad

CALCULAR EL ORDEN DE COMPLEJIDAD LOGORITMO

Logaritmo,

La definición clásica de logaritmo de un número x es:

es el exponente al cual hay que evaluar un número llamado base para

obtener x.

Otra definición,

Logaritmo de un número x es el número de veces que hay que dividir

un número por otro llamado base, para obtener como cociente uno (1).

Page 15: Ordenes de Complejidad

EJEMPLO PRÁCTICO DE ALGORITMOS

LOGARÍTMICOS

1. Búsqueda secuencial

2. Búsqueda binaria T. D. y V.

Page 16: Ordenes de Complejidad

CALCULAR EL ORDEN DE COMPLEJIDAD LOGORITMO

Page 17: Ordenes de Complejidad

SEGUNDA TÉCNICA

Page 18: Ordenes de Complejidad