En matemáticas y ciencias de la computación , un algoritmo ( / ˈ æ l ɡ ə r ɪ ð əm / ( escuchar ) ) es una secuencia finita de instrucciones bien definidas , típicamente usadas 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 automatizaday otras tareas. Por el contrario, una heurística es un enfoque para la resolución de problemas que puede no estar completamente especificado o puede 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 efectivo , 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] Comenzando desde 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, produciendo finalmente una "salida" [ 8] y terminando en un estado final final. La transición de un estado al siguiente no es necesariamente determinista; algunos algoritmos, conocidos como algoritmos aleatorios , incorporan entradas aleatorias. [9]
El concepto de algoritmo existe desde la antigüedad. Los algoritmos aritméticos , como un algoritmo de división , fueron utilizados por los antiguos matemáticos babilónicos c. 2500 aC y matemáticos egipcios c. 1550 a.C. [10] Más tarde, los matemáticos griegos usaron algoritmos en el 240 a. C. en la criba 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 ) se latinizó como Algoritmi ( persa arabizado الخوارزمی c. 780–850). [13] [14] Muḥammad ibn Mūsā al-Khwārizmī fue un matemático, astrónomo , geógrafo y erudito de 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 es ahora en Uzbekistán. [15] [16] Alrededor de 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 , inglés ' algorism', 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 algoritmo , y el término inglés correspondiente 'algoritmo' se atestigua por primera vez. en el siglo 17; el sentido moderno se introdujo en el siglo XIX. [20]
Las matemáticas indias eran predominantemente algorítmicas. Los algoritmos que son representativos de la tradición matemática india van desde los antiguos Śulbasūtrās hasta los textos medievales de la Escuela de Kerala . [ cita requerida ]
En inglés, la palabra algoritmo se usó 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 inglés moderno. [21]