En
matemáticas, ciencias de la computación y disciplinas relacionadas, un
algoritmo es una lista bien definida, ordenada y finita de operaciones que
permite hallar la solución a un problema. Dado un estado inicial y una entrada,
a través de pasos sucesivos y bien definidos se llega a un estado final,
obteniendo una solución. Los algoritmos son objeto de estudio de la
algoritmia.
A lo largo de
la historia varios autores han tratado de definir formalmente a los algoritmos
utilizando modelos matemáticos. En general, la parte común en todas las
definiciones se puede resumir en las siguientes tres propiedades siempre y
cuando no consideremos algoritmos paralelos.
Tiempo secuencial. Un algoritmo funciona en tiempo
discretizado –paso a paso–, definiendo así una secuencia de estados "computacionales"
por cada entrada válida (la entrada son los datos que se le
suministran al algoritmo antes de comenzar).
Estado abstracto. Cada estado computacional puede
ser descrito formalmente utilizando una estructura de primer orden y cada
algoritmo es independiente de su implementación (los algoritmos son objetos
abstractos) de manera que en un algoritmo las estructuras de primer orden son
invariantes bajo isomorfismo.
Exploración acotada. La transición de un estado al siguiente
queda completamente determinada por una descripción fija y finita; es decir,
entre cada estado y el siguiente solamente se puede tomar en cuenta una
cantidad fija y limitada de términos del estado actual.
Los algoritmos pueden ser expresados de muchas maneras, incluyendo al
lenguaje natural, pseudocodigo, 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 dia
gramas 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:
1.
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.
2.
Descripción
formal. Se usa
pseudocódigo para describir la secuencia de pasos que encuentran la solución.
3.
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.
No hay comentarios.:
Publicar un comentario