Vous êtes sur la page 1sur 7

Instituto Tecnologico de Queretaro COMPLEJIDAD DE LOS ALGORITMOS

Estructura de Datos 6W Ruben Meza Razo

La complejidad de los algoritmos nos representa o dice el tiempo de ejecucin de cualquier programa en base a los 'n' datos de entrada. Por lo tanto la complejidad de cualquier algorito se expresa en los siguientes trminos: T(n) Funcion de la complejidad la cual se interpreta de la siguiente manera: El tiempo de ejecucin est dado por los n datos de entrada

REGLAS PARA EL CALCULO DE LA COMPLEJIDAD DE UN ALGORITMO


1. 2. 3. 4. El tiempo de ejecucin de cada sentencia simple puede tomarse como complejidad de T(1) Para las sentencias de bifurcacin (if, case) el resultante de la complejidad ser T(1) La complejidad para los bucles (for, repeat, while) independientes ser T(n) La complejidad para los bucles anidados ser: T(nm) donde m nos representa el numero de bucles anidados

Ejemplo 1: El algoritmo a1 tarda n segundos en resolver un problema para una determinada cantidad de datos mientras que el algoritmo n a1 5n2 4n2 n2 n n n a2 n2+400n 400n 100n 100 100 a1 es mejor 100 a2 es mejor

>= >= >= >= < >=

Ejemplo 2: Dado el siguiente algoritmo determine su complejidad INICIO T(1) Leer a,b,c,sum T(1) if a>3 then b=c*a T(1) desde a=1 hasta b T(n) sum=sum+a T(1) Fin T(1) FINAL T(1)

I.S.C. Jos de Jess Gmez Benavides.

Quertaro, Quertaro a 19 de Agosto de 2010.

Instituto Tecnologico de Queretaro La complejidad del algoritmo es T(n) Anlisis de Eficiencia de los Algoritmos Page 2 Indice Introduccin Midiendo la Eficiencia de los Algoritmos Notacin Asinttica Reglas para el Clculo de la Eficiencia de los Algoritmos Funciones no recursivas Funciones Recursivas Solucin de Ecuaciones de Recurrencia Sustitucin Induccin rbol de Recursin Frmula Maestra Ecuacin Caracterstica Introduccin Objetivo: analizar la eficiencia de un algoritmo en funcin del tamao de la entrada. Ventajas: Mejor Comprensin de los algoritmos Disear algoritmos mejores Determinas la escalabilidad Depende El problema que tratamos de resolver El lenguaje de programacin utilizado El compilador El hardware utilizado La habilidad del programador Anlisis de Eficiencia

Estructura de Datos 6W Ruben Meza Razo

I.S.C. Jos de Jess Gmez Benavides.

Quertaro, Quertaro a 19 de Agosto de 2010.

Instituto Tecnologico de Queretaro Emprica Terica estamos interesados en contar cuantas instrucciones simples (asignaciones, comparaciones, etc.) se ejecutan, asumimos que independientemente de la mquina en que se ejecute, todas las operaciones simples consumen el mismo tiempo. Principio de Invarianza: Dos implementaciones distintas de un mismo algoritmo no difieren en eficiencia ms que en una constante multiplicativa. Tipos de Anlisis Peor de los Casos:Se corresponde con el peor tiempo. T(n) es el tiempo mximo sobre las entradas. Mejor Caso: Lmite inferior en el tiempo. T(n) es el menor tiempo de todas las posibles entradas Caso Promedio: Es el tiempo medio esperado sobre todas las posibles entradas de tamao n. Se considera una distribucin de probabilidad sobre las entradas. Anlisis Probabilstico: Es el tiempo de ejecucin esperado para una entrada aleatoria. Se expresa tanto el tiempo de ejecucin y la probabilidad de obtenerlo. Anlisis Amortizado: El tiempo que se obtiene para un conjunto de ejecuciones, dividido por el nmero de ejecuciones. Notacin Asinttica Estudia el comportamiento del algoritmo cuando el tamao de las entradas, n, es lo suficientemente grande, sin tener en cuenta lo que ocurre para entradas pequeas y obviando factores constantes. Comparar el tiempo de ejecucin del algoritmo con la curva que define una funcin, f(n), para entradas de I.S.C. Jos de Jess Gmez Benavides.

Estructura de Datos 6W Ruben Meza Razo

Quertaro, Quertaro a 19 de Agosto de 2010.

Instituto Tecnologico de Queretaro tamao n. Notacin O Notacin Omega Notacin Theta: Notacin Asinttica Notacin O Notacin Omega Notacin Theta Propiedades de Notacin Asint. Notacin O Ejemplos: O(1) Constante: Algunos algoirtmos de bsqueda, como por ejemplo Hashing o bsqueda del menor elemento en un Arbol Parcialmente Ordenado (Heap) O(log n) logaritmico: Algoritmo de bsqueda binaria, insercion o borrado en un Heap O(n) lineal: Bsqueda Secuencial. O(n log(n)) :Algoritmos de ordenacin Mergesort, Heapsort O(n) Cuadrtico:Algoritmos de ordenacin Burbuja, Insercin o Seleccin O(nk), si k>0 Polinomial: Multipliacacin de matrices (k=3, cbico) O(2n) Exponencial: Torres de Hanoi. O(n!) Factorial: Problemas de permutaciones Reglas para clculo eficiencia Como regla general, empezar por la parte ms interna del algoritmo y se avanza (mediante sucesivas aplicaciones de la regla de la suma y/o el producto) hacia las partes ms externas. Sentencias Simples Secuencias Sentencias Condicionales Bucles I.S.C. Jos de Jess Gmez Benavides.

Estructura de Datos 6W Ruben Meza Razo

Quertaro, Quertaro a 19 de Agosto de 2010.

Instituto Tecnologico de Queretaro Funciones no recursivas Funciones Recursivas Sentencia Simple Su tiempo de ejecucin est acotado superiormente por una constante, O(1). Operaciones de lectura, escritura, asignaciones, etc. y de forma genrica todas aquellas operaciones en las que no sea relevante el tamao del problema considerado

Estructura de Datos 6W Ruben Meza Razo

Page 12 Secuencia de sentencias Se aplica la regla de la suma, que nos indica que el orden de todo el bloque es el mximo de los ordenes de eficiencia de dicho bloque. cin >> x; x = x+1; z = 2*x;

Page 13 Sentencia condicional Si (condicin) Entonces Accion_Si Sino Accion_No. pertenece al orden del max{ O(cond),O(Acc_SI), O(Acc_NO) }.

Page 14 Bucle I.S.C. Jos de Jess Gmez Benavides. Quertaro, Quertaro a 19 de Agosto de 2010.

Instituto Tecnologico de Queretaro Se aplica la regla del producto. El tiempo asociado se obtiene como producto del orden del numero de iteraciones que realiza el bucle por el orden del tiempo de ejecucin del conjunto de sentencias que forman el cuerpo del bucle.

Estructura de Datos 6W Ruben Meza Razo

Page 15 Llamadas a funciones Se analiza primero el orden de eficiencia de las funciones a las que se llama y posteriormente , considerando las reglas anteriores, se pasa a calcular el tiempo de ejecucin de la funcin que las llama. Problema: Funciones Recursivas.

Page 16 Funciones recursivas Las funciones de tiempo que se obtienen son tambin recursivas Expresiones que representan el tiempo de ejecucin de un algoritmo para entradas de tamao n en funcin del tiempo de ejecucin que se tiene para el mismo algoritmo para entradas de tamao menor. Por ejemplo, T(n) = T(n 1) + f(n).

Page 17 Solucin Ecuaciones Recursivas Mtodos: Sustitucin Induccin I.S.C. Jos de Jess Gmez Benavides. Quertaro, Quertaro a 19 de Agosto de 2010.

Instituto Tecnologico de Queretaro rbol de Recursin Frmula Maestra Ecuacin Caracterstica

Estructura de Datos 6W Ruben Meza Razo

Page 18 Arboles de recursin Se representa grficamente el proceso de recursin. Factores a tener en cuenta: El tamao de las entradas usado como argumento en la siguiente relacin de recurrencia. La suma del trabajo realizado en cada nivel de recursin.

I.S.C. Jos de Jess Gmez Benavides.

Quertaro, Quertaro a 19 de Agosto de 2010.

Vous aimerez peut-être aussi