Vous êtes sur la page 1sur 18

Anlisis de Algoritmos.

1.1.- Concepto de complejidad de un algoritmo.


Fcil de entender, codificar y depurar.

Algoritmo

Cuando se resuelve un problema

Uso efectivo de los recursos del computador + menor tiempo de ejecucin

Tiempo de ejecucin de un programa.


Datos de entrada

Tiempo de ejecucin

Calidad del cdigo generado para crear el cdigo objeto.

Complejidad de tiempo del algoritmo

Naturaleza y rapidez de las instrucciones maquina

Tiempo de ejecucin de un programa.


T(n). Tiempo de ejecucin de un programa con una entrada de tamao n. T(n) como tiempo de ejecucin del peor caso. Mximo valor del tiempo de ejecucin para entradas de tamao n. No es posible expresar T(n) en unidades de tiempo. Por qu?.

Asntotas
Comportamiento asinttico de un algoritmo es cuando el tamao de las entradas N tiende a infinito. A un conjunto de funciones que comparten un mismo comportamiento asinttico le denominaremos un orden de complejidad

Ordenes de complejidad
Representacin O(1) O(log n) O(n) O(n log n) O(n2) O(na) O(an) O(n!) orden cuadrtico orden polinomial (a > 2) orden exponencial (a > 2) orden factorial Nombre orden constante orden logartmico orden lineal

1.2 Aritmtica de la notacin O.


La notacin O conocida tambin como notacin asinttica, se utiliza para hacer referencia a la velocidad de crecimiento de los valores de una funcin. Ejemplo: T(n) = O(n2). Se lee o de n al cuadrado. Significa que existen constantes enteras c y n0 tales que para n mayor o igual que n0, se tiene que T(n) cn2.

1.2 Aritmtica de la notacin O.


Regla de la suma: T1(n) + T2(n) = O(max(f(n),g(n))). Calcula el tiempo de ejecucin de una secuencia de pasos de programa, donde cada paso de programa puede contener ciclos y ramificaciones. Ejemplo: Se tienen O(n2), O(n3), O(nlogn) => O(max(n2,n3) ) es O(n3); y O(max(n3, nlogn)) es O(n3). Por lo tanto la suma de los tres es igual a O(n3).

1.2 Aritmtica de la notacin O.


Regla del producto: T1(n)T2(n) = O(f(n)f(g)). Segn esta regla O(cf(n)) es lo mismo que O(f(n)). Ejemplo: O(n2/2) = O(n2).

Reglas prcticas para el clculo de la complejidad de un algoritmo.


Los algoritmos bien estructurados combinan las sentencias de alguna de las formas siguientes sentencias sencillas secuencia (;) decisin (if) bucles llamadas a procedimientos, que en nuestro caso pudiera ser llamadas a mtodos de alguna clase.

Reglas prcticas para el clculo de la complejidad de un algoritmo.


Sentencias sencillas => O(1). Estructura IF/ELSE => O(1). Bucles o ciclos. Cuando existe un nmero limitado de veces que se repite un grupo de sentencias, su complejidad es O(1). Pero si N forma parte del lmite de iteraciones, entonces es O(n). Cuando tenemos dos bucles anidados es O(n2). Bucles multiplicativos donde la variable de control no es lineal es O(log n). O(nlogn) es un bucle interno multiplicativo anidado a otro que es normal. Las llamadas a procedimientos o mtodos generan una orden de complejidad segn el anlisis de sentencias de cada uno de ellos.

Ejemplos

Ejemplos

Ejemplos

Ejemplos
int cont = 0; for (int i = 2; i <= 1000; i++){ for (int j = 1; j <= i; j++){ if (i % j == 0){ cont = cont + 1; } } if (cont < 3){ Console.Write(i+", "); } cont = 0; } Console.ReadKey();

Ejemplos
For(int j = 0; j < n; j++){ For(int i = n; i > 0; i /2){ Console.WriteLine(i); } }

Vous aimerez peut-être aussi