Page 18 - INTRODUCCIÓN AL ANÁLISIS DE ALGORITMOS
P. 18

INTRODUCCIÓN AL ANÁLISIS  DE ALGORITMOS


                  En estos casos, interesa conocer cuál es la cantidad de pasos que realiza un algoritmo para procesar
                  una entrada de tamaño n, y no necesariamente cuál corre más rápido. Es decir, lo importante no es
                  saber si un mismo algoritmo corre más rápido en C/C++, en Java, en algún lenguaje especial o en
                  algún hardware específico, sino la cantidad de operaciones que realiza el algoritmo.

                  Esta tarea, por supuesto, no es sencilla, pues lo que se busca obtener es la complejidad, es decir,
                  establecer funciones que representen el orden de crecimiento de las operaciones en función del
                  tamaño de la entrada. Por ejemplo, en el caso del algoritmo 1.1, el orden de crecimiento es el de
                  una función lineal o de primer orden, mientras que el orden de crecimiento del algoritmo 1.2 y del
                  algoritmo 1.3 es el de una función cuadrática o de segundo orden. Como se verá en los siguientes
                  capítulos —en términos de análisis de algoritmos—, aunque los polinomios son distintos, se dice que
                  ambos algoritmos tienen la misma complejidad.

                  Informalmente, un algoritmo se define como un procedimiento computacional que toma un conjunto
                  de datos como entrada y genera otro conjunto de datos como salida. Por ende, un algoritmo es una
                  secuencia de pasos computacionales que transforma la entrada en salida. El algoritmo describe un
                  procedimiento computacional específico para encontrar la relación entrada-salida. Un ejemplo tradi-
                  cional para presentar el tema del diseño de los algoritmos se basa en ordenar una lista de números
                  de forma no creciente.

                  Entrada: Una lista de número
                  Salida: Reordenamiento de la secuencia de numero tal que







                  Metodología



                  Para enfocar la comparación de algoritmos se seguirán los siguientes pasos:




                             1.  Averiguar la función f(n) que caracteriza los recursos requeridos por un algorit-
                             mo en función de tamaño n de los datos a procesar.
                             2.  Dadas dos funciones f(n) y g(n), se define una relación de orden entre ellas, que
                             llamaremos complejidad, lo cual determinará cuándo una función es más compleja
                             que otra o cuándo son equivalentes.
                             3.  Seleccionar una serie de funciones de referencia para situaciones típicas.
                             4.  Definir conjuntos de funciones que llamaremos órdenes de complejidad.










                                                               12
   13   14   15   16   17   18   19   20   21   22   23