Outline of algorithms
The following outline is provided as an overview of and topical guide to algorithms:
An algorithm is a finite, well-defined sequence of instructions or rules for solving a problem or performing a computation.[1] Algorithms are central to computer science, mathematics, operations research, artificial intelligence,[2] cryptography, data compression, computer graphics, bioinformatics, and many other fields.[3] The study of algorithms includes their design, proof of correctness, efficiency, computational complexity, and implementation in computer programs.[4][5]
Nature of algorithms
[edit]- Algorithm — finite sequence of instructions for solving a problem or performing a computation
- Computer program — implementation of algorithms and data-processing instructions in a programming language
- Data structure — organization of data used by algorithms
- Heuristic — practical problem-solving method that may not guarantee an optimal solution
- Pseudocode — informal notation for describing algorithms
- Specification — formal or informal statement of what an algorithm is intended to do
- State — stored information used during a computation
- Termination analysis — study of whether an algorithm eventually halts
- Turing machine — mathematical model of computation used in computability theory
History of algorithms
[edit]- Euclidean algorithm — ancient algorithm for computing the greatest common divisor
- Muhammad ibn Musa al-Khwarizmi — mathematician whose Latinized name is associated with the word algorithm
- Algorithmic logic — logic-based study of programs and algorithms
- Computability theory — study of what can be computed
- Church–Turing thesis — thesis concerning the nature of effective computation
- Turing machine — model formalizing computation
- Lambda calculus — formal system used in the study of computation
- Von Neumann architecture — computer architecture influencing practical algorithm implementation
Algorithm analysis
[edit]- Analysis of algorithms — study of the correctness and efficiency of algorithms
- Asymptotic analysis — analysis of algorithm behavior as input size grows
- Big O notation — upper-bound notation for growth rates
- Big Omega notation — lower-bound notation for growth rates
- Big Theta notation — tight-bound notation for growth rates
- Time complexity — amount of time an algorithm uses as input size changes
- Space complexity — amount of memory an algorithm uses as input size changes
- Best, worst and average case — common forms of algorithm-performance analysis
- Amortized analysis — analysis of average cost over a sequence of operations
- Competitive analysis (online algorithm) — analysis of online algorithms compared with optimal offline algorithms
- Correctness (computer science) — property that an algorithm satisfies its specification
- Loop invariant — condition used to prove correctness of iterative algorithms
- Recurrence relation — equation often used to analyze recursive algorithms
- Master theorem (analysis of algorithms) — theorem for solving many divide-and-conquer recurrences
Algorithm design paradigms
[edit]- Brute-force search — method of exhaustively checking candidate solutions
- Divide-and-conquer algorithm — technique that divides a problem into smaller subproblems
- Decrease and conquer — technique that reduces a problem to a smaller instance
- Dynamic programming — technique for solving problems with overlapping subproblems and optimal substructure
- Greedy algorithm — algorithm that makes locally optimal choices
- Backtracking — search technique that abandons partial solutions that cannot lead to valid solutions
- Branch and bound — search technique using bounds to eliminate candidate solutions
- Randomized algorithm — algorithm using randomness as part of its logic
- Approximation algorithm — algorithm that finds near-optimal solutions for hard optimization problems
- Online algorithm — algorithm that receives input incrementally
- Parallel algorithm — algorithm designed for parallel computation
- Distributed algorithm — algorithm designed for distributed systems
- Streaming algorithm — algorithm for processing data streams with limited memory
- Quantum algorithm — algorithm designed for quantum computers[6]
Data structures and related algorithms
[edit]Arrays, lists, and sequences
[edit]Trees
[edit]Hashing and sets
[edit]Graph data structures
[edit]Operating system and memory-management algorithms
[edit]Searching algorithms
[edit]Sorting and order statistics
[edit]Comparison sorting
[edit]Non-comparison sorting
[edit]Order statistics
[edit]Graph algorithms
[edit]Graph traversal
[edit]Shortest paths
[edit]Spanning trees and connectivity
[edit]Network flow and matching
[edit]Graph coloring and hard graph problems
[edit]String algorithms
[edit]- String-searching algorithm
- Knuth–Morris–Pratt algorithm
- Boyer–Moore string-search algorithm
- Rabin–Karp algorithm
- Aho–Corasick algorithm
- Levenshtein distance
- Edit distance
- Longest common subsequence
- Longest common substring
- Suffix tree
- Suffix array
- Burrows–Wheeler transform
- Regular expression
- Parsing
- Earley parser
- CYK algorithm
Numerical and mathematical algorithms
[edit]Arithmetic and number theory
[edit]Linear algebra
[edit]Numerical optimization and approximation
[edit]Optimization algorithms
[edit]- Linear programming
- Simplex algorithm
- Interior-point method
- Integer programming
- Dynamic programming
- Gradient descent
- Stochastic gradient descent
- Newton's method
- Quasi-Newton method
- Broyden–Fletcher–Goldfarb–Shanno algorithm
- Lagrange multiplier
- Constraint satisfaction problem
- Local search (optimization)
- Hill climbing
- Tabu search
- Genetic algorithm
- Ant colony optimization algorithms
- Particle swarm optimization
- Evolutionary algorithm
Artificial intelligence and machine learning algorithms
[edit]Search and planning
[edit]Supervised learning
[edit]Unsupervised learning
[edit]Reinforcement learning
[edit]Algorithmic gameplay
[edit]AI-assisted algorithm discovery
[edit]Cryptographic algorithms
[edit]Symmetric-key algorithms
[edit]Public-key algorithms
[edit]Hashing and authentication
[edit]Compression algorithms
[edit]Lossless compression
[edit]Lossy compression techniques
[edit]Computational geometry algorithms
[edit]Computer graphics and image-processing algorithms
[edit]- Bresenham's line algorithm
- Flood fill
- Scanline rendering
- Z-buffering
- Ray casting
- Ray tracing (graphics)
- Path tracing
- Phong shading
- Texture mapping
- Bump mapping
- Normal mapping
- Marching cubes
- Canny edge detector
- Random sample consensus (RANSAC)
- Scale-invariant feature transform
- Hough transform
- Seam carving
Database and information retrieval algorithms
[edit]Distributed, concurrent, and networking algorithms
[edit]Distributed systems
[edit]Concurrency
[edit]Networking
[edit]Bioinformatics and scientific algorithms
[edit]Complexity classes and algorithmic limits
[edit]Lists of algorithms
[edit]Notable people
[edit]Early and foundational figures
[edit]- Al-Khwarizmi — namesake of the term algorithm
- Charles Babbage — early computing pioneer
- Ada Lovelace — wrote an early algorithm for the Analytical Engine
- Alan Turing — computability theory and the Turing machine
- Alonzo Church — lambda calculus and computability theory
- John von Neumann — von Neumann architecture and numerical analysis
Algorithm design and analysis
[edit]- Donald Knuth — analysis of algorithms and The Art of Computer Programming
- Edsger W. Dijkstra — Dijkstra's algorithm and structured programming
- Robert W. Floyd — Floyd–Warshall algorithm and algorithm analysis
- Tony Hoare — Quicksort and Hoare logic
- Michael O. Rabin — randomized algorithms and automata theory
- Richard M. Karp — NP-completeness and combinatorial optimization
Complexity theory
[edit]- Stephen Cook — Cook–Levin theorem and NP-completeness
- Leonid Levin — NP-completeness and computational complexity theory
- Juris Hartmanis — computational complexity theory
- Richard E. Stearns — computational complexity theory
- Avi Wigderson — randomness and computational complexity
Graph, network, and optimization algorithms
[edit]- Richard Bellman — dynamic programming and shortest-path algorithms
- George Dantzig — simplex algorithm and linear programming
- Jack Edmonds — matching and polyhedral combinatorics
- L. R. Ford Jr. — Ford–Fulkerson algorithm and maximum flow problems
- D. R. Fulkerson — Ford–Fulkerson algorithm and network flows
- Robert Tarjan — graph algorithms and data structures
Cryptography and randomized algorithms
[edit]- Whitfield Diffie — Diffie–Hellman key exchange
- Martin Hellman — Diffie–Hellman key exchange
- Ron Rivest — RSA and cryptographic algorithms
- Adi Shamir — RSA and cryptographic algorithms
- Leonard Adleman — RSA and DNA computing
- Shafi Goldwasser — cryptography and computational complexity
Artificial intelligence and search algorithms
[edit]- John McCarthy — artificial intelligence and symbolic artificial intelligence
- Marvin Minsky — artificial intelligence and computational models
- Herbert A. Simon — heuristic search and artificial intelligence
- Allen Newell — heuristic search and artificial intelligence
- Arthur Samuel — early machine learning and game-playing algorithms
- Judea Pearl — Bayesian networks and probabilistic reasoning
See also
[edit]References
[edit]- ↑ "Algorithm". Encyclopædia Britannica. Retrieved May 4, 2026.
- ↑ "Artificial intelligence (AI) algorithms: a complete overview". Tableau. Retrieved May 5, 2026.
- ↑ "Computer science - Algorithms and complexity". Encyclopædia Britannica. Retrieved May 4, 2026.
- ↑ "Analysis of algorithms". Encyclopædia Britannica. Retrieved May 4, 2026.
- ↑ "What is an Algorithm | Introduction to Algorithms". GeeksforGeeks. December 20, 2025. Retrieved May 5, 2026.
- ↑ "Algorithms Design Techniques". GeeksforGeeks. July 28, 2025. Retrieved May 5, 2026.
Further reading
[edit]- Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein, Clifford (2022). Introduction to Algorithms (4th ed.). MIT Press. ISBN 978-0-262-04630-5.
- Knuth, Donald E. (1968). The Art of Computer Programming. Addison-Wesley. ISBN 978-0-201-89683-1.
- Kleinberg, Jon; Tardos, Éva (2005). Algorithm Design. Pearson Education. ISBN 978-0-321-29535-4.
- Skiena, Steven S. (2020). The Algorithm Design Manual (3rd ed.). Springer. ISBN 978-3-030-54255-9.
External links
[edit]
Media related to Algorithms at Wikimedia Commons
Algorithms at Wikibooks
Learning materials related to Topic:Algorithms at Wikiversity