ALGORITMIA
Un algoritmo es una secuencia precisa de operaciones (pasos) que resuelven un
problema en un tiempo finito. Pasos para la resolución de un problema: paso uno
análisis del problema, paso dos formulaciones de un procedimiento para resolverlo
tres descripciones del procedimiento en términos asequibles a un agente ejecutor
ejemplo (una maquina), paso cuatro ejecuciones del procedimiento para finalizar
su solución. Los algoritmos son independientes del lenguaje de programación y
del ordenador que los ejecuta. Se pueden expresar en multitud de lenguajes y
ejecutarse en ordenadores distintos. Propiedades de los algoritmos a) Siempre
debe terminar. b) Debe contener instrucciones concretas, sin ninguna
ambigüedad. c) Todos sus pasos deben ser simples y tener un orden definido. d)
Debe funcionar sean cuales sean los datos de entrada. e) Debe ser eficiente y
rápido Æ Hay que Optimizar Æ Para un problema existen múltiples soluciones, y
debemos escoger aquella que consuma menos tiempo y recursos. f) Es
independiente de la máquina y del lenguaje de programación que se vaya a
utilizar. Un algoritmo puede implementarse (escribirse) en cualquier lenguaje de
programación. (1)
Los algoritmos son una secuencia lógica y detallada de pasos para solucionar un
problema. Su campo es amplio y dinámico e intervienen directamente en la vida
de las organizaciones resolviendo problemas mediante programas de
computadora en las distintas áreas de la empresa. Así, dada su importancia, son
objeto de estudio de la asignatura Análisis, Diseño e Implantación de Algoritmos,
desarrollada en cinco unidades. Hoy día, el algoritmo (de Al-Khowarizmi,
sobrenombre del célebre matemático Mohamed Ben Musa) es una forma
ordenada de describir los pasos para resolver problemas. Es una manera
abstracta de reducir un problema a un conjunto de pasos que le den solución. Hay
algoritmos muy sencillos y de gran creatividad, aunque también algunos conllevan
un alto grado de complejidad. Un algoritmo es un conjunto detallado y lógico de
pasos para alcanzar un objetivo o resolver un problema. Por ejemplo, el instructivo
para armar un modelo de avión a escala; cualquier persona, si atiende en forma
estricta la secuencia de los pasos, llegará al mismo resultado. Los pasos deben
ser suficientemente detallados para que el procesador los entienda. En nuestro
ejemplo, el procesador es el cerebro de quien arma el modelo; pero el ser humano
tiende a obviar muchos aspectos y es factible que haga en forma automática
algunos de los pasos del instructivo, sin detenerse a pensar en cómo llevarlos a
cabo.
Para que un algoritmo realmente lo sea, cumplirá con las características o
propiedades que se describen a continuación. Finito: Dentro de la secuencia de
pasos para realizar la tarea, debe tener una situación o condición que lo detenga;
de lo contrario, se pueden dar ciclos infinitos que impidan llegar a un término;
Preciso: Un algoritmo no debe dar lugar a criterios. Por ejemplo: qué sucedería si
a dos personas en distintos lugares se les ordenara preparar un pastel;
suponemos que saben cómo hacerlo, y siguiendo las indicaciones de la receta,
llegan a un paso en el que se indica que se agregue azúcar al gusto. Entonces,
cada persona incorporaría azúcar de acuerdo con sus preferencias y el resultado
no sería el mismo: los dos pasteles serían diferentes en sus características.
Concluimos que este ejemplo no es un algoritmo, puesto que existe una
ambigüedad en el paso descrito. Obtener el mismo resultado: En cualquier
circunstancia, si se atienden en forma estricta los pasos del algoritmo, siempre se
debe llegar a un mismo resultado. Ejemplos: obtener el máximo común divisor de
dos números enteros positivos, armar un modelo a escala, resolver una ecuación,
etcétera. Si carecen de cualquiera de estas características o propiedades, los
pasos en cuestión no son algoritmo. (2)
Según el criterio utilizado se aplican diferentes clasificaciones a los algoritmos. Por
ejemplo, si usamos la clasificación por el sistema de signos con el cual se
describen los pasos a seguir del algoritmo, podemos diferenciar dos
tipos, algoritmos cualitativos: aquellos que sus pasos son instrucciones verbales
y algoritmos cuantitativos: aquellos que se siguen instrucciones de cálculos
numéricos. Si se clasifican en base a su función se pueden establecer tres grupos
principales como son los algoritmos de búsqueda, algoritmos de ordenamiento y
algoritmos de encaminamiento o enrutamiento. El tercer criterio que puede
usarse para su clasificación es en base a su estrategia para alcanzar un resultado.
En este grupo podemos mencionar a los algoritmos probabilísticos, heurísticos,
voraces, de escalada y deterministas.(3)
Por un tiempo los algoritmos solo se conceptualizaban para reglas de aritmética
para números arábicos. No fue hasta el siglo VXIII que se comienza a emplear
algoritmos con el concepto tal y como hoy se conoce. El primer caso de algoritmos
computacionales proviene del año 1842 de los escritos de la matemática británica
Ada Lovelace para la maquina analítica de Charles Babbage. De allí que sea
considerada como el primer programador de la historia, que además en su honor a
un lenguaje de programación se le ha colocado su nombre, este es el lenguaje de
programación Ada. Sin embargo, dado que Babbage nunca terminó su máquina
analítica, el algoritmo que realizó no llegó a implementarse. No obstante, su
trabajo inspiró a otros investigadores que se dedicaron a este campo. Años más
tarde en el 1900 el matemático David Hilbert había propuesto varias preguntas
fundamentales sobre problemas teóricos de las matemáticas, como es el caso del
problema de la decisión planteada por el matemático Gottfrie Leibniz que
decía: "¿Es posible encontrar una manera sencilla de decidir si un problema
matemático cualquiera tiene solución?". En el año 1931 el matemático Kurt
Gödel publica el Teorema de incompletud donde postula que existen
proposiciones que son indecidibles. En base a este problema entre los años 1930
y 1940 derivó el desarrollo teórico y formalización de los algoritmos con los
trabajos de Alan Turing, Emil Post, Stephen Kleene y Alonzo Church con el
objetivo de resolver este problema o demostrar el Teorema. Entre los años 1950 y
1960 los lenguajes de programación, compiladores y sistemas operativos estaban
en desarrollo, por lo tanto, se convirtieron tanto en el sujeto como la base para la
mayoría del trabajo teórico sobre los algoritmos. Sin embargo, no fue hasta la
década de 1980 de la mente de Paul Benioff y Richard Feynman que una nueva
revolución en la teoría de los algoritmos resurge, esta fue la computación cuántica,
que a diferencia de las clásicas funciona sobre los principios de la mecánica
cuántica, en donde los bits podían estar superposicionados en diferentes estados
a la vez a diferencia de las computadoras clásicas que solo pueden estar en 1 o 0.
A este nuevo estado superposicionado de bit se le llama bits y es la base de este
tipo de computadoras. Esto trajo consigo el desafío de desarrollar algoritmos para
computadoras cuánticas. Entre los años 1992 y 1998 David Deutsch, Richard
Cleve, Artur Ekert, Chiara Macchiavello, Michele Mosca, Peter Shor y Lov
Grover realizaron trabajos sobre algoritmos cuánticos(4)
En la actualidad asociamos la palabra algoritmo a la revolución tecnológica, pero,
en realidad, el concepto tiene siglos de antigüedad. Para que te hagas una idea,
aunque su origen etimológico genera dudas, se cree que podría venir del nombre
de un matemático árabe que vivió en la Edad Media, al-Jwārizmī. Lo que sí está
claro es que ejemplos de algoritmos son las operaciones matemáticas
básicas: la suma, la resta, la multiplicación y la división. Y estas se utilizan
desde… quién sabe desde cuándo. Un algoritmo nos ayuda a resolver un
problema de forma sistemática e inequívoca. Por ejemplo, cada vez que tenemos
que hacer la colada, basta con introducir la ropa en la lavadora (más el detergente
y el suavizante) y el algoritmo de esta ya se ocupa él solito de dejarla como nueva.
O cuando queremos saber la cifra exacta que esconde un porcentaje, regla de
tres (5)
En términos sencillos de entender, existen dos tipos de algoritmos. Los primeros
son los llamados “algoritmos convencionales”, los cuales son aquellos que las
personas realizan todos los días en su acontecer diario, con el fin de llegar a
cumplir un determinado objetivo. Ejemplo de ello es hacerse el desayuno.
También tareas para solucionar problemas en la jornada laboral, como por
ejemplo programar lo que almorzará en base al tiempo que tiene disponible o
calcular a que temperatura hay que subir el termostato de la sala. Aunque pueda
parecer demasiado simple, lo cierto es que si nos llevamos del significado de
algoritmo, el cual básicamente dicta que se trata de “secuencia lógica y finita de
pasos que permite solucionar una problemática o cumplir con un determinado
objetivo” cualquier de los ejemplos citados se ajustan al máximo al significado de
algoritmo.
El otro tipo de algoritmos son los llamados “algoritmos computacionales”, los
cuales son aquellos que utilizan las aplicaciones y el software de computadoras
para realizar las tareas que les pedimos o las acciones automáticas que realizan
los dispositivos sin que lo solicitemos. Nuevamente si tomas la definición de
algoritmo, vamos que se cumplen todas las condiciones requeridas. Cabe
destacar en este punto que todas las operaciones aritméticas y algebraicas
relacionadas con los algoritmos se engloba en una ciencia llamada Algoritmia. Si
quieres saber más acerca de los algoritmos computacionales, te invitamos a
seguir leyendo el resto del post, en donde encontrarás importantes definiciones
acerca del tema(6)
(1)
http://www.uhu.es/04004/material/Transparencias2.pdf
(2)
http://fcasua.contad.unam.mx/apuntes/interiores/docs/20181/informatica/1/
LI_1164_06097_A_Analisis_Diseno_Implantacion_Algoritmos_Plan2016.pdf
(3)
https://ude.edu.uy/que-son-algoritmos/
(4)
http://huellasdeunamentelibre.blogspot.com/2019/03/historia-de-los-
algoritmos.html
(5)
https://www.edix.com/es/instituto/que-es-algoritmo/
(6)
https://www.tecnologia-informatica.com/algoritmo-definicion/