Sin lugar a dudas, han existido algoritmos que han influenciado enormemente los avances tecnológicos, y sin ellos probablemente el enfoque de la computación seria otro mucho menos eficiente, no existirían las compresiones de archivos ni las optimizaciones por dar un pequeño ejemplo.

En este artículo se mencionan los 10 algoritmos mas influyentes del siglo pasado, a continuación los menciono:

  1. the Monte Carlo method or Metropolis algorithm, devised by John von Neumann, Stanislaw Ulam, and Nicholas Metropolis;
  2. the simplex method of linear programming, developed by George Dantzig;
  3. the Krylov Subspace Iteration method, developed by Magnus Hestenes, Eduard Stiefel, and Cornelius Lanczos;
  4. the Householder matrix decomposition, developed by Alston Householder;
  5. the Fortran compiler, developed by a team lead by John Backus;
  6. the QR algorithm for eigenvalue calculation, developed by J Francis;
  7. the Quicksort algorithm, developed by Anthony Hoare;
  8. the Fast Fourier Transform, developed by James Cooley and John Tukey;
  9. the Integer Relation Detection Algorithm, developed by Helaman Ferguson and Rodney Forcade; (given N real values XI, is there a nontrivial set of integer coefficients AI so that sum ( 1 <= I <= N ) AI * XI = 0?
  10. the fast Multipole algorithm, developed by Leslie Greengard and Vladimir Rokhlin; (to calculate gravitational forces in an N-body problem normally requires N^2 calculations. The fast multipole method uses order N calculations, by approximating the effects of groups of distant particles using multipole expansions)

De esa lista no conocía el 3, el 9 ni el 10.

Como referencias rápidas de los que conozco, el 1 es esencial para simulación, el 2 increiblemente necesario para resolver modelos matemáticos lineales, el 4 para darle sentido al álgebra computacional, el 5 para potenciar los lenguajes de programación, el 6 para resolver montones de problemas algebraicos, el 7 para ordenar datos de manera inteligentemente rápida, y el 8 para aplicaciones en todo donde convenga usar datos en el espacio de frecuencias.

Personalmente, habría agregado el algorítmo Levenberg-Marquardt iteration, a mi parecer es el algoritmo más elaborado para refinamiento iterativo de datos, tiene buena convergencia y no es tan costoso como otros métodos menos eficientes. También me hubiese gustado ver la descomposición de matrices SVD, si bien es cierto que es mas útil el uso de QR, SVD no se queda atrás y yo al menos lo uso bastante. Por último, habria agregado RANSAC no por su influencia histórica, sino porque personalmente me gusta mucho como funciona y aunque no es muy rápido entrega resultados muy robustos.

Les recomiendo que lean el artículo, es bastante interesante.