El concepto de algoritmo es uno de los conceptos fundamentales de la Ciencia de la
Computación y apareció mucho antes de que surgiesen las computadoras y vino a ser una de las nociones fundamentales de la matemática. El término algoritmo se deriva del nombre de un matemático que vivió en el siglo IX, en Uzbekistán, llamado Al-Jwarizmi o Al-Khowarizmi, el cual, entre sus trabajos escribió un libro que trataba sobre las reglas para efectuar operaciones aritméticas. De manera informal podemos definir el término algoritmo como: Un conjunto finito de reglas (pasos u órdenes) que indican una secuencia de operaciones a ejecutar para alcanzar un resultado que soluciona un problema dado, esta secuencia de pasos debe poder ejecutarse aunque no se tenga conocimiento del problema que se resuelve. Como se ve en la definición muy asociado al concepto de algoritmo está el concepto de “ejecutor” o “procesador” del algoritmo que es el ente que ejecuta los pasos que el algoritmo describe. El algoritmo es la guía de acción para el ejecutor; indica en una forma precisa e inteligible al ejecutar que ha de desarrollar una sucesión determinada de acciones para lograr el objetivo o solucionar un problema. Ejemplo 1: Se quiere hallar el área de la figura siguiente para una valor racional dado de la variable x, esto se puede hacer ejecutando el algoritmo que sigue: 3 Algoritmo1 Paso 1: Multiplicar el valor de x por sí mismo y poner el resultado en a. Paso 2: Multiplicar el valor de a por 2 y poner el resultado en b. Paso 3: Multplicar el valor de x por 3 y poner el resultado en c. Paso 4: Sumar el valor de b con el valor de c y poner el resultado en r. En r tenemos el resultado final x 2x Observar que se está evaluando la función f(x)= 2x2 + 3x que es la que permite calcular el área de la figura (área del rectángulo x.2x más el área del triángulo 2x.3/2). En este algoritmo se utilizan tres acciones fundamentales o primitivas “multiplicar”, “poner el resultado en” y “sumar”. Se supone, entonces, que el ejecutor del algoritmo conoce estas acciones y puede ejecutarlas. Las acciones que puede realizar un ejecutor son llamadas acciones primitivas y los algoritmos tienen que estar enunciados a partir de estas acciones. ¿Este algoritmo es único? La respuesta obvia es NO, se puede, también, hacer lo siguiente: Algoritmo 1a Paso 1: Multiplicar el valor de x por 2 y poner el resultado en a. Paso 2: Sumar el valor de a con 3 y poner el resultado en b. Paso 3: Multiplicar el valor de b por el valor de x y poner el resultado en r. En r tenemos el resultado final. Observar ahora se está evaluando la función f(x)= (2x + 3)x que en definitiva es la misma función f(x) = 2x2 + 3x. Si se compara los algoritmos 1 y 1a se observa que el 1a hace que el ejecutor haga menos cantidad de pasos u operaciones, aunque con ambos se obtiene el mismo resultado. Tener diversas variantes de algoritmos para resolver un mismo tipo de problema, supone la selección del mejor algoritmo para el problema dado; sin embargo en la práctica las cosas no son tan fáciles y en ocasiones no es tan obvio poder escoger un algoritmo entre un grupo, pues la cantidad de operaciones no siempre es el único criterio a tener en cuenta. También debe considerarse, por ejemplo, el tamaño del algoritmo, la claridad con que está expresado, etc. Estos criterios entran en contradicción al hacer el análisis. Una regla que se cumple generalmente en el trabajo de computación, es que cuando se ahorra tiempo se gasta más espacio y viceversa. Características de los algoritmos Los algoritmos tienen las siguientes características: a) Finalidad Todo algoritmo tiene el objetivo de resolver un tipo de problema y se ejecuta para obtener un resultado que es la solución de un caso particular de ese problema. b) Orden Los pasos del algoritmo tienen que ejecutarse en un orden preciso e indicado en el algoritmo. Si este orden se altera, generalmente no se obtiene el resultado deseado.