miércoles, 11 de mayo de 2011

Algoritmo

Una de las características de los seres humanos es su capacidad para plantearse y resolver problemas. Éstos pueden ser de naturaleza muy diversa, desde los problemas más inmediatos relacionados con la propia subsistencia, hasta los problemas más abstractos de naturaleza matemática o filosófica.

Un algoritmo es la descripción precisa de los pasos que nos permiten obtener la solución de un problema determinado. En general, los pasos son acciones u operaciones que se efectúan sobre ciertos objetos. Al comienzo del algoritmo, los objetos tienen unos valores iniciales (los datos) que varían como consecuencia del proceso descrito por el algoritmo, obteniéndose los valores de salida o resultados.

La informática estudia el procesamiento de la información mediante algoritmos, aunque el concepto de algoritmo, que proviene de las matemáticas, es muy anterior e independiente de la existencia de la informática y los computadores.

Nota: Se conoce un algoritmo para el cálculo del máximo común divisor de dos números naturales, debido a Euclides, que data del siglo IV a.C., al que se conoce como el "abuelo" de todos los algoritmos.

El concepto de algoritmo tiene una importancia fundamental dentro de la informática, por ser previo a la resolución del problema en el computador; si no se conoce el algoritmo para resolver un problema, no puede plantearse su resolución en el computador.

Aunque existen algoritmos registrados para la realización de tareas muy variadas, en general los algoritmos desarrollados resuelven sólo determinadas partes de un problema como, por ejemplo, la ordenación de una lista de valores, pero no un problema real completo. En consecuencia, habría que diseñaar un algoritmo para su resolución.

El diseño de algoritmos implica un análisis profundo del problema, de sus datos iniciales, del proceso que se les aplica y de los resultados esperados. A partir de este análisis debe establecerse cuál es la mejor estructura de datos para resolver el problema. De hecho, Niklaus Wirth, uno de los padres de la programación estructurada, titula una de sus obras fundamentales Algoritmos + Estructuras de Datos = Programas,mostrando la importancia que concede a dichas estructuras [Wir86b].

Existen técnicas que facilitan el dise~no de algoritmos, tales como la programación estructurada, la programación modular, el re¯namiento por pasos, el dise~no descendente y la estructuración y abstracción de los datos.

Para poder expresar algoritmos se utilizan lenguajes con la necesaria precisión, llamados lenguajes algorítmicos, que son independientes de los lenguajes de programación. Los más utilizados son el seudocódigo y los diagramas de flujo.

Dado un problema concreto y conocido el algoritmo que lo resuelve, para obtener la solución del problema tenemos que partir de los datos de entrada, y ejecutar las acciones descritas en el algoritmo. Al proceso de ejecutar un algoritmo concreto para unos datos determinados se le llama cómputo, de donde procede el término computador. El procesador es quien ejecuta materialmente el cómputo.

No hay comentarios:

Publicar un comentario