En matemáticas,
lógica,
ciencias de la computación y disciplinas
relacionadas, un algoritmo (del griego y latín, dixit algorithmus y este a su
vez del matemático persa Al-Juarismi ) es un conjunto prescrito de
instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar
una actividad mediante pasos sucesivos que no generen dudas a quien deba
realizar dicha actividad. Dados un
estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un
estado final y se obtiene una solución. Los algoritmos son el objeto de estudio
de la algoritmia.
En la vida cotidiana, se emplean
algoritmos frecuentemente para resolver problemas. Algunos ejemplos son los
manuales de usuario, que muestran algoritmos para usar un aparato, o las
instrucciones que recibe un trabajador por parte de su patrón.
Algunos ejemplos en matemática son el algoritmo de multiplicación, para calcular
el producto, el algoritmo de la división para calcular el cociente de dos
números, el algoritmo de Euclides para obtener el máximo común divisor de dos enteros
positivos, o el método de Gauss para resolver un sistema lineal de ecuaciones.
Medios de expresión de un
algoritmo
Los
algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje
natural, pseudocódigo, diagramas de flujo y lenguajes de programación entre otros. Las
descripciones en lenguaje natural tienden a ser ambiguas y extensas. El usar
pseudocódigo y diagramas de flujo evita muchas ambigüedades del lenguaje
natural. Dichas expresiones son formas más estructuradas para representar
algoritmos; no obstante, se mantienen independientes de un lenguaje de
programación específico.
La
descripción de un algoritmo usualmente se hace en tres niveles:
Descripción
de alto nivel. Se establece el problema, se selecciona un modelo matemático y
se explica el algoritmo de manera verbal, posiblemente con ilustraciones y
omitiendo detalles.
Descripción
formal. Se usa pseudocódigo para describir la secuencia de pasos que encuentran
la solución.
Implementación.
Se muestra el algoritmo expresado en un lenguaje de programación específico o
algún objeto capaz de llevar a cabo instrucciones.
También
es posible incluir un teorema que demuestre que el algoritmo es correcto, un
análisis de complejidad o ambos.
Diagrama de flujo
Diagrama de
flujo que expresa un algoritmo para calcular la raíz cuadrada de un
número .
Los
diagramas de flujo son descripciones gráficas de algoritmos; usan símbolos
conectados con flechas para indicar la secuencia de instrucciones y están
regidos por ISO.
Los
diagramas de flujo son usados para representar algoritmos pequeños, ya que
abarcan mucho espacio y su construcción es laboriosa. Por su facilidad de
lectura son usados como introducción a los algoritmos, descripción de un
lenguaje y descripción de procesos a personas ajenas a la computación.
Los
algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje
natural, pseudocódigo, diagramas de flujo y lenguajes de programación entre
otros. Las descripciones en lenguaje natural tienden a ser ambiguas y extensas.
El usar pseudocódigo y diagramas de flujo evita muchas ambigüedades del
lenguaje natural. Dichas expresiones son formas más estructuradas para
representar algoritmos; no obstante, se mantienen independientes de un lenguaje
de programación específico.
Pseudocódigo
El
pseudocódigo (falso lenguaje, el prefijo pseudo significa falso) es una
descripción de alto nivel de un algoritmo que emplea una mezcla de lenguaje
natural con algunas convenciones sintácticas propias de lenguajes de
programación, como asignaciones, ciclos y condicionales, aunque no está regido
por ningún estándar. Es utilizado para describir algoritmos en libros y
publicaciones científicas, y como producto intermedio durante el desarrollo de
un algoritmo, como los diagramas de flujo, aunque presentan una ventaja
importante sobre estos, y es que los algoritmos descritos en pseudocódigo
requieren menos espacio para representar instrucciones complejas.
El
pseudocódigo está pensado para facilitar a las personas el entendimiento de un
algoritmo, y por lo tanto puede omitir detalles irrelevantes que son necesarios
en una implementación. Programadores diferentes suelen utilizar convenciones
distintas, que pueden estar basadas en la sintaxis de lenguajes de programación
concretos. Sin embargo, el pseudocódigo, en general, es comprensible sin
necesidad de conocer o utilizar un entorno de programación específico, y es a
la vez suficientemente estructurado para que su implementación se pueda hacer
directamente a partir de él.
No hay comentarios.:
Publicar un comentario