Timeline of algorithms

The following timeline of algorithms outlines the development of algorithms (mainly "mathematical recipes") since their inception.

Antiquity

Medieval Period

  • 628 – Chakravala method described by Brahmagupta
  • c. 820 – Al-Khawarizmi described algorithms for solving linear equations and quadratic equations in his Algebra; the word algorithm comes from his name
  • 825 – Al-Khawarizmi described the algorism, algorithms for using the Hindu–Arabic numeral system, in his treatise On the Calculation with Hindu Numerals, which was translated into Latin as Algoritmi de numero Indorum, where "Algoritmi", the translator's rendition of the author's name gave rise to the word algorithm (Latin algorithmus) with a meaning "calculation method"
  • c. 850 – cryptanalysis and frequency analysis algorithms developed by Al-Kindi (Alkindus) in A Manuscript on Deciphering Cryptographic Messages, which contains algorithms on breaking encryptions and ciphers[1]
  • c. 1025 – Ibn al-Haytham (Alhazen), was the first mathematician to derive the formula for the sum of the fourth powers, and in turn, he develops an algorithm for determining the general formula for the sum of any integral powers[2]
  • c. 1400 – Ahmad al-Qalqashandi gives a list of ciphers in his Subh al-a'sha which include both substitution and transposition, and for the first time, a cipher with multiple substitutions for each plaintext letter; he also gives an exposition on and worked example of cryptanalysis, including the use of tables of letter frequencies and sets of letters which can not occur together in one word

Before 1940

1940s

1950s

1960s

1970s

  • 1970 – Dinic's algorithm for computing maximum flow in a flow network by Yefim (Chaim) A. Dinitz
  • 1970 – Knuth–Bendix completion algorithm developed by Donald Knuth and Peter B. Bendix
  • 1970 – BFGS method of the quasi-Newton class
  • 1970 – Needleman–Wunsch algorithm published by Saul B. Needleman and Christian D. Wunsch
  • 1972 – Edmonds–Karp algorithm published by Jack Edmonds and Richard Karp, essentially identical to Dinic's algorithm from 1970
  • 1972 – Graham scan developed by Ronald Graham
  • 1972 – Red–black trees and B-trees discovered
  • 1973 – RSA encryption algorithm discovered by Clifford Cocks
  • 1973 – Jarvis march algorithm developed by R. A. Jarvis
  • 1973 – Hopcroft–Karp algorithm developed by John Hopcroft and Richard Karp
  • 1974 – Pollard's p − 1 algorithm developed by John Pollard
  • 1974 – Quadtree developed by Raphael Finkel and J.L. Bentley
  • 1975 – Genetic algorithms popularized by John Holland
  • 1975 – Pollard's rho algorithm developed by John Pollard
  • 1975 – Aho–Corasick string matching algorithm developed by Alfred V. Aho and Margaret J. Corasick
  • 1975 – Cylindrical algebraic decomposition developed by George E. Collins
  • 1976 – Salamin–Brent algorithm independently discovered by Eugene Salamin and Richard Brent
  • 1976 – Knuth–Morris–Pratt algorithm developed by Donald Knuth and Vaughan Pratt and independently by J. H. Morris
  • 1977 – Boyer–Moore string-search algorithm for searching the occurrence of a string into another string.
  • 1977 – RSA encryption algorithm rediscovered by Ron Rivest, Adi Shamir, and Len Adleman
  • 1977 – LZ77 algorithm developed by Abraham Lempel and Jacob Ziv
  • 1977 – multigrid methods developed independently by Achi Brandt and Wolfgang Hackbusch
  • 1978 – LZ78 algorithm developed from LZ77 by Abraham Lempel and Jacob Ziv
  • 1978 – Bruun's algorithm proposed for powers of two by Georg Bruun
  • 1979 – Khachiyan's ellipsoid method developed by Leonid Khachiyan
  • 1979 – ID3 decision tree algorithm developed by Ross Quinlan

1980s

  • 1980 – Brent's Algorithm for cycle detection Richard P. Brendt
  • 1981 – Quadratic sieve developed by Carl Pomerance
  • 1981 – Smith–Waterman algorithm developed by Temple F. Smith and Michael S. Waterman
  • 1983 – Simulated annealing developed by S. Kirkpatrick, C. D. Gelatt and M. P. Vecchi
  • 1983 – Classification and regression tree (CART) algorithm developed by Leo Breiman, et al.
  • 1984 – LZW algorithm developed from LZ78 by Terry Welch
  • 1984 – Karmarkar's interior-point algorithm developed by Narendra Karmarkar
  • 1984 – ACORN PRNG discovered by Roy Wikramaratna and used privately
  • 1985 – Simulated annealing independently developed by V. Cerny
  • 1985 – Car–Parrinello molecular dynamics developed by Roberto Car and Michele Parrinello
  • 1985 – Splay trees discovered by Sleator and Tarjan
  • 1986 – Blum Blum Shub proposed by L. Blum, M. Blum, and M. Shub
  • 1986 – Push relabel maximum flow algorithm by Andrew Goldberg and Robert Tarjan
  • 1986 – Barnes–Hut tree method developed by Josh Barnes and Piet Hut for fast approximate simulation of n-body problems
  • 1987 – Fast multipole method developed by Leslie Greengard and Vladimir Rokhlin
  • 1988 – Special number field sieve developed by John Pollard
  • 1989 – ACORN PRNG published by Roy Wikramaratna
  • 1989 – Paxos protocol developed by Leslie Lamport
  • 1989 – Skip list discovered by William Pugh

1990s

  • 1990 – General number field sieve developed from SNFS by Carl Pomerance, Joe Buhler, Hendrik Lenstra, and Leonard Adleman
  • 1990 – Coppersmith–Winograd algorithm developed by Don Coppersmith and Shmuel Winograd
  • 1990 – BLAST algorithm developed by Stephen Altschul, Warren Gish, Webb Miller, Eugene Myers, and David J. Lipman from National Institutes of Health
  • 1991 – Wait-free synchronization developed by Maurice Herlihy
  • 1992 – Deutsch–Jozsa algorithm proposed by D. Deutsch and Richard Jozsa
  • 1992 – C4.5 algorithm, a descendant of ID3 decision tree algorithm, was developed by Ross Quinlan
  • 1993 – Apriori algorithm developed by Rakesh Agrawal and Ramakrishnan Srikant
  • 1993 – Karger's algorithm to compute the minimum cut of a connected graph by David Karger
  • 1994 – Shor's algorithm developed by Peter Shor
  • 1994 – Burrows–Wheeler transform developed by Michael Burrows and David Wheeler
  • 1994 – Bootstrap aggregating (bagging) developed by Leo Breiman
  • 1995 – AdaBoost algorithm, the first practical boosting algorithm, was introduced by Yoav Freund and Robert Schapire
  • 1995 – soft-margin support vector machine algorithm was published by Vladimir Vapnik and Corinna Cortes. It adds a soft-margin idea to the 1992 algorithm by Boser, Nguyon, Vapnik, and is the algorithm that people usually refer to when saying SVM
  • 1995 – Ukkonen's algorithm for construction of suffix trees
  • 1996 – Bruun's algorithm generalized to arbitrary even composite sizes by H. Murakami
  • 1996 – Grover's algorithm developed by Lov K. Grover
  • 1996 – RIPEMD-160 developed by Hans Dobbertin, Antoon Bosselaers, and Bart Preneel
  • 1997 – Mersenne Twister a pseudo random number generator developed by Makoto Matsumoto and Tajuki Nishimura
  • 1998 – PageRank algorithm was published by Larry Page
  • 1998 – rsync algorithm developed by Andrew Tridgell
  • 1999 – gradient boosting algorithm developed by Jerome H. Friedman
  • 1999 – Yarrow algorithm designed by Bruce Schneier, John Kelsey, and Niels Ferguson

2000s

  • 2000 – Hyperlink-induced topic search a hyperlink analysis algorithm developed by Jon Kleinberg
  • 2001 – Lempel–Ziv–Markov chain algorithm for compression developed by Igor Pavlov
  • 2001 – Viola–Jones algorithm for real-time face detection was developed by Paul Viola and Michael Jones.
  • 2001 – DHT (Distributed hash table) is invented by multiple people from academia and application systems
  • 2001 – BitTorrent a first fully decentralized peer-to-peer file distribution system is published
  • 2001 – LOBPCG Locally Optimal Block Preconditioned Conjugate Gradient method finding extreme eigenvalues of symmetric eigenvalue problems by Andrew Knyazev
  • 2002 – AKS primality test developed by Manindra Agrawal, Neeraj Kayal and Nitin Saxena
  • 2002 – Girvan–Newman algorithm to detect communities in complex systems
  • 2002 – Packrat parser developed for generating a parser that parses PEG (Parsing expression grammar) in linear time parsing developed by Bryan Ford
  • 2009 – Bitcoin a first trust-less decentralized cryptocurrency system is published

2010s

  • 2013 – Raft consensus protocol published by Diego Ongaro and John Ousterhout
  • 2015 – YOLO (“You Only Look Once”) is an effective real-time object recognition algorithm, first described by Joseph Redmon et al.[7][8][9][10][11]

References

  1. ^ Simon Singh, The Code Book, pp. 14–20
  2. ^ Victor J. Katz (1995). "Ideas of Calculus in Islam and India", Mathematics Magazine 68 (3), pp. 163–174.
  3. ^ Bruce, Ian (June 29, 2010). "Euler's Institutionum Calculi Integralis". www.17centurymaths.com. Archived from the original on February 1, 2011. Retrieved 17 May 2023.
  4. ^ Ciliberto, Ciro; Hirzebruch, Friedrich; Miranda, Rick; Teicher, Mina, eds. (2001). Applications of Algebraic Geometry to Coding Theory, Physics and Computation. Dordrecht: Springer Netherlands. ISBN 978-94-010-1011-5.
  5. ^ Francis, J.G.F. (1961). "The QR Transformation, I". The Computer Journal. 4 (3): 265–271. doi:10.1093/comjnl/4.3.265.
  6. ^ Kublanovskaya, Vera N. (1961). "On some algorithms for the solution of the complete eigenvalue problem". USSR Computational Mathematics and Mathematical Physics. 1 (3): 637–657. doi:10.1016/0041-5553(63)90168-X. Also published in: Zhurnal Vychislitel'noi Matematiki i Matematicheskoi Fiziki [Journal of Computational Mathematics and Mathematical Physics], 1(4), pages 555–570 (1961).
  7. ^ "YOLO: Real-Time Object Detection". 19 December 2023. Archived from the original on 19 December 2023. Retrieved 19 December 2023.
  8. ^ "Understanding a Real-Time Object Detection Network: You Only Look Once (YOLOv1)". 19 December 2023. Archived from the original on 20 December 2023. Retrieved 20 December 2023.
  9. ^ "how to use darknet to train your own neural network". 20 December 2023. Archived from the original on 20 December 2023. Retrieved 20 December 2023.
  10. ^ "How computers learn to recognize objects instantly". 20 December 2023. Archived from the original on 20 December 2023. Retrieved 20 December 2023.
  11. ^ "Darknet: The Open Source Framework for Deep Neural Networks". 20 December 2023. Archived from the original on 20 December 2023. Retrieved 20 December 2023.