Está en la página 1de 3

INSTITUTO TECNOLOGICO DE SAN LUIS POTOSICAMPUS XILITLA ESTRUCTURA DE DATOS MIGUEL TOMAS BENITO

Introduccin: Entendemos por algoritmo como un conjunto finito de instrucciones no ambiguas y efectivas que indican cmo resolver un problema, producen al menos una salida, reciben cero o ms entradas y, para ejecutarse, necesitan una cantidad finita de recursos. Una instruccin es no ambigua cuando la accin a ejecutar est perfectamente definida. El tema principal de la investigacin es el anlisis de los algoritmos: estudia la complejidad espacial y temporal de los algoritmos. Anlisis de los algoritmos El anlisis de algoritmos es una parte importante de la Teora de complejidad computacional ms amplia, que provee estimaciones tericas para los recursos que necesita cualquier algoritmo que resuelva un problema computacional dado. Estas estimaciones resultan ser bastante tiles en la bsqueda de algoritmos eficientes. Tareas en el Anlisis de Algoritmos: Determinar qu operaciones se emplean y su costo relativo. Determinar conjuntos de datos para exhibir todos los patrones posibles de comportamiento. Complejidad en el tiempo El tiempo de Ejecucin de un programa se mide en funcin de N , lo que designaremos como T(N). Esta funcin se puede calcular fsicamente ejecutando el programa acompaados de un reloj, o calcularse directamente sobre el cdigo, contando las instrucciones a ser ejecutadas y multiplicando por el tiempo requerido por cada instruccin Cuando se habla del tiempo de ejecucin de un algoritmo debe tenerse presente que el tiempo de ejecucin exacto de un programa depende de varios factores: 1. 2. 3. 4. Los datos de entrada La calidad del condigo generado por el compilador La maquina donde se ejecuta el programa La complejidad del tiempo del algoritmo base del programa

INSTITUTO TECNOLOGICO DE SAN LUIS POTOSICAMPUS XILITLA ESTRUCTURA DE DATOS MIGUEL TOMAS BENITO

Cuando se estudia la complejidad de tiempo de ejecucin de un algoritmo se define est en funcin de los datos de entrada. Operaciones elementales: Operaciones aritmticas bsicas (+. -, *, /, %) Asignaciones variables (=) Comparaciones lgicas o relacionales {&&, l l, <>, >=, =<, ==, !=) Acceso a estructuras de datos estticas y dinmicas Parmetros que llegan a los mtodos Instrucciones de salto (break, contine) Retorno de valores (return) Referencia a objetos Instrucciones condicionales Creacin de objetos Expresiones que con incrementos y decremento Complejidad en el espacio La misma idea que se utiliza para medir la complejidad en tiempo de un algoritmo se utiliza para medir su Complejidad en espacio Decir que un programa es O(N) en espacio significa que sus requerimientos de memoria aumentan proporcionalmente con el tamao del problema. Esto es, si el problema se duplica, se necesita el doble de memoria. Del mismo modo, para un programa de complejidad O ( N2 ) en espacio, la cantidad de memoria que se necesita para almacenar los datos crece con el cuadrado del tamao del problema: si el problema se duplica, se requiere cuatro veces ms memoria. En general, el clculo de la complejidad en espacio de un algoritmo es un proceso sencillo que se realiza mediante el estudio de las estructuras de datos y su relacin con el tamao del problema. El problema de eficiencia de un programa se puede plantear como un compromiso entre el tiempo y el espacio utilizados. En general, al aumentar el espacio utilizado para almacenar la informacin, se puede conseguir un mejor desempeo, y, entre ms compactas sean las estructuras de datos, menos veloces resultan los algoritmos. Eficiencia de los algoritmos Una estrategia para decidir que algoritmos escoger consistira en implementar todos estos algoritmos, ejecutarlos, y escoger el mas eficiente. Est aproximacin tiene principalmente dos inconvenientes. Por un lado, es necesario implementar un conjunto de algoritmos, aunque en realidad solo se necesita uno, lo que representa un esfuerzo considerable (generalmente

INSTITUTO TECNOLOGICO DE SAN LUIS POTOSICAMPUS XILITLA ESTRUCTURA DE DATOS MIGUEL TOMAS BENITO

prohibitivo). Por otro lado, el hecho de ejecutar una implementacin de un algoritmo en una maquina concreta y por un conjunto de datos de prueba especficos, no necesariamente aporta suficiente informacin para saber cmo se comportara el mismo algoritmo en una maquina diferente o con entradas diferentes. As pues el objetivo consiste en estudiar las propiedades del algoritmo a priori, e implementar solo lo que se considere mejor. La calidad de un algoritmo normalmente se mide en funcin de su eficiencia, pero tambin hay que valorar el coste de escribirlo, entenderlo y modificarlo. La eficiencia nos da el anlisis de algoritmo: Dimensin Temporal: Medida del tiempo empleado. Dimensin Espacial: medida de los recursos invertidos. Encontrar Algoritmos eficientes puede definir si Existe o no una Solucin al Problema. Al Anlisis de Algoritmos se centra en el estudio de los Bucles, del cual e nltima instancia, dependern las instrucciones a ser ejecutadas

El anlisis de la eficiencia algortmica nos lleva a estudiar el comportamiento de los algoritmos frente a condiciones extremas. Conclusin: El anlisis de algoritmos es una parte importante de la Teora de complejidad computacional ms amplia, que provee estimaciones tericas para los recursos que necesita cualquier algoritmo que resuelva un problema computacional dado. Estas estimaciones resultan ser bastante tiles en la bsqueda de algoritmos eficientes. A la hora de realizar un anlisis terico de algoritmos es conveniente calcular su complejidad en su sentido asinttico, es decir, para un tamao de entrada suficientemente grande.

También podría gustarte