La siguiente línea de tiempo de algoritmos describe el desarrollo de algoritmos (principalmente "recetas matemáticas") desde su inicio.
Antigüedad
- Antes – escribir sobre “ recetas ” (sobre cocina , rituales , agricultura y otros temas)
- C. 1700–2000 a. C.: los egipcios desarrollan los primeros algoritmos conocidos para multiplicar dos números.
- C. 1600 a. C.: los babilonios desarrollan los primeros algoritmos conocidos para la factorización y el hallazgo de raíces cuadradas.
- C. 300 a. C. – El algoritmo de Euclides
- C. 200 a. C. – La criba de Eratóstenes
- 263 d. C. – Liu Hui describe la eliminación gaussiana
Periodo medieval
- 628 – El método Chakravala descrito por Brahmagupta
- C. 820 – Al-Khawarizmi describió algoritmos para resolver ecuaciones lineales y ecuaciones cuadráticas en su Álgebra ; la palabra algoritmo proviene de su nombre.
- 825 – Al-Khawarizmi describió el algorismo , algoritmos para utilizar el sistema de numeración hindú-arábigo , en su tratado Sobre el cálculo con números hindúes , que fue traducido al latín como Algoritmi de numero Indorum , donde "Algoritmi", la interpretación del traductor del nombre del autor dio lugar a la palabra algoritmo ( latín algorithmus ) con el significado de "método de cálculo".
- C. 850 – Al-Kindi (Alkindus) desarrolla algoritmos de criptoanálisis y análisis de frecuencia en Un manuscrito sobre el descifrado de mensajes criptográficos , que contiene algoritmos para descifrar cifrados y cifras [1]
- c. 1025 – Ibn al-Haytham (Alhazen), fue el primer matemático en derivar la fórmula para la suma de las cuartas potencias y, a su vez, desarrolló un algoritmo para determinar la fórmula general para la suma de cualquier potencia integral [2]
- c. 1400 – Ahmad al-Qalqashandi proporciona una lista de cifras en su Subh al-a'sha que incluyen tanto la sustitución como la transposición , y por primera vez, una cifra con múltiples sustituciones para cada letra del texto simple ; también ofrece una exposición y un ejemplo práctico de criptoanálisis , incluido el uso de tablas de frecuencias de letras y conjuntos de letras que no pueden aparecer juntas en una palabra
Antes de 1940
- 1540 – Lodovico Ferrari descubrió un método para encontrar las raíces de un polinomio cuártico.
- 1545 – Gerolamo Cardano publicó el método de Cardano para encontrar las raíces de un polinomio cúbico.
- 1614 – John Napier desarrolla un método para realizar cálculos utilizando logaritmos.
- 1671 – Isaac Newton desarrolla el método Newton-Raphson
- 1690 – El método Newton-Raphson fue desarrollado independientemente por Joseph Raphson
- 1706 – John Machin desarrolla una serie tangente inversa de rápida convergencia para π y calcula π hasta 100 decimales.
- 1768 – Leonhard Euler publica su método para la integración numérica de ecuaciones diferenciales ordinarias en el problema 85 de Institutiones calculi integralis [3]
- 1789 – Jurij Vega mejora la fórmula de Machin y calcula π hasta 140 decimales.
- 1805 – Algoritmo similar a FFT conocido por Carl Friedrich Gauss
- 1842 – Ada Lovelace escribe el primer algoritmo para un motor informático.
- 1903 – Carle David Tolmé Runge presenta un algoritmo de transformada rápida de Fourier
- 1918 - Sonido
- 1926 – El algoritmo de Borůvka
- 1926 – Grete Hermann presenta el algoritmo de descomposición primaria [4]
- 1927 – Se desarrolla el método Hartree-Fock para simular un sistema cuántico de muchos cuerpos en un estado estacionario.
- 1934 – Boris Delaunay desarrolla la triangulación de Delaunay
- 1936 – Máquina de Turing , una máquina abstracta desarrollada por Alan Turing , junto con otros desarrolló la noción moderna de algoritmo .
Década de 1940
- 1942 – GC Danielson y Cornelius Lanczos desarrollan un algoritmo de transformada rápida de Fourier
- 1945 – John von Neumann desarrolla la ordenación por fusión
- 1947 – George Dantzig desarrolla el algoritmo Simplex
Década de 1950
- 1952 – David A. Huffman desarrolla la codificación Huffman
- 1953 – Nicholas Metropolis introduce el recocido simulado
- 1954 – Harold H. Seward desarrolla el algoritmo informático de ordenación por radix
- 1964 – George Edward Pelham Box y Mervin Edgar Muller publican la transformada de Box-Muller para la generación rápida de números distribuidos normalmente . Descubierta de manera independiente por Raymond EAC Paley y Norbert Wiener en 1934.
- 1956 – El algoritmo de Kruskal fue desarrollado por Joseph Kruskal
- 1956 – R. Ford Jr. y DR Fulkerson desarrollan y publican el algoritmo Ford-Fulkerson
- 1957 – El algoritmo de Prim fue desarrollado por Robert Prim
- 1957 – Richard E. Bellman y LR Ford, Jr. desarrollan el algoritmo Bellman-Ford.
- 1959 – Edsger Dijkstra desarrolla el algoritmo de Dijkstra
- 1959 – Donald L. Shell desarrolla la clasificación de conchas
- 1959 – Algoritmo de De Casteljau desarrollado por Paul de Casteljau
- 1959 – Algoritmo de factorización QR desarrollado independientemente por John GF Francis y Vera Kublanovskaya [5] [6]
- 1959 – Michael O. Rabin y Dana Scott publican la construcción del conjunto de potencias Rabin–Scott para convertir NFA en DFA
Década de 1960
- 1960 – Multiplicación de Karatsuba
- 1961 – W. Wesley Peterson inventa la CRC (verificación de redundancia cíclica)
- 1962 – Árboles AVL
- 1962 – CAR Hoare desarrolla Quicksort
- 1962: algoritmo de línea de Bresenham desarrollado por Jack E. Bresenham
- 1962 – David Gale y Lloyd Shapley desarrollan el algoritmo de "matrimonio estable" de Gale-Shapley
- 1964 – JWJ Williams desarrolla Heapsort
- 1964: RP Fedorenko propone por primera vez métodos multigrid
- 1965 – James Cooley y John Tukey redescubrieron el algoritmo Cooley-Tukey
- 1965 – Vladimir Levenshtein desarrolla la distancia de Levenshtein
- 1965 – Algoritmo Cocke–Younger–Kasami (CYK) desarrollado independientemente por Tadao Kasami
- 1965 – Bruno Buchberger desarrolla el algoritmo de Buchberger para calcular las bases de Gröbner
- 1965 – Donald Knuth inventa los analizadores LR
- 1966 – Algoritmo de Dantzig para la ruta más corta en un gráfico con aristas negativas
- 1967 – Andrew Viterbi propone el algoritmo de Viterbi
- 1967 – Algoritmo Cocke–Younger–Kasami (CYK) desarrollado independientemente por Daniel H. Younger
- 1968 – Peter Hart , Nils Nilsson y Bertram Raphael describen un algoritmo de búsqueda de gráficos A*
- 1968 – Algoritmo de Risch para integración indefinida desarrollado por Robert Henry Risch
- 1969 – Volker Strassen desarrolla el algoritmo de Strassen para la multiplicación de matrices
Década de 1970
- 1970 – Algoritmo de Dinic para calcular el caudal máximo en una red de flujo por Yefim (Chaim) A. Dinitz
- 1970 – Donald Knuth y Peter B. Bendix desarrollan el algoritmo de compleción Knuth-Bendix
- 1970 – Método BFGS de la clase cuasi-Newton
- 1970 – Algoritmo Needleman-Wunsch publicado por Saul B. Needleman y Christian D. Wunsch
- 1972 – El algoritmo de Edmonds-Karp es publicado por Jack Edmonds y Richard Karp , esencialmente idéntico al algoritmo de Dinic de 1970.
- 1972 – Ronald Graham desarrolla el escáner Graham
- 1972 – Se descubren los árboles rojo-negros y los árboles B
- 1973 – Clifford Cocks descubre el algoritmo de cifrado RSA
- 1973 – El algoritmo de marcha de Jarvis fue desarrollado por RA Jarvis
- 1973 – John Hopcroft y Richard Karp desarrollan el algoritmo Hopcroft-Karp
- 1974 – John Pollard desarrolla el algoritmo p − 1 de Pollard
- 1974 – Raphael Finkel y JL Bentley desarrollan el Quadtree
- 1975 – Los algoritmos genéticos se popularizan gracias a John Holland
- 1975 – John Pollard desarrolla el algoritmo rho de Pollard
- 1975 – Alfred V. Aho y Margaret J. Corasick desarrollan el algoritmo de coincidencia de cadenas Aho-Corasick
- 1975 – George E. Collins desarrolla la descomposición algebraica cilíndrica
- 1976 – El algoritmo de Salamin-Brent es descubierto independientemente por Eugene Salamin y Richard Brent
- 1976 – Algoritmo Knuth-Morris-Pratt desarrollado por Donald Knuth y Vaughan Pratt e independientemente por JH Morris
- 1977 – Algoritmo de búsqueda de cadenas de Boyer-Moore para buscar la ocurrencia de una cadena en otra cadena.
- 1977 – Ron Rivest , Adi Shamir y Len Adleman redescubrieron el algoritmo de cifrado RSA
- 1977 – Abraham Lempel y Jacob Ziv desarrollan el algoritmo LZ77
- 1977: métodos multigrid desarrollados independientemente por Achi Brandt y Wolfgang Hackbusch
- 1978 – Abraham Lempel y Jacob Ziv desarrollan el algoritmo LZ78 a partir del LZ77
- 1978 – Algoritmo de Bruun propuesto para potencias de dos por Georg Bruun
- 1979 – Método del elipsoide de Khachiyan desarrollado por Leonid Khachiyan
- 1979 – Ross Quinlan desarrolla el algoritmo de árbol de decisión ID3
Década de 1980
- 1980 – Algoritmo de Brent para la detección de ciclos Richard P. Brendt
- 1981 – Carl Pomerance desarrolla el tamiz cuadrático
- 1981 – Temple F. Smith y Michael S. Waterman desarrollan el algoritmo Smith-Waterman
- 1983 – S. Kirkpatrick, CD Gelatt y MP Vecchi desarrollan el recocido simulado
- 1983 – Algoritmo de árbol de clasificación y regresión (CART) desarrollado por Leo Breiman , et al.
- 1984 – Algoritmo LZW desarrollado a partir de LZ78 por Terry Welch
- 1984: algoritmo de punto interior de Karmarkar desarrollado por Narendra Karmarkar
- 1984 - ACORN PRNG descubierto por Roy Wikramaratna y utilizado de forma privada
- 1985 – Recocido simulado desarrollado independientemente por V. Cerny
- 1985 - Dinámica molecular de Car-Parrinello desarrollada por Roberto Car y Michele Parrinello
- 1985 – Sleator y Tarjan descubren árboles de hoja caduca
- 1986 – Blum Blum Shub propuesto por L. Blum , M. Blum y M. Shub
- 1986 – Algoritmo Push Reetiquetado de flujo máximo por Andrew Goldberg y Robert Tarjan
- 1986 - Josh Barnes y Piet Hut desarrollan el método del árbol de Barnes-Hut para la simulación aproximada rápida de problemas de n cuerpos
- 1987 – Leslie Greengard y Vladimir Rokhlin desarrollan el método multipolar rápido
- 1988 – John Pollard desarrolla un tamiz de campo de números especiales
- 1989 - ACORN PRNG publicado por Roy Wikramaratna
- 1989 – Leslie Lamport desarrolla el protocolo Paxos
- 1989 – William Pugh descubre la lista de omisiones
Década de 1990
- 1990 – Se desarrolló el tamiz de campo numérico general a partir de SNFS por Carl Pomerance , Joe Buhler , Hendrik Lenstra y Leonard Adleman
- 1990 – Don Coppersmith y Shmuel Winograd desarrollan el algoritmo Coppersmith-Winograd
- 1990 – El algoritmo BLAST fue desarrollado por Stephen Altschul , Warren Gish , Webb Miller , Eugene Myers y David J. Lipman de los Institutos Nacionales de Salud.
- 1991 – Maurice Herlihy desarrolla la sincronización sin espera
- 1992 – D. Deutsch y Richard Jozsa proponen el algoritmo Deutsch-Jozsa
- 1992 – El algoritmo C4.5 , descendiente del algoritmo de árbol de decisión ID3 , fue desarrollado por Ross Quinlan
- 1993 – Algoritmo a priori desarrollado por Rakesh Agrawal y Ramakrishnan Srikant
- 1993 – Algoritmo de Karger para calcular el corte mínimo de un gráfico conectado por David Karger
- 1994 – El algoritmo de Shor fue desarrollado por Peter Shor
- 1994 – Michael Burrows y David Wheeler desarrollan la transformada de Burrows-Wheeler
- 1994 – Leo Breiman desarrolla la agregación bootstrap (bagging)
- 1995 – Yoav Freund y Robert Schapire introdujeron el algoritmo AdaBoost , el primer algoritmo de refuerzo práctico.
- 1995: Vladimir Vapnik y Corinna Cortes publicaron el algoritmo de máquina de vectores de soporte de margen suave . Agrega una idea de margen suave al algoritmo de 1992 de Boser, Nguyon y Vapnik y es el algoritmo al que la gente suele referirse cuando habla de máquina de vectores de soporte de margen suave.
- 1995 – Algoritmo de Ukkonen para la construcción de árboles de sufijos
- 1996 – El algoritmo de Bruun se generaliza a tamaños compuestos arbitrarios e iguales por H. Murakami
- 1996 – El algoritmo de Grover fue desarrollado por Lov K. Grover
- 1996 – RIPEMD-160 desarrollado por Hans Dobbertin , Antoon Bosselaers y Bart Preneel
- 1997 – Mersenne Twister, un generador de números pseudoaleatorios desarrollado por Makoto Matsumoto y Tajuki Nishimura
- 1998 – Larry Page publicó el algoritmo PageRank
- 1998 – El algoritmo rsync fue desarrollado por Andrew Tridgell
- 1999: Jerome H. Friedman desarrolla un algoritmo de aumento de gradiente
- 1999 – Algoritmo Yarrow diseñado por Bruce Schneier , John Kelsey y Niels Ferguson
Década de 2000
- 2000 – Búsqueda de temas inducida por hipervínculos: un algoritmo de análisis de hipervínculos desarrollado por Jon Kleinberg
- 2001 – Igor Pavlov desarrolló el algoritmo de compresión en cadena Lempel-Ziv-Markov
- 2001 – Paul Viola y Michael Jones desarrollaron el algoritmo Viola-Jones para la detección de rostros en tiempo real.
- 2001 – Varias personas del mundo académico y de los sistemas de aplicaciones inventan DHT (tabla hash distribuida).
- 2001 – Se publica BitTorrent, el primer sistema de distribución de archivos peer to peer totalmente descentralizado
- 2001 – LOBPCG Método de gradiente conjugado preacondicionado en bloque localmente óptimo para encontrar valores propios extremos de problemas de valores propios simétricos por Andrew Knyazev
- 2002 – Prueba de primalidad AKS desarrollada por Manindra Agrawal , Neeraj Kayal y Nitin Saxena
- 2002 – Algoritmo de Girvan-Newman para detectar comunidades en sistemas complejos
- 2002 – Se desarrolló el analizador Packrat para generar un analizador que analiza PEG (gramática de expresión de análisis) en tiempo lineal desarrollado por Bryan Ford
- 2009 – Se publica Bitcoin, el primer sistema de criptomoneda descentralizado y sin confianza
Década de 2010
- 2013 – Diego Ongaro y John Ousterhout publican el protocolo de consenso de Raft
- 2015 – YOLO (“ You Only Look Once ”) es un algoritmo eficaz de reconocimiento de objetos en tiempo real, descrito por primera vez por Joseph Redmon et al. [7] [8] [9] [10] [11] [12]
Referencias
- ^ Simon Singh , El libro de códigos , págs. 14-20
- ^ Victor J. Katz (1995). "Ideas de cálculo en el Islam y la India", Mathematics Magazine 68 (3), págs. 163-174.
- ^ Bruce, Ian (29 de junio de 2010). "Euler's Institutionum Calculi Integralis". www.17centurymaths.com . Archivado desde el original el 1 de febrero de 2011. Consultado el 17 de mayo de 2023 .
- ^ Ciliberto, Ciro; Hirzebruch, Friedrich; Miranda, Rick; Teicher, Mina , eds. (2001). Aplicaciones de la geometría algebraica a la teoría de codificación, la física y la computación. Dordrecht: Springer Netherlands. ISBN 978-94-010-1011-5.
- ^ Francis, JGF (1961). "La transformación QR, I". The Computer Journal . 4 (3): 265–271. doi : 10.1093/comjnl/4.3.265 .
- ^ Kublanovskaya, Vera N. (1961). "Sobre algunos algoritmos para la solución del problema completo de valores propios". Matemáticas computacionales y física matemática de la URSS . 1 (3): 637–657. doi :10.1016/0041-5553(63)90168-X.También publicado en: Zhurnal Vychislitel'noi Matematiki i Matematicheskoi Fiziki [Revista de Matemática Computacional y Física Matemática], 1(4), páginas 555–570 (1961).
- ^ "YOLO: Detección de objetos en tiempo real". 19 de diciembre de 2023. Archivado desde el original el 19 de diciembre de 2023 . Consultado el 19 de diciembre de 2023 .
- ^ "Entender una red de detección de objetos en tiempo real: solo se mira una vez (YOLOv1)". 19 de diciembre de 2023. Archivado desde el original el 20 de diciembre de 2023 . Consultado el 20 de diciembre de 2023 .
- ^ "Cómo usar la red oscura para entrenar tu propia red neuronal". 20 de diciembre de 2023. Archivado desde el original el 20 de diciembre de 2023. Consultado el 20 de diciembre de 2023 .
- ^ "Cómo aprenden los ordenadores a reconocer objetos instantáneamente". 20 de diciembre de 2023. Archivado desde el original el 20 de diciembre de 2023. Consultado el 20 de diciembre de 2023 .
- ^ "Darknet: el marco de código abierto para redes neuronales profundas". 20 de diciembre de 2023. Archivado desde el original el 20 de diciembre de 2023. Consultado el 20 de diciembre de 2023 .
- ^ "Su guía completa sobre la familia de modelos YOLO". 21 de diciembre de 2023. Archivado desde el original el 21 de diciembre de 2023. Consultado el 21 de diciembre de 2023 .