En matemáticas y ciencias de la computación , un algoritmo ( / ˈ æ l ɡ ə r ɪ ð əm / ( escuchar ) ) es una secuencia finita de instrucciones bien definidas , que generalmente se usa para resolver una clase de problemas específicos o para realizar un cálculo. [1] Los algoritmos se utilizan como especificaciones para realizar cálculos , procesamiento de datos , razonamiento automatizado , toma de decisiones automatizada y otras tareas. En contraste, una heurísticaes un enfoque para la resolución de problemas que puede no estar completamente especificado o no garantizar resultados correctos u óptimos, especialmente en dominios de problemas donde no hay un resultado correcto u óptimo bien definido. [2]
Como método eficaz , un algoritmo puede expresarse dentro de una cantidad finita de espacio y tiempo, [3] y en un lenguaje formal bien definido [4] para calcular una función . [5] A partir de un estado inicial y una entrada inicial (quizás vacía ), [6] las instrucciones describen un cálculo que, cuando se ejecuta , procede a través de un número finito [7] de estados sucesivos bien definidos, que eventualmente producen una "salida" [ 8] y termina en un estado final final. La transición de un estado al siguiente no es necesariamente determinista.; algunos algoritmos, conocidos como algoritmos aleatorios , incorporan entrada aleatoria. [9]
El concepto de algoritmo existe desde la antigüedad. Los antiguos matemáticos babilónicos utilizaron algoritmos aritméticos , como un algoritmo de división . C. 2500 aC y matemáticos egipcios c. 1550 antes de Cristo. [10] Los matemáticos griegos utilizaron más tarde algoritmos en el 240 a. C. en el tamiz de Eratóstenes para encontrar números primos, y el algoritmo euclidiano para encontrar el máximo común divisor de dos números. [11] Matemáticos árabes como al-Kindi en el siglo IX utilizaron algoritmos criptográficos para descifrar códigos. , basado en análisis de frecuencia . [12]
La palabra algoritmo se deriva del nombre del matemático persa del siglo IX Muḥammad ibn Mūsā al-Khwārizmī , cuya nisba (identificándolo como de Khwarazm ) fue latinizado como Algoritmi ( arabizado persa الخوارزمی c. 780-850). [13] [14]
Muḥammad ibn Mūsā al-Khwārizmī fue un matemático, astrónomo , geógrafo y erudito en la Casa de la Sabiduría en Bagdad , cuyo nombre significa 'el nativo de Khwarazm ', una región que formaba parte del Gran Irán y ahora se encuentra en Uzbekistán . [15] [16] Hacia el año 825, al-Khwarizmi escribió un tratado en árabe sobre el sistema numérico hindú-árabe , que fue traducido al latín durante el siglo XII. El manuscrito comienza con la frase Dixit Algorizmi('Así habló Al-Khwarizmi'), donde "Algorizmi" era la latinización del traductor del nombre de Al-Khwarizmi. [17] Al-Khwarizmi fue el matemático más leído en Europa a finales de la Edad Media, principalmente a través de otro de sus libros, el Álgebra . [18] En latín medieval tardío, algorismus , ' algorism ' en inglés, la corrupción de su nombre, simplemente significaba el "sistema numérico decimal". [19] En el siglo XV, bajo la influencia de la palabra griega ἀριθμός ( arithmos ), 'número' ( cf. 'aritmética'), la palabra latina se modificó a algorítmo, y el término inglés correspondiente 'algoritmo' se atestigua por primera vez en el siglo XVII; el sentido moderno se introdujo en el siglo XIX. [20]
En inglés, se utilizó por primera vez alrededor de 1230 y luego por Chaucer en 1391. El inglés adoptó el término francés, pero no fue hasta finales del siglo XIX que "algoritmo" adquirió el significado que tiene en el inglés moderno. [21]