Important People in Algorithms
Algorithms developed through work on computation, sorting, searching, graph optimization, strings, dynamic programming, complexity theory, approximation, randomization, and online computation.
These profiles connect major contributors to the technical ideas students encounter throughout an Algorithms course.
Important Contributors
Key figures behind computability, sorting, shortest paths, network flow, dynamic programming, NP-completeness, string matching, approximation, and randomized algorithms.
Euclid
Described the classical procedure for computing the greatest common divisor.
One of the earliest precise examples of a terminating algorithm with a useful invariant.
Al-Khwarizmi
Systematized arithmetic and algebraic procedures; the word algorithm derives from his name.
Alan Turing
Formalized a universal model of computation and algorithmic solvability.
Alonzo Church
Developed lambda calculus and independently characterized computable functions.
Donald Knuth
Developed rigorous methods for analyzing algorithms and documented classical techniques.
C. A. R. Hoare
Invented Quicksort and contributed to formal correctness reasoning.
John von Neumann
Developed an early merge-sort implementation.
Edsger W. Dijkstra
Created Dijkstra's shortest-path algorithm for graphs with non-negative edge weights.
Richard Bellman & Lester Ford Jr.
Developed a shortest-path method that can handle negative edge weights.
Robert W. Floyd
Helped establish the all-pairs shortest-path dynamic programming method now known as Floyd-Warshall.
Robert C. Prim
Popularized a greedy algorithm for constructing a minimum spanning tree.
Joseph Kruskal
Developed the edge-sorting approach to minimum spanning trees.
Richard Bellman
Named and developed dynamic programming as a systematic optimization technique.
L. R. Ford Jr. & D. R. Fulkerson
Developed the augmenting-path framework for network flow.
Jack Edmonds & Richard Karp
Gave a breadth-first-search implementation of augmenting paths with a polynomial runtime bound.
Peter Hart, Nils Nilsson & Bertram Raphael
Introduced A*, combining path cost with heuristic estimates.
Knuth, Morris & Pratt
Developed a linear-time string matching algorithm using prefix information.
Robert Boyer & J Strother Moore
Developed one of the most influential practical string searching algorithms.
Michael Rabin & Richard Karp
Popularized rolling-hash-based pattern matching.
Michael Burrows & David Wheeler
Developed the reversible text transformation used in modern compression pipelines.
Stephen Cook
Proved that Boolean satisfiability is NP-complete.
Richard Karp
Showed that many important combinatorial problems are NP-complete.
Michael O. Rabin
Pioneered probabilistic techniques in algorithm design.
Vijay Vazirani
Made major contributions to approximation algorithms and their theory.
Leslie Valiant
Contributed fundamental ideas in computational complexity, counting, and learning theory.
John Hopcroft & Robert Tarjan
Developed highly efficient algorithms for graph structure and connectivity problems.