Análisis y diseño de algoritmos: Implementaciones en
C y Pascal De Gustavo López, Ismael Jeder, Augusto Vega
El Diccionario de la Real Academia Española indica que un algoritmo es un “conjunto
ordenado y finito de operaciones que permite hallar la solución de un problema”. En términos sencillos, un algoritmo es una “receta”, o sea, un conjunto de pasos que, ejecutados de la manera correcta, permite obtener un resultado (en un tiempo acotado). A menudo, los algoritmos están asociados con las computadoras y los lenguajes de programación. Sin embargo, se los encuentra en la vida cotidiana, cuando cada uno de nosotros (racionalmente o por instinto) ejecuta acciones para lograr fines determinados. Por ejemplo, una taza de café con leche podría prepararse mediante el siguiente algoritmo: 1. Encender una homalla. 2. Colocar una jarra con leche sobre la hornalla. 3. Esperar a que la leche hierva. 4. Verter un poco de leche en la taza y batir. 5. Colocar café en una taza. 6. Verter más leche en la taza hasta colmarla. 7. Agregar azúcar a gusto. Si se nos permite enriquecer la definición expuesta, también es necesario que las operaciones que forman parte del algoritmo estén perfectamente definidas y que no haya ambigüedad al momento de ejecutarlas. En el segundo paso del ejemplo uno podría preguntarse en cuál de las hornallas colocar la jarra. Parece algo muy obvio para nosotros que somos seres humanos, pero no para una computadora, que no es capaz de razonar ni de sacar conclusiones por cuenta propia. Un algoritmo es unívoco, lo que implica que, si se ejecuta varias veces el mismo algoritmo sobre el mismo conjunto de datos de entrada, siempre se obtienen los mismos datos de salida. Además, el resultado debe generarse en un tiempo finito, Los métodos que utilizan algoritmos se denominan métodos algorítmicos, en oposición a los que implican algún juicio o interpretación, que se denominan métodos heurísticos. Los métodos algorítmicos se pueden implementar en computadoras: sin embargo, los procesos heurísticos no habían sido convertidos con facilidad en ellas. En los últimos años, sin embargo, las técnicas de inteligencia artificial hicieron posible la implementación del proceso heurístico en computadoras. Gustavo López, Ismael Jeder, Augusto Vega (2009) Análisis y diseño de algoritmos: Implementaciones en C y Pascal (Alpha Editorial)