The following is a list of well-known
algorithm
In mathematics and computer science, an algorithm () is a finite sequence of rigorous instructions, typically used to solve a class of specific problems or to perform a computation. Algorithms are used as specifications for performing ...
s along with one-line descriptions for each.
Automated planning
Combinatorial algorithms
General combinatorial algorithms
*
Brent's algorithm: finds a cycle in function value iterations using only two iterators
*
Floyd's cycle-finding algorithm: finds a cycle in function value iterations
*
Gale–Shapley algorithm
In mathematics, economics, and computer science, the Gale–Shapley algorithm (also known as the deferred acceptance algorithm or propose-and-reject algorithm) is an algorithm for finding a solution to the stable matching problem, named for David ...
: solves the stable marriage problem
*
Pseudorandom number generators (uniformly distributed—see also
List of pseudorandom number generators for other PRNGs with varying degrees of convergence and varying statistical quality):
**
ACORN generator
**
Blum Blum Shub
**
Lagged Fibonacci generator
**
Linear congruential generator
**
Mersenne Twister
Graph algorithms
*
Coloring algorithm: Graph coloring algorithm.
*
Hopcroft–Karp algorithm: convert a bipartite graph to a
maximum cardinality matching
Maximum cardinality matching is a fundamental problem in graph theory.
We are given a graph , and the goal is to find a matching containing as many edges as possible; that is, a maximum cardinality subset of the edges such that each vertex is ...
*
Hungarian algorithm
The Hungarian method is a combinatorial optimization algorithm that solves the assignment problem in polynomial time and which anticipated later primal–dual methods. It was developed and published in 1955 by Harold Kuhn, who gave the name "Hu ...
: algorithm for finding a
perfect matching
In graph theory, a perfect matching in a graph is a matching that covers every vertex of the graph. More formally, given a graph , a perfect matching in is a subset of edge set , such that every vertex in the vertex set is adjacent to exactly ...
*
Prüfer coding: conversion between a labeled tree and its
Prüfer sequence In combinatorial mathematics, the Prüfer sequence (also Prüfer code or Prüfer numbers) of a labeled tree is a unique sequence associated with the tree. The sequence for a tree on ''n'' vertices has length ''n'' − 2, and can be ...
*
Tarjan's off-line lowest common ancestors algorithm: computes
lowest common ancestors for pairs of nodes in a tree
*
Topological sort: finds linear order of nodes (e.g. jobs) based on their dependencies.
Graph drawing
*
Force-based algorithms (also known as force-directed algorithms or spring-based algorithm)
*
Spectral layout
Network theory
* Network analysis
** Link analysis
***
Girvan–Newman algorithm: detect communities in complex systems
*** Web link analysis
****
Hyperlink-Induced Topic Search (HITS) (also known as
Hubs and authorities)
****
PageRank
PageRank (PR) is an algorithm used by Google Search to rank web pages in their search engine results. It is named after both the term "web page" and co-founder Larry Page. PageRank is a way of measuring the importance of website pages. Accordi ...
****
TrustRank
*
Flow network
In graph theory, a flow network (also known as a transportation network) is a directed graph where each edge has a capacity and each edge receives a flow. The amount of flow on an edge cannot exceed the capacity of the edge. Often in operations re ...
s
**
Dinic's algorithm: is a
strongly polynomial algorithm for computing the
maximum flow in a
flow network
In graph theory, a flow network (also known as a transportation network) is a directed graph where each edge has a capacity and each edge receives a flow. The amount of flow on an edge cannot exceed the capacity of the edge. Often in operations re ...
.
**
Edmonds–Karp algorithm: implementation of Ford–Fulkerson
**
Ford–Fulkerson algorithm: computes the
maximum flow in a graph
**
Karger's algorithm: a Monte Carlo method to compute the
minimum cut of a connected graph
**
Push–relabel algorithm: computes a
maximum flow in a graph
Routing for graphs
*
Edmonds' algorithm (also known as Chu–Liu/Edmonds' algorithm): find maximum or minimum branchings
*
Euclidean minimum spanning tree: algorithms for computing the minimum spanning tree of a set of points in the plane
*
Longest path problem
In graph theory and theoretical computer science, the longest path problem is the problem of finding a simple path (graph theory), path of maximum length in a given Graph (discrete mathematics), graph. A path is called ''simple'' if it does not ha ...
: find a simple path of maximum length in a given graph
*
Minimum spanning tree
A minimum spanning tree (MST) or minimum weight spanning tree is a subset of the edges of a connected, edge-weighted undirected graph that connects all the vertices together, without any cycles and with the minimum possible total edge weight. T ...
**
Borůvka's algorithm
**
Kruskal's algorithm
Kruskal's algorithm finds a minimum spanning forest of an undirected edge-weighted graph. If the graph is connected, it finds a minimum spanning tree. (A minimum spanning tree of a connected graph is a subset of the edges that forms a tree that ...
**
Prim's algorithm
In computer science, Prim's algorithm (also known as Jarník's algorithm) is a greedy algorithm that finds a minimum spanning tree for a weighted undirected graph. This means it finds a subset of the edges that forms a tree that includes every ...
**
Reverse-delete algorithm
*
Nonblocking minimal spanning switch say, for a
telephone exchange
telephone exchange, telephone switch, or central office is a telecommunications system used in the public switched telephone network (PSTN) or in large enterprises. It interconnects telephone subscriber lines or virtual circuits of digital syste ...
*
Shortest path problem
In graph theory, the shortest path problem is the problem of finding a path between two vertices (or nodes) in a graph such that the sum of the weights of its constituent edges is minimized.
The problem of finding the shortest path between t ...
**
Bellman–Ford algorithm
The Bellman–Ford algorithm is an algorithm that computes shortest paths from a single source vertex to all of the other vertices in a weighted digraph.
It is slower than Dijkstra's algorithm for the same problem, but more versatile, as it i ...
: computes
shortest paths in a weighted graph (where some of the edge weights may be negative)
**
Dijkstra's algorithm
Dijkstra's algorithm ( ) is an algorithm for finding the shortest paths between nodes in a graph, which may represent, for example, road networks. It was conceived by computer scientist Edsger W. Dijkstra in 1956 and published three years ...
: computes
shortest paths in a graph with non-negative edge weights
**
Floyd–Warshall algorithm
In computer science, the Floyd–Warshall algorithm (also known as Floyd's algorithm, the Roy–Warshall algorithm, the Roy–Floyd algorithm, or the WFI algorithm) is an algorithm for finding shortest paths in a directed weighted graph with p ...
: solves the
all pairs shortest path problem in a weighted, directed graph
**
Johnson's algorithm: all pairs shortest path algorithm in sparse weighted directed graph
*
Transitive closure problem: find the
transitive closure of a given binary relation
*
Traveling salesman problem
The travelling salesman problem (also called the travelling salesperson problem or TSP) asks the following question: "Given a list of cities and the distances between each pair of cities, what is the shortest possible route that visits each cit ...
**
Christofides algorithm The Christofides algorithm or Christofides–Serdyukov algorithm is an algorithm for finding approximate solutions to the travelling salesman problem, on instances where the distances form a metric space (they are symmetric and obey the triangle ine ...
**
Nearest neighbour algorithm
*
Warnsdorff's rule: a heuristic method for solving the
Knight's tour problem
Graph search
*
A*: special case of best-first search that uses heuristics to improve speed
*
B*: a best-first graph search algorithm that finds the least-cost path from a given initial node to any goal node (out of one or more possible goals)
*
Backtracking: abandons partial solutions when they are found not to satisfy a complete solution
*
Beam search: is a heuristic search algorithm that is an optimization of
best-first search
Best-first search is a class of search algorithms, which explore a graph by expanding the most promising node chosen according to a specified rule.
Judea Pearl described the best-first search as estimating the promise of node ''n'' by a "heuristic ...
that reduces its memory requirement
*
Beam stack search: integrates backtracking with
beam search
*
Best-first search
Best-first search is a class of search algorithms, which explore a graph by expanding the most promising node chosen according to a specified rule.
Judea Pearl described the best-first search as estimating the promise of node ''n'' by a "heuristic ...
: traverses a graph in the order of likely importance using a
priority queue
In computer science, a priority queue is an abstract data-type similar to a regular queue or stack data structure in which each element additionally has a ''priority'' associated with it. In a priority queue, an element with high priority is se ...
*
Bidirectional search: find the shortest path from an initial vertex to a goal vertex in a directed graph
*
Breadth-first search
Breadth-first search (BFS) is an algorithm for searching a tree data structure for a node that satisfies a given property. It starts at the tree root and explores all nodes at the present depth prior to moving on to the nodes at the next d ...
: traverses a graph level by level
*
Brute-force search: an exhaustive and reliable search method, but computationally inefficient in many applications
*
D*: an
incremental heuristic search algorithm
*
Depth-first search
Depth-first search (DFS) is an algorithm for traversing or searching tree or graph data structures. The algorithm starts at the root node (selecting some arbitrary node as the root node in the case of a graph) and explores as far as possible alo ...
: traverses a graph branch by branch
*
Dijkstra's algorithm
Dijkstra's algorithm ( ) is an algorithm for finding the shortest paths between nodes in a graph, which may represent, for example, road networks. It was conceived by computer scientist Edsger W. Dijkstra in 1956 and published three years ...
: a special case of A* for which no heuristic function is used
*
General Problem Solver: a seminal theorem-proving algorithm intended to work as a universal problem solver machine.
*
Iterative deepening depth-first search (IDDFS): a state space search strategy
*
Jump point search: an optimization to A* which may reduce computation time by an order of magnitude using further heuristics
*
Lexicographic breadth-first search (also known as Lex-BFS): a linear time algorithm for ordering the vertices of a graph
*
Uniform-cost search
Dijkstra's algorithm ( ) is an algorithm for finding the shortest paths between nodes in a graph, which may represent, for example, road networks. It was conceived by computer scientist Edsger W. Dijkstra in 1956 and published three years ...
: a
tree search
In computer science, tree traversal (also known as tree search and walking the tree) is a form of graph traversal and refers to the process of visiting (e.g. retrieving, updating, or deleting) each node in a tree data structure, exactly once. S ...
that finds the lowest-cost route where costs vary
*
SSS*
SSS* is a search algorithm, introduced by George Stockman in 1979, that conducts a state space search traversing a game tree in a best-first fashion similar to that of the A* search algorithm.
SSS* is based on the notion of solution trees. Info ...
: state space search traversing a game tree in a best-first fashion similar to that of the A* search algorithm
*
F*: special algorithm to merge the two arrays
Subgraphs
*
Cliques
**
Bron–Kerbosch algorithm: a technique for finding
maximal cliques in an undirected graph
**
MaxCliqueDyn maximum clique algorithm
The MaxCliqueDyn algorithm is an algorithm for finding a maximum clique in an undirected graph. It is based on a basic algorithm (MaxClique algorithm) which finds a maximum clique of bounded size. The bound is found using improved coloring algor ...
: find a
maximum clique in an undirected graph
*
Strongly connected components
**
Path-based strong component algorithm In graph theory, the strongly connected components of a directed graph may be found using an algorithm that uses depth-first search in combination with two stacks, one to keep track of the vertices in the current component and the second to keep ...
**
Kosaraju's algorithm
**
Tarjan's strongly connected components algorithm
Tarjan's strongly connected components algorithm is an algorithm in graph theory for finding the strongly connected components (SCCs) of a directed graph. It runs in linear time, matching the time bound for alternative methods including Kosaraju's ...
*
Subgraph isomorphism problem
Sequence algorithms
Approximate sequence matching
*
Bitap algorithm The bitap algorithm (also known as the shift-or, shift-and or Baeza-Yates–Gonnet algorithm) is an approximate string matching algorithm. The algorithm tells whether a given text contains a substring which is "approximately equal" to a given patter ...
: fuzzy algorithm that determines if strings are approximately equal.
*
Phonetic algorithms
**
Daitch–Mokotoff Soundex: a
Soundex refinement which allows matching of Slavic and Germanic surnames
**
Double Metaphone: an improvement on Metaphone
**
Match rating approach: a phonetic algorithm developed by Western Airlines
**
Metaphone: an algorithm for indexing words by their sound, when pronounced in English
**
NYSIIS The New York State Identification and Intelligence System Phonetic Code, commonly known as NYSIIS, is a phonetic algorithm devised in 1970 as part of the New York State Identification and Intelligence System (now a part of the New York State Divisio ...
:
phonetic algorithm, improves on
Soundex
**
Soundex: a phonetic algorithm for indexing names by sound, as pronounced in English
*
String metric
In mathematics and computer science, a string metric (also known as a string similarity metric or string distance function) is a metric that measures distance ("inverse similarity") between two text strings for approximate string matching or co ...
s: computes a similarity or dissimilarity (distance) score between two pairs of text strings
**
Damerau–Levenshtein distance In information theory and computer science, the Damerau–Levenshtein distance (named after Frederick J. Damerau and Vladimir I. Levenshtein.) is a string metric for measuring the edit distance between two sequences. Informally, the Damerau–Leve ...
: computes a distance measure between two strings, improves on
Levenshtein distance
**
Dice's coefficient (also known as the Dice coefficient): a similarity measure related to the
Jaccard index
**
Hamming distance
In information theory, the Hamming distance between two strings of equal length is the number of positions at which the corresponding symbols are different. In other words, it measures the minimum number of ''substitutions'' required to chang ...
: sum number of positions which are different
**
Jaro–Winkler distance: is a measure of similarity between two strings
**
Levenshtein edit distance: computes a metric for the amount of difference between two sequences
*
Trigram search Trigram search is a method of searching for text when the exact syntax or spelling of the target object is not precisely known or when queries may be regular expressions. It finds objects which match the maximum number of three consecutive charac ...
: search for text when the exact syntax or spelling of the target object is not precisely known
Selection algorithms
*
Quickselect
*
Introselect
Sequence search
*
Linear search
In computer science, a linear search or sequential search is a method for finding an element within a list. It sequentially checks each element of the list until a match is found or the whole list has been searched.
A linear search runs in at ...
: locates an item in an unsorted sequence
*
Selection algorithm: finds the ''k''th largest item in a sequence
*
Ternary search: a technique for finding the minimum or maximum of a function that is either strictly increasing and then strictly decreasing or vice versa
*
Sorted lists
**
Binary search algorithm
In computer science, binary search, also known as half-interval search, logarithmic search, or binary chop, is a search algorithm that finds the position of a target value within a sorted array. Binary search compares the target value to the ...
: locates an item in a sorted sequence
**
Fibonacci search technique: search a sorted sequence using a divide and conquer algorithm that narrows down possible locations with the aid of
Fibonacci numbers
In mathematics, the Fibonacci numbers, commonly denoted , form a sequence, the Fibonacci sequence, in which each number is the sum of the two preceding ones. The sequence commonly starts from 0 and 1, although some authors start the sequence from ...
**
Jump search (or block search): linear search on a smaller subset of the sequence
**
Predictive search: binary-like search which factors in
magnitude of search term versus the high and low values in the search. Sometimes called dictionary search or interpolated search.
**
Uniform binary search Uniform binary search is an optimization of the classic binary search algorithm invented by Donald Knuth and given in Knuth's ''The Art of Computer Programming''. It uses a lookup table to update a single array index, rather than taking the midpoint ...
: an optimization of the classic binary search algorithm
Sequence merging
* Simple merge algorithm
* k-way merge algorithm
* Union (merge, with elements on the output not repeated)
Sequence permutations
*
Fisher–Yates shuffle (also known as the Knuth shuffle): randomly shuffle a finite set
*
Schensted algorithm: constructs a pair of
Young tableaux from a permutation
*
Steinhaus–Johnson–Trotter algorithm (also known as the Johnson–Trotter algorithm): generates permutations by transposing elements
*
Heap's permutation generation algorithm: interchange elements to generate next permutation
Sequence combinations
Sequence alignment
*
Dynamic time warping: measure similarity between two sequences which may vary in time or speed
*
Hirschberg's algorithm: finds the least cost
sequence alignment between two sequences, as measured by their
Levenshtein distance
*
Needleman–Wunsch algorithm: find global alignment between two sequences
*
Smith–Waterman algorithm: find local sequence alignment
Sequence sorting
* Exchange sorts
**
Bubble sort
Bubble sort, sometimes referred to as sinking sort, is a simple sorting algorithm that repeatedly steps through the input list element by element, comparing the current element with the one after it, swapping their values if needed. These passes ...
: for each pair of indices, swap the items if out of order
**
Cocktail shaker sort or bidirectional bubble sort, a bubble sort traversing the list alternately from front to back and back to front
**
Comb sort
Comb sort is a relatively simple sorting algorithm originally designed by Włodzimierz Dobosiewicz and Artur Borowy in 1980, later rediscovered (and given the name "Combsort") by Stephen Lacey and Richard Box in 1991. Comb sort improves on bubble ...
**
Gnome sort
Gnome sort (nicknamed stupid sort) is a variation of the insertion sort sorting algorithm that does not use nested loops. Gnome sort was originally proposed by Iranian computer scientist Hamid Sarbazi-Azad (professor of Computer Science and Eng ...
**
Odd–even sort
**
Quicksort
Quicksort is an efficient, general-purpose sorting algorithm. Quicksort was developed by British computer scientist Tony Hoare in 1959 and published in 1961, it is still a commonly used algorithm for sorting. Overall, it is slightly faster than ...
: divide list into two, with all items on the first list coming before all items on the second list.; then sort the two lists. Often the method of choice
* Humorous or ineffective
**
Bogosort
In computer science, bogosort (also known as permutation sort, stupid sort, slowsort or bozosort) is a sorting algorithm based on the generate and test paradigm. The function successively generates permutations of its input until it finds one t ...
**
Stooge sort
* Hybrid
**
Flashsort
**
Introsort: begin with quicksort and switch to heapsort when the recursion depth exceeds a certain level
**
Timsort: adaptative algorithm derived from merge sort and insertion sort. Used in Python 2.3 and up, and Java SE 7.
* Insertion sorts
**
Insertion sort
Insertion sort is a simple sorting algorithm that builds the final sorted array (or list) one item at a time by comparisons. It is much less efficient on large lists than more advanced algorithms such as quicksort, heapsort, or merge sort. Howe ...
: determine where the current item belongs in the list of sorted ones, and insert it there
**
Library sort
**
Patience sorting
**
Shell sort: an attempt to improve insertion sort
**
Tree sort (binary tree sort): build binary tree, then traverse it to create sorted list
**
Cycle sort: in-place with theoretically optimal number of writes
* Merge sorts
**
Merge sort
In computer science, merge sort (also commonly spelled as mergesort) is an efficient, general-purpose, and comparison-based sorting algorithm. Most implementations produce a stable sort, which means that the order of equal elements is the same ...
: sort the first and second half of the list separately, then merge the sorted lists
**
Slowsort
**
Strand sort
Strand sort is a recursive sorting algorithm that sorts items of a list into increasing order. It has O(n2) worst time complexity which occurs when the input list is reverse sorted. It has a best case time complexity
In computer science, the ...
* Non-comparison sorts
**
Bead sort
Bead sort, also called gravity sort, is a natural computing, natural sorting algorithm, developed by Joshua J. Arulanandham, Cristian S. Calude and Michael J. Dinneen in 2002, and published in ''The Bulletin of the European Association for Theoret ...
**
Bucket sort
**
Burstsort: build a compact, cache efficient
burst trie
Burst may refer to:
*Burst mode (disambiguation), a mode of operation where events occur in rapid succession
**Burst transmission, a term in telecommunications
**Burst switching, a feature of some packet-switched networks
**Bursting, a signaling mo ...
and then traverse it to create sorted output
**
Counting sort
**
Pigeonhole sort
**
Postman sort
Bucket sort, or bin sort, is a sorting algorithm that works by distributing the elements of an array into a number of buckets. Each bucket is then sorted individually, either using a different sorting algorithm, or by recursively applying th ...
: variant of Bucket sort which takes advantage of hierarchical structure
**
Radix sort: sorts strings letter by letter
* Selection sorts
**
Heapsort: convert the list into a heap, keep removing the largest element from the heap and adding it to the end of the list
**
Selection sort: pick the smallest of the remaining elements, add it to the end of the sorted list
**
Smoothsort
* Other
**
Bitonic sorter
**
Pancake sorting
Pancake sorting is the mathematical problem of sorting a disordered stack of pancakes in order of size when a spatula can be inserted at any point in the stack and used to flip all pancakes above it. A ''pancake number'' is the minimum number o ...
**
Spaghetti sort
**
Topological sort
* Unknown class
**
Samplesort
Subsequences
*
Longest common subsequence problem: Find the longest subsequence common to all sequences in a set of sequences
*
Longest increasing subsequence problem In computer science, the longest increasing subsequence problem is to find a subsequence of a given sequence in which the subsequence's elements are in sorted order, lowest to highest, and in which the subsequence is as long as possible. This subs ...
: Find the longest increasing subsequence of a given sequence
*
Ruzzo–Tompa algorithm The Ruzzo–Tompa algorithm or the RT algorithm is a linear-time algorithm for finding all non-overlapping, contiguous, maximal scoring subsequences in a sequence of real numbers. The Ruzzo–Tompa algorithm was proposed by Walter L. Ruzzo and Mart ...
: Find all non-overlapping, contiguous, maximal scoring subsequences in a sequence of real numbers
*
Shortest common supersequence problem: Find the shortest supersequence that contains two or more sequences as subsequences
Substrings
*
Kadane's algorithm
In computer science, the maximum sum subarray problem, also known as the maximum segment sum problem, is the task of finding a contiguous subarray with the largest sum, within a given one-dimensional array A ...nof numbers. Formally, the task is ...
: finds the contiguous subarray with largest sum in an array of numbers
*
Longest common substring problem: find the longest string (or strings) that is a substring (or are substrings) of two or more strings
*
Substring search
**
Aho–Corasick string matching algorithm:
trie
In computer science, a trie, also called digital tree or prefix tree, is a type of ''k''-ary search tree, a tree data structure used for locating specific keys from within a set. These keys are most often strings, with links between nodes d ...
based algorithm for finding all substring matches to any of a finite set of strings
**
Boyer–Moore string-search algorithm
In computer science, the Boyer–Moore string-search algorithm is an efficient string-searching algorithm that is the standard benchmark for practical string-search literature. It was developed by Robert S. Boyer and J Strother Moore in 1977.
...
: amortized linear (
sublinear in most times) algorithm for substring search
**
Boyer–Moore–Horspool algorithm: Simplification of Boyer–Moore
**
Knuth–Morris–Pratt algorithm: substring search which bypasses reexamination of matched characters
**
Rabin–Karp string search algorithm: searches multiple patterns efficiently
**
Zhu–Takaoka string matching algorithm: a variant of Boyer–Moore
*
Ukkonen's algorithm: a
linear-time,
online algorithm for constructing
suffix tree
In computer science, a suffix tree (also called PAT tree or, in an earlier form, position tree) is a compressed trie containing all the suffixes of the given text as their keys and positions in the text as their values. Suffix trees allow parti ...
s
*
Matching wildcards
**
Rich Salz'
wildmat: a widely used
open-source
Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized sof ...
recursive algorithm
**
Krauss matching wildcards algorithm: an open-source non-recursive algorithm
Computational mathematics
Abstract algebra
*
Chien search In abstract algebra, the Chien search, named after Robert Tienwen Chien, is a fast algorithm for determining roots of polynomials defined over a finite field. Chien search is commonly used to find the roots of error-locator polynomials encountered i ...
: a recursive algorithm for determining roots of polynomials defined over a finite field
*
Schreier–Sims algorithm The Schreier–Sims algorithm is an algorithm in computational group theory, named after the mathematicians Otto Schreier and Charles Sims. This algorithm can find the order of a finite permutation group, test membership (is a given permutation ...
: computing a base and
strong generating set (BSGS) of a
permutation group
*
Todd–Coxeter algorithm: Procedure for generating
coset
In mathematics, specifically group theory, a subgroup of a group may be used to decompose the underlying set of into disjoint, equal-size subsets called cosets. There are ''left cosets'' and ''right cosets''. Cosets (both left and right) ...
s.
Computer algebra
*
Buchberger's algorithm: finds a
Gröbner basis
In mathematics, and more specifically in computer algebra, computational algebraic geometry, and computational commutative algebra, a Gröbner basis is a particular kind of generating set of an ideal in a polynomial ring over a field . A Grö ...
*
Cantor–Zassenhaus algorithm In computational algebra, the Cantor–Zassenhaus algorithm is a method for factoring polynomials over finite fields (also called Galois fields).
The algorithm consists mainly of exponentiation and polynomial GCD computations. It was invented by ...
: factor polynomials over finite fields
*
Faugère F4 algorithm: finds a Gröbner basis (also mentions the F5 algorithm)
*
Gosper's algorithm: find sums of hypergeometric terms that are themselves hypergeometric terms
*
Knuth–Bendix completion algorithm: for
rewriting rule systems
*
Multivariate division algorithm: for
polynomial
In mathematics, a polynomial is an expression consisting of indeterminates (also called variables) and coefficients, that involves only the operations of addition, subtraction, multiplication, and positive-integer powers of variables. An ex ...
s in several indeterminates
*
Pollard's kangaroo algorithm In computational number theory and computational algebra, Pollard's kangaroo algorithm (also Pollard's lambda algorithm, see Naming below) is an algorithm for solving the discrete logarithm problem. The algorithm was introduced in 1978 by the nu ...
(also known as Pollard's lambda algorithm ): an algorithm for solving the discrete logarithm problem
*
Polynomial long division
In algebra, polynomial long division is an algorithm for dividing a polynomial by another polynomial of the same or lower degree, a generalized version of the familiar arithmetic technique called long division. It can be done easily by hand, becau ...
: an algorithm for dividing a polynomial by another polynomial of the same or lower degree
*
Risch algorithm
In symbolic computation, the Risch algorithm is a method of indefinite integration used in some computer algebra systems to find antiderivatives. It is named after the American mathematician Robert Henry Risch, a specialist in computer algebra w ...
: an algorithm for the calculus operation of indefinite integration (i.e. finding
antiderivatives)
Geometry
*
Closest pair problem
The closest pair of points problem or closest pair problem is a problem of computational geometry: given n points in metric space, find a pair of points with the smallest distance between them. The closest pair problem for points in the Euclidean ...
: find the pair of points (from a set of points) with the smallest distance between them
*
Collision detection algorithms: check for the collision or intersection of two given solids
*
Cone algorithm: identify surface points
*
Convex hull algorithms: determining the
convex hull of a
set of points
**
Graham scan
**
Quickhull
**
Gift wrapping algorithm or Jarvis march
**
Chan's algorithm
**
Kirkpatrick–Seidel algorithm
*
Euclidean distance transform: computes the distance between every point in a grid and a discrete collection of points.
*
Geometric hashing
In computer science, geometric hashing is a method for efficiently finding two-dimensional objects represented by discrete points that have undergone an affine transformation, though extensions exist to other object representations and transformat ...
: a method for efficiently finding two-dimensional objects represented by discrete points that have undergone an
affine transformation
In Euclidean geometry, an affine transformation or affinity (from the Latin, ''affinis'', "connected with") is a geometric transformation that preserves lines and parallelism, but not necessarily Euclidean distances and angles.
More generall ...
*
Gilbert–Johnson–Keerthi distance algorithm: determining the smallest distance between two
convex
Convex or convexity may refer to:
Science and technology
* Convex lens, in optics
Mathematics
* Convex set, containing the whole line segment that joins points
** Convex polygon, a polygon which encloses a convex set of points
** Convex polytop ...
shapes.
*
Jump-and-Walk algorithm Jump-and-Walk is an algorithm for point location in triangulation
In trigonometry and geometry, triangulation is the process of determining the location of a point by forming triangles to the point from known points.
Applications
In survey ...
: an algorithm for point location in triangulations
*
Laplacian smoothing
Laplacian smoothing is an algorithm to smooth a polygonal mesh. For each vertex in a mesh, a new position is chosen based on local information (such as the position of neighbours) and the vertex is moved there. In the case that a mesh is topolo ...
: an algorithm to smooth a polygonal mesh
*
Line segment intersection: finding whether lines intersect, usually with a
sweep line algorithm
**
Bentley–Ottmann algorithm
**
Shamos–Hoey algorithm
*
Minimum bounding box algorithms: find the
oriented minimum bounding box enclosing a set of points
*
Nearest neighbor search
Nearest neighbor search (NNS), as a form of proximity search, is the optimization problem of finding the point in a given set that is closest (or most similar) to a given point. Closeness is typically expressed in terms of a dissimilarity function ...
: find the nearest point or points to a query point
*
Point in polygon algorithms: tests whether a given point lies within a given polygon
*
Point set registration algorithms: finds the transformation between two
point sets to optimally align them.
*
Rotating calipers: determine all
antipodal pairs of points and vertices on a
convex polygon
In geometry, a convex polygon is a polygon that is the boundary of a convex set. This means that the line segment between two points of the polygon is contained in the union of the interior and the boundary of the polygon. In particular, it is a ...
or
convex hull.
*
Shoelace algorithm
The shoelace formula, shoelace algorithm, or shoelace method (also known as Gauss's area formula and the surveyor's formula) is a mathematical algorithm to determine the area of a simple polygon whose vertices are described by their Cartesian co ...
: determine the area of a polygon whose vertices are described by ordered pairs in the plane
*
Triangulation
In trigonometry and geometry, triangulation is the process of determining the location of a point by forming triangles to the point from known points.
Applications
In surveying
Specifically in surveying, triangulation involves only angle ...
**
Delaunay triangulation
***
Ruppert's algorithm (also known as Delaunay refinement): create quality Delaunay triangulations
***
Chew's second algorithm: create quality
constrained Delaunay triangulations
**
Marching triangles In computer graphics, the problem of transforming a cloud of points on the surface of a three-dimensional object into a polygon mesh for the object can be solved by a technique called marching triangles. This provides a faster alternative to other m ...
: reconstruct two-dimensional surface geometry from an unstructured
point cloud
**
Polygon triangulation
In computational geometry, polygon triangulation is the partition of a polygonal area ( simple polygon) into a set of triangles, i.e., finding a set of triangles with pairwise non-intersecting interiors whose union is .
Triangulations may ...
algorithms: decompose a polygon into a set of triangles
**
Voronoi diagrams, geometric
dual
Dual or Duals may refer to:
Paired/two things
* Dual (mathematics), a notion of paired concepts that mirror one another
** Dual (category theory), a formalization of mathematical duality
*** see more cases in :Duality theories
* Dual (grammatical ...
of
Delaunay triangulation
***
Bowyer–Watson algorithm: create voronoi diagram in any number of dimensions
***
Fortune's Algorithm: create voronoi diagram
**
Quasitriangulation A quasi-triangulation is a subdivision of a geometric object into simplices, where vertices are not points but arbitrary sloped line segments.
This division is not a triangulation in the geometric sense. It is a topological triangulation, however ...
Number theoretic algorithms
*
Binary GCD algorithm
The binary GCD algorithm, also known as Stein's algorithm or the binary Euclidean algorithm, is an algorithm that computes the greatest common divisor of two nonnegative integers. Stein's algorithm uses simpler arithmetic operations than the conv ...
: Efficient way of calculating GCD.
*
Booth's multiplication algorithm
*
Chakravala method: a cyclic algorithm to solve indeterminate quadratic equations, including
Pell's equation
Pell's equation, also called the Pell–Fermat equation, is any Diophantine equation of the form x^2 - ny^2 = 1, where ''n'' is a given positive nonsquare integer, and integer solutions are sought for ''x'' and ''y''. In Cartesian coordinate ...
*
Discrete logarithm
In mathematics, for given real numbers ''a'' and ''b'', the logarithm log''b'' ''a'' is a number ''x'' such that . Analogously, in any group ''G'', powers ''b'k'' can be defined for all integers ''k'', and the discrete logarithm log' ...
:
**
Baby-step giant-step
**
Index calculus algorithm
**
Pollard's rho algorithm for logarithms
**
Pohlig–Hellman algorithm
*
Euclidean algorithm
In mathematics, the Euclidean algorithm,Some widely used textbooks, such as I. N. Herstein's ''Topics in Algebra'' and Serge Lang's ''Algebra'', use the term "Euclidean algorithm" to refer to Euclidean division or Euclid's algorithm, is an ...
: computes the
greatest common divisor
In mathematics, the greatest common divisor (GCD) of two or more integers, which are not all zero, is the largest positive integer that divides each of the integers. For two integers ''x'', ''y'', the greatest common divisor of ''x'' and ''y'' i ...
*
Extended Euclidean algorithm
In arithmetic and computer programming, the extended Euclidean algorithm is an extension to the Euclidean algorithm, and computes, in addition to the greatest common divisor (gcd) of integers ''a'' and ''b'', also the coefficients of Bézout's ...
: also solves the equation ''ax'' + ''by'' = ''c''
*
Integer factorization: breaking an integer into its
prime
A prime number (or a prime) is a natural number greater than 1 that is not a product of two smaller natural numbers. A natural number greater than 1 that is not prime is called a composite number. For example, 5 is prime because the only way ...
factors
**
Congruence of squares
In number theory, a congruence of squares is a congruence commonly used in integer factorization algorithms.
Derivation
Given a positive integer ''n'', Fermat's factorization method relies on finding numbers ''x'' and ''y'' satisfying the equal ...
**
Dixon's algorithm
**
Fermat's factorization method
**
General number field sieve
In number theory, the general number field sieve (GNFS) is the most efficient classical algorithm known for factoring integers larger than . Heuristically, its complexity for factoring an integer (consisting of bits) is of the form
:\exp\le ...
**
Lenstra elliptic curve factorization
**
Pollard's ''p'' − 1 algorithm
**
Pollard's rho algorithm
**
prime factorization algorithm
**
Quadratic sieve
**
Shor's algorithm
Shor's algorithm is a quantum computer algorithm for finding the prime factors of an integer. It was developed in 1994 by the American mathematician Peter Shor.
On a quantum computer, to factor an integer N , Shor's algorithm runs in polynomial ...
**
Special number field sieve
**
Trial division
*
Multiplication algorithms: fast multiplication of two numbers
**
Karatsuba algorithm
**
Schönhage–Strassen algorithm
**
Toom–Cook multiplication
*
Modular square root
In number theory, an integer ''q'' is called a quadratic residue modulo ''n'' if it is congruent to a perfect square modulo ''n''; i.e., if there exists an integer ''x'' such that:
:x^2\equiv q \pmod.
Otherwise, ''q'' is called a quadratic non ...
: computing square roots modulo a prime number
**
Tonelli–Shanks algorithm
**
Cipolla's algorithm In computational number theory, Cipolla's algorithm is a technique for solving a congruence of the form
:x^2\equiv n \pmod,
where x,n \in \mathbf_, so ''n'' is the square of ''x'', and where p is an odd prime. Here \mathbf_p denotes the finite fi ...
**
Berlekamp's root finding algorithm
*
Odlyzko–Schönhage algorithm: calculates nontrivial zeroes of the
Riemann zeta function
*
Lenstra–Lenstra–Lovász algorithm (also known as LLL algorithm): find a short, nearly orthogonal
lattice basis in polynomial time
*
Primality test
A primality test is an algorithm for determining whether an input number is prime. Among other fields of mathematics, it is used for cryptography. Unlike integer factorization, primality tests do not generally give prime factors, only stating wh ...
s: determining whether a given number is
prime
A prime number (or a prime) is a natural number greater than 1 that is not a product of two smaller natural numbers. A natural number greater than 1 that is not prime is called a composite number. For example, 5 is prime because the only way ...
**
AKS primality test
**
Baillie–PSW primality test The Baillie–PSW primality test is a probabilistic primality testing algorithm that determines whether a number is composite or is a probable prime. It is named after Robert Baillie, Carl Pomerance, John Selfridge, and Samuel Wagstaff.
The Bailli ...
**
Fermat primality test
**
Lucas primality test
**
Miller–Rabin primality test
**
Sieve of Atkin
**
Sieve of Eratosthenes
**
Sieve of Sundaram
Numerical algorithms
Differential equation solving
*
Euler method
*
Backward Euler method
*
Trapezoidal rule (differential equations)
*
Linear multistep methods
*
Runge–Kutta methods
**
Euler integration
In mathematics and computational science, the Euler method (also called forward Euler method) is a first-order numerical procedure for solving ordinary differential equations (ODEs) with a given initial value. It is the most basic explicit met ...
*
Multigrid method In numerical analysis, a multigrid method (MG method) is an algorithm for solving differential equations using a hierarchy of discretizations. They are an example of a class of techniques called multiresolution methods, very useful in problems exhi ...
s (MG methods), a group of algorithms for solving differential equations using a hierarchy of discretizations
*
Partial differential equation
In mathematics, a partial differential equation (PDE) is an equation which imposes relations between the various partial derivatives of a multivariable function.
The function is often thought of as an "unknown" to be solved for, similarly to ...
:
**
Finite difference method
**
Crank–Nicolson method
In numerical analysis, the Crank–Nicolson method is a finite difference method used for numerically solving the heat equation and similar partial differential equations. It is a second-order method in time. It is implicit in time, can be wri ...
for diffusion equations
**
Lax–Wendroff for wave equations
*
Verlet integration (): integrate Newton's equations of motion
Elementary and special functions
*
Computation of π:
**
Borwein's algorithm: an algorithm to calculate the value of 1/π
**
Gauss–Legendre algorithm The Gauss–Legendre algorithm is an algorithm to compute the digits of . It is notable for being rapidly convergent, with only 25 iterations producing 45 million correct digits of . However, it has some drawbacks (for example, it is computer ...
: computes the digits of
pi
**
Chudnovsky algorithm: a fast method for calculating the digits of π
**
Bailey–Borwein–Plouffe formula: (BBP formula) a spigot algorithm for the computation of the nth binary digit of π
*
Division algorithm
A division algorithm is an algorithm which, given two integers N and D, computes their quotient and/or remainder, the result of Euclidean division. Some are applied by hand, while others are employed by digital circuit designs and software.
Di ...
s: for computing quotient and/or remainder of two numbers
**
Long division
**
Restoring division
A division algorithm is an algorithm which, given two integers N and D, computes their quotient and/or remainder, the result of Euclidean division. Some are applied by hand, while others are employed by digital circuit designs and software.
D ...
**
Non-restoring division
**
SRT division
A division algorithm is an algorithm which, given two integers N and D, computes their quotient and/or remainder, the result of Euclidean division. Some are applied by hand, while others are employed by digital circuit designs and software.
Divis ...
**
Newton–Raphson division: uses
Newton's method
In numerical analysis, Newton's method, also known as the Newton–Raphson method, named after Isaac Newton and Joseph Raphson, is a root-finding algorithm which produces successively better approximations to the roots (or zeroes) of a real ...
to find the
reciprocal of D, and multiply that reciprocal by N to find the final quotient Q.
**
Goldschmidt division
A division algorithm is an algorithm which, given two integers N and D, computes their quotient and/or remainder, the result of Euclidean division. Some are applied by hand, while others are employed by digital circuit designs and software.
Di ...
* Hyperbolic and Trigonometric Functions:
**
BKM algorithm: computes
elementary functions using a table of logarithms
**
CORDIC: computes hyperbolic and trigonometric functions using a table of arctangents
* Exponentiation:
**
Addition-chain exponentiation: exponentiation by positive integer powers that requires a minimal number of multiplications
**
Exponentiating by squaring: an algorithm used for the fast computation of
large integer powers of a number
*
Montgomery reduction: an algorithm that allows
modular arithmetic
In mathematics, modular arithmetic is a system of arithmetic for integers, where numbers "wrap around" when reaching a certain value, called the modulus. The modern approach to modular arithmetic was developed by Carl Friedrich Gauss in his bo ...
to be performed efficiently when the modulus is large
*
Multiplication algorithms: fast multiplication of two numbers
**
Booth's multiplication algorithm: a multiplication algorithm that multiplies two signed binary numbers in two's complement notation
**
Fürer's algorithm: an integer multiplication algorithm for very large numbers possessing a very low
asymptotic complexity
**
Karatsuba algorithm: an efficient procedure for multiplying large numbers
**
Schönhage–Strassen algorithm: an asymptotically fast multiplication algorithm for large integers
**
Toom–Cook multiplication: (Toom3) a multiplication algorithm for large integers
*
Multiplicative inverse Algorithms: for computing a number's multiplicative inverse (reciprocal).
**
Newton's method
In numerical analysis, Newton's method, also known as the Newton–Raphson method, named after Isaac Newton and Joseph Raphson, is a root-finding algorithm which produces successively better approximations to the roots (or zeroes) of a real ...
*
Rounding functions: the classic ways to round numbers
*
Spigot algorithm: a way to compute the value of a
mathematical constant
A mathematical constant is a key number whose value is fixed by an unambiguous definition, often referred to by a symbol (e.g., an alphabet letter), or by mathematicians' names to facilitate using it across multiple mathematical problems. Cons ...
without knowing preceding digits
* Square and Nth root of a number:
**
Alpha max plus beta min algorithm: an approximation of the square-root of the sum of two squares
**
Methods of computing square roots
**
''n''th root algorithm
**
Shifting nth-root algorithm: digit by digit root extraction
* Summation:
**
Binary splitting: a
divide and conquer
Divide and rule policy ( la, divide et impera), or divide and conquer, in politics and sociology is gaining and maintaining power divisively. Historically, this strategy was used in many different ways by empires seeking to expand their terr ...
technique which speeds up the numerical evaluation of many types of series with rational terms
**
Kahan summation algorithm: a more accurate method of summing floating-point numbers
*
Unrestricted algorithm
Geometric
*
Filtered back-projection: efficiently computes the inverse 2-dimensional
Radon transform
In mathematics, the Radon transform is the integral transform which takes a function ''f'' defined on the plane to a function ''Rf'' defined on the (two-dimensional) space of lines in the plane, whose value at a particular line is equal to the ...
.
*
Level set method (LSM): a numerical technique for tracking interfaces and shapes
Interpolation and extrapolation
*
Birkhoff interpolation: an extension of polynomial interpolation
*
Cubic interpolation
*
Hermite interpolation
*
Lagrange interpolation
In numerical analysis, the Lagrange interpolating polynomial is the unique polynomial of lowest degree that interpolates a given set of data.
Given a data set of coordinate pairs (x_j, y_j) with 0 \leq j \leq k, the x_j are called ''nodes'' an ...
: interpolation using
Lagrange polynomial
In numerical analysis, the Lagrange interpolating polynomial is the unique polynomial of lowest degree that interpolates a given set of data.
Given a data set of coordinate pairs (x_j, y_j) with 0 \leq j \leq k, the x_j are called ''nodes'' an ...
s
*
Linear interpolation
In mathematics, linear interpolation is a method of curve fitting using linear polynomials to construct new data points within the range of a discrete set of known data points.
Linear interpolation between two known points
If the two known po ...
: a method of curve fitting using linear polynomials
*
Monotone cubic interpolation
In the mathematical field of numerical analysis, monotone cubic interpolation is a variant of cubic interpolation that preserves monotonicity of the data set being interpolated.
Monotonicity is preserved by linear interpolation but not guarante ...
: a variant of cubic interpolation that preserves monotonicity of the data set being interpolated.
*
Multivariate interpolation
In numerical analysis, multivariate interpolation is interpolation on functions of more than one variable; when the variates are spatial coordinates, it is also known as spatial interpolation.
The function to be interpolated is known at given po ...
**
Bicubic interpolation, a generalization of
cubic interpolation to two dimensions
**
Bilinear interpolation: an extension of
linear interpolation
In mathematics, linear interpolation is a method of curve fitting using linear polynomials to construct new data points within the range of a discrete set of known data points.
Linear interpolation between two known points
If the two known po ...
for interpolating functions of two variables on a regular grid
**
Lanczos resampling ("Lanzosh"): a multivariate interpolation method used to compute new values for any digitally sampled data
**
Nearest-neighbor interpolation
**
Tricubic interpolation, a generalization of
cubic interpolation to three dimensions
*
Pareto interpolation: a method of estimating the median and other properties of a population that follows a
Pareto distribution
The Pareto distribution, named after the Italian civil engineer, economist, and sociologist Vilfredo Pareto ( ), is a power-law probability distribution that is used in description of social, quality control, scientific, geophysical, actu ...
.
*
Polynomial interpolation
In numerical analysis, polynomial interpolation is the interpolation of a given data set by the polynomial of lowest possible degree that passes through the points of the dataset.
Given a set of data points (x_0,y_0), \ldots, (x_n,y_n), with n ...
**
Neville's algorithm
*
Spline interpolation
In the mathematical field of numerical analysis, spline interpolation is a form of interpolation where the interpolant is a special type of piecewise polynomial called a spline. That is, instead of fitting a single, high-degree polynomial to all ...
: Reduces error with
Runge's phenomenon
In the mathematical field of numerical analysis, Runge's phenomenon () is a problem of oscillation at the edges of an interval that occurs when using polynomial interpolation with polynomials of high degree over a set of equispaced interpolation ...
.
**
De Boor algorithm:
B-spline
In the mathematical subfield of numerical analysis, a B-spline or basis spline is a spline function that has minimal support with respect to a given degree, smoothness, and domain partition. Any spline function of given degree can be expresse ...
s
**
De Casteljau's algorithm:
Bézier curves
*
Trigonometric interpolation
Linear algebra
*
Eigenvalue algorithms
**
Arnoldi iteration
**
Inverse iteration In numerical analysis, inverse iteration (also known as the ''inverse power method'') is an iterative eigenvalue algorithm. It allows one to find an approximate
eigenvector when an approximation to a corresponding eigenvalue is already known.
The me ...
**
Jacobi method
**
Lanczos iteration
**
Power iteration
**
QR algorithm
**
Rayleigh quotient iteration Rayleigh quotient iteration is an eigenvalue algorithm which extends the idea of the inverse iteration by using the Rayleigh quotient to obtain increasingly accurate eigenvalue estimates.
Rayleigh quotient iteration is an iterative method, tha ...
*
Gram–Schmidt process: orthogonalizes a set of vectors
*
Matrix multiplication algorithms
**
Cannon's algorithm
In computer science, Cannon's algorithm is a distributed algorithm for matrix multiplication for two-dimensional meshes first described in 1969 by Lynn Elliot Cannon. : a
distributed algorithm for
matrix multiplication
In mathematics, particularly in linear algebra, matrix multiplication is a binary operation that produces a matrix from two matrices. For matrix multiplication, the number of columns in the first matrix must be equal to the number of rows in the ...
especially suitable for computers laid out in an N × N mesh
**
Coppersmith–Winograd algorithm: square
matrix multiplication
In mathematics, particularly in linear algebra, matrix multiplication is a binary operation that produces a matrix from two matrices. For matrix multiplication, the number of columns in the first matrix must be equal to the number of rows in the ...
**
Freivalds' algorithm: a randomized algorithm used to verify matrix multiplication
**
Strassen algorithm: faster
matrix multiplication
In mathematics, particularly in linear algebra, matrix multiplication is a binary operation that produces a matrix from two matrices. For matrix multiplication, the number of columns in the first matrix must be equal to the number of rows in the ...
* Solving
systems of linear equations
**
Biconjugate gradient method
In mathematics, more specifically in numerical linear algebra, the biconjugate gradient method is an algorithm to solve systems of linear equations
:A x= b.\,
Unlike the conjugate gradient method, this algorithm does not require the matrix A ...
: solves systems of linear equations
**
Conjugate gradient: an algorithm for the numerical solution of particular systems of linear equations
**
Gaussian elimination
In mathematics, Gaussian elimination, also known as row reduction, is an algorithm for solving systems of linear equations. It consists of a sequence of operations performed on the corresponding matrix of coefficients. This method can also be used ...
**
Gauss–Jordan elimination: solves systems of linear equations
**
Gauss–Seidel method: solves systems of linear equations iteratively
**
Levinson recursion: solves equation involving a
Toeplitz matrix
**
Stone's method
In numerical analysis, Stone's method, also known as the strongly implicit procedure or SIP, is an algorithm for solving a sparse linear system of equations. The method uses an incomplete LU decomposition, which approximates the exact LU deco ...
: also known as the strongly implicit procedure or SIP, is an algorithm for solving a sparse linear system of equations
**
Successive over-relaxation In numerical linear algebra, the method of successive over-relaxation (SOR) is a variant of the Gauss–Seidel method for solving a linear system of equations, resulting in faster convergence. A similar method can be used for any slowly convergin ...
(SOR): method used to speed up convergence of the
Gauss–Seidel method
**
Tridiagonal matrix algorithm (Thomas algorithm): solves systems of tridiagonal equations
*
Sparse matrix
In numerical analysis and scientific computing, a sparse matrix or sparse array is a matrix in which most of the elements are zero. There is no strict definition regarding the proportion of zero-value elements for a matrix to qualify as sparse b ...
algorithms
**
Cuthill–McKee algorithm: reduce the
bandwidth of a
symmetric sparse matrix
**
Minimum degree algorithm
In numerical analysis, the minimum degree algorithm is an algorithm used to permute the rows and columns of a symmetric sparse matrix before applying the Cholesky decomposition, to reduce the number of non-zeros in the Cholesky factor.
This re ...
: permute the rows and columns of a
symmetric sparse matrix before applying the
Cholesky decomposition
**
Symbolic Cholesky decomposition
In the mathematical subfield of numerical analysis the symbolic Cholesky decomposition is an algorithm used to determine the non-zero pattern for the L factors of a symmetric sparse matrix when applying the Cholesky decomposition or variants.
Algo ...
: Efficient way of storing
sparse matrix
In numerical analysis and scientific computing, a sparse matrix or sparse array is a matrix in which most of the elements are zero. There is no strict definition regarding the proportion of zero-value elements for a matrix to qualify as sparse b ...
Monte Carlo
*
Gibbs sampling: generates a sequence of samples from the joint probability distribution of two or more random variables
*
Hybrid Monte Carlo The Hamiltonian Monte Carlo algorithm (originally known as hybrid Monte Carlo) is a Markov chain Monte Carlo method for obtaining a sequence of random samples which converge to being distributed according to a target probability distribution for ...
: generates a sequence of samples using
Hamiltonian weighted
Markov chain Monte Carlo
In statistics, Markov chain Monte Carlo (MCMC) methods comprise a class of algorithms for sampling from a probability distribution. By constructing a Markov chain that has the desired distribution as its equilibrium distribution, one can obtain ...
, from a probability distribution which is difficult to sample directly.
*
Metropolis–Hastings algorithm
In statistics and statistical physics, the Metropolis–Hastings algorithm is a Markov chain Monte Carlo (MCMC) method for obtaining a sequence of random samples from a probability distribution from which direct sampling is difficult. This seq ...
: used to generate a sequence of samples from the
probability distribution
In probability theory and statistics, a probability distribution is the mathematical function that gives the probabilities of occurrence of different possible outcomes for an experiment. It is a mathematical description of a random phenomeno ...
of one or more variables
*
Wang and Landau algorithm: an extension of
Metropolis–Hastings algorithm
In statistics and statistical physics, the Metropolis–Hastings algorithm is a Markov chain Monte Carlo (MCMC) method for obtaining a sequence of random samples from a probability distribution from which direct sampling is difficult. This seq ...
sampling
Numerical integration
*
MISER algorithm
In mathematics, Monte Carlo integration is a technique for numerical quadrature, numerical integration using pseudorandomness, random numbers. It is a particular Monte Carlo method that numerically computes a definite integral. While other algori ...
: Monte Carlo simulation,
numerical integration
In analysis, numerical integration comprises a broad family of algorithms for calculating the numerical value of a definite integral, and by extension, the term is also sometimes used to describe the numerical solution of differential equations ...
Root finding
*
Bisection method
*
False position method: approximates roots of a function
*
ITP method: minmax optimal and superlinar convergence simultaneously
*
Newton's method
In numerical analysis, Newton's method, also known as the Newton–Raphson method, named after Isaac Newton and Joseph Raphson, is a root-finding algorithm which produces successively better approximations to the roots (or zeroes) of a real ...
: finds zeros of functions with
calculus
Calculus, originally called infinitesimal calculus or "the calculus of infinitesimals", is the mathematics, mathematical study of continuous change, in the same way that geometry is the study of shape, and algebra is the study of generalizati ...
*
Halley's method: uses first and second derivatives
*
Secant method
In numerical analysis, the secant method is a root-finding algorithm that uses a succession of roots of secant lines to better approximate a root of a function ''f''. The secant method can be thought of as a finite-difference approximation ...
: 2-point, 1-sided
*
False position method and Illinois method: 2-point, bracketing
*
Ridder's method: 3-point, exponential scaling
*
Muller's method: 3-point, quadratic interpolation
Optimization algorithms
*
Alpha–beta pruning
Alpha–beta pruning is a search algorithm that seeks to decrease the number of nodes that are evaluated by the minimax algorithm in its search tree. It is an adversarial search algorithm used commonly for machine playing of two-player games ...
: search to reduce number of nodes in minimax algorithm
*
Branch and bound
*
Bruss algorithm: see
odds algorithm
*
Chain matrix multiplication
Matrix chain multiplication (or the matrix chain ordering problem) is an optimization problem concerning the most efficient way to multiply a given sequence of matrices. The problem is not actually to ''perform'' the multiplications, but merely ...
*
Combinatorial optimization
Combinatorial optimization is a subfield of mathematical optimization that consists of finding an optimal object from a finite set of objects, where the set of feasible solutions is discrete or can be reduced to a discrete set. Typical combi ...
: optimization problems where the set of feasible solutions is discrete
**
Greedy randomized adaptive search procedure (GRASP): successive constructions of a greedy randomized solution and subsequent iterative improvements of it through a local search
**
Hungarian method
The Hungarian method is a combinatorial optimization algorithm that solves the assignment problem in polynomial time and which anticipated later primal–dual methods. It was developed and published in 1955 by Harold Kuhn, who gave the name "Hung ...
: a combinatorial optimization algorithm which solves the
assignment problem
The assignment problem is a fundamental combinatorial optimization problem. In its most general form, the problem is as follows:
:The problem instance has a number of ''agents'' and a number of ''tasks''. Any agent can be assigned to perform any t ...
in polynomial time
*
Constraint satisfaction
** General algorithms for the constraint satisfaction
***
AC-3 algorithm
***
Difference map algorithm
The difference-map algorithm is a search algorithm for general constraint satisfaction problems. It is a meta-algorithm in the sense that it is built from more basic algorithms that perform projections onto constraint sets. From a mathematical p ...
***
Min conflicts algorithm
**
Chaff algorithm: an algorithm for solving instances of the boolean satisfiability problem
**
Davis–Putnam algorithm: check the validity of a first-order logic formula
**
Davis–Putnam–Logemann–Loveland algorithm (DPLL): an algorithm for deciding the satisfiability of propositional logic formula in
conjunctive normal form, i.e. for solving the
CNF-SAT
In logic and computer science, the Boolean satisfiability problem (sometimes called propositional satisfiability problem and abbreviated SATISFIABILITY, SAT or B-SAT) is the problem of determining if there exists an interpretation that satisfie ...
problem
**
Exact cover problem
***
Algorithm X: a
nondeterministic algorithm
In computer programming, a nondeterministic algorithm is an algorithm that, even for the same input, can exhibit different behaviors on different runs, as opposed to a deterministic algorithm. There are several ways an algorithm may behave diffe ...
***
Dancing Links: an efficient implementation of Algorithm X
*
Cross-entropy method: a general Monte Carlo approach to combinatorial and continuous multi-extremal optimization and
importance sampling
*
Differential evolution
In evolutionary computation, differential evolution (DE) is a method that optimizes a problem by iteratively trying to improve a candidate solution with regard to a given measure of quality. Such methods are commonly known as metaheuristics a ...
*
Dynamic Programming
Dynamic programming is both a mathematical optimization method and a computer programming method. The method was developed by Richard Bellman in the 1950s and has found applications in numerous fields, from aerospace engineering to economics.
I ...
: problems exhibiting the properties of
overlapping subproblems and
optimal substructure
*
Ellipsoid method: is an algorithm for solving convex optimization problems
*
Evolutionary computation: optimization inspired by biological mechanisms of evolution
**
Evolution strategy
**
Gene expression programming
**
Genetic algorithms
***
Fitness proportionate selection – also known as roulette-wheel selection
***
Stochastic universal sampling
***
Truncation selection
***
Tournament selection Tournament selection is a method of selecting an individual from a population of individuals in a genetic algorithm
In computer science and operations research, a genetic algorithm (GA) is a metaheuristic inspired by the process of natural sele ...
**
Memetic algorithm
A memetic algorithm (MA) in computer science and operations research, is an extension of the traditional genetic algorithm. It may provide a sufficiently good solution to an optimization problem. It uses a local search technique to reduce the like ...
**
Swarm intelligence
***
Ant colony optimization
***
Bees algorithm: a search algorithm which mimics the food foraging behavior of swarms of honey bees
***
Particle swarm
*
Frank-Wolfe algorithm: an iterative first-order optimization algorithm for constrained convex optimization
*
Golden-section search: an algorithm for finding the maximum of a real function
*
Gradient descent
*
Grid Search
*
Harmony search (HS): a
metaheuristic
In computer science and mathematical optimization, a metaheuristic is a higher-level procedure or heuristic designed to find, generate, or select a heuristic (partial search algorithm) that may provide a sufficiently good solution to an optimizatio ...
algorithm mimicking the improvisation process of musicians
*
Interior point method
*
Linear programming
Linear programming (LP), also called linear optimization, is a method to achieve the best outcome (such as maximum profit or lowest cost) in a mathematical model whose requirements are represented by linear relationships. Linear programming is ...
**
Benson's algorithm: an algorithm for solving linear
vector optimization problems
**
Dantzig–Wolfe decomposition: an algorithm for solving linear programming problems with special structure
**
Delayed column generation
**
Integer linear programming: solve linear programming problems where some or all the unknowns are restricted to integer values
***
Branch and cut Branch and cut is a method of combinatorial optimization for solving integer linear programs (ILPs), that is, linear programming (LP) problems where some or all the unknowns are restricted to integer values. Branch and cut involves running a branc ...
***
Cutting-plane method
In mathematical optimization, the cutting-plane method is any of a variety of optimization methods that iteratively refine a feasible set or objective function by means of linear inequalities, termed ''cuts''. Such procedures are commonly used ...
**
Karmarkar's algorithm Karmarkar's algorithm is an algorithm introduced by Narendra Karmarkar in 1984 for solving linear programming problems. It was the first reasonably efficient algorithm that solves these problems in polynomial time. The ellipsoid method is also po ...
: The first reasonably efficient algorithm that solves the
linear programming
Linear programming (LP), also called linear optimization, is a method to achieve the best outcome (such as maximum profit or lowest cost) in a mathematical model whose requirements are represented by linear relationships. Linear programming is ...
problem in
polynomial time
In computer science, the time complexity is the computational complexity that describes the amount of computer time it takes to run an algorithm. Time complexity is commonly estimated by counting the number of elementary operations performed by ...
.
**
Simplex algorithm: an algorithm for solving
linear programming
Linear programming (LP), also called linear optimization, is a method to achieve the best outcome (such as maximum profit or lowest cost) in a mathematical model whose requirements are represented by linear relationships. Linear programming is ...
problems
*
Line search
*
Local search: a metaheuristic for solving computationally hard optimization problems
**
Random-restart hill climbing
**
Tabu search
*
Minimax
Minimax (sometimes MinMax, MM or saddle point) is a decision rule used in artificial intelligence, decision theory, game theory, statistics, and philosophy for ''mini''mizing the possible loss for a worst case (''max''imum loss) scenario. Whe ...
used in game programming
*
Nearest neighbor search
Nearest neighbor search (NNS), as a form of proximity search, is the optimization problem of finding the point in a given set that is closest (or most similar) to a given point. Closeness is typically expressed in terms of a dissimilarity function ...
(NNS): find closest points in a
metric space
In mathematics, a metric space is a set together with a notion of '' distance'' between its elements, usually called points. The distance is measured by a function called a metric or distance function. Metric spaces are the most general sett ...
**
Best Bin First: find an approximate solution to the
nearest neighbor search
Nearest neighbor search (NNS), as a form of proximity search, is the optimization problem of finding the point in a given set that is closest (or most similar) to a given point. Closeness is typically expressed in terms of a dissimilarity function ...
problem in very-high-dimensional spaces
*
Newton's method in optimization
*
Nonlinear optimization
**
BFGS method: a
nonlinear optimization algorithm
**
Gauss–Newton algorithm: an algorithm for solving nonlinear
least squares
The method of least squares is a standard approach in regression analysis to approximate the solution of overdetermined systems (sets of equations in which there are more equations than unknowns) by minimizing the sum of the squares of the r ...
problems
**
Levenberg–Marquardt algorithm: an algorithm for solving nonlinear
least squares
The method of least squares is a standard approach in regression analysis to approximate the solution of overdetermined systems (sets of equations in which there are more equations than unknowns) by minimizing the sum of the squares of the r ...
problems
**
Nelder–Mead method (downhill simplex method): a
nonlinear optimization algorithm
*
Odds algorithm (Bruss algorithm): Finds the optimal strategy to predict a last specific event in a random sequence event
*
Random Search
*
Simulated annealing
Simulated annealing (SA) is a probabilistic technique for approximating the global optimum of a given function. Specifically, it is a metaheuristic to approximate global optimization in a large search space for an optimization problem. ...
*
Stochastic tunneling
*
Subset sum The subset sum problem (SSP) is a decision problem in computer science. In its most general formulation, there is a multiset S of integers and a target-sum T, and the question is to decide whether any subset of the integers sum to precisely T''.' ...
algorithm
Computational science
Astronomy
*
Doomsday algorithm
The Doomsday rule, Doomsday algorithm or Doomsday method is an algorithm of determination of the day of the week for a given date. It provides a perpetual calendar because the Gregorian calendar moves in cycles of 400 years. The algorithm for men ...
: day of the week
*
Zeller's congruence is an algorithm to calculate the day of the week for any Julian or Gregorian calendar date
* various
Easter algorithms are used to calculate the day of Easter
Bioinformatics
*
Basic Local Alignment Search Tool
In bioinformatics, BLAST (basic local alignment search tool) is an algorithm and program for comparing primary biological sequence information, such as the amino-acid sequences of proteins or the nucleotides of DNA and/or RNA sequences. A ...
also known as BLAST: an algorithm for comparing primary biological sequence information
*
Kabsch algorithm: calculate the optimal alignment of two sets of points in order to compute the
root mean squared deviation between two protein structures.
*
Velvet
Weave details visible on a purple-colored velvet fabric
Velvet is a type of woven tufted fabric in which the cut threads are evenly distributed, with a short pile, giving it a distinctive soft feel. By extension, the word ''velvety'' means ...
: a set of algorithms manipulating
de Bruijn graphs for genomic
sequence assembly
In bioinformatics, sequence assembly refers to aligning and merging fragments from a longer DNA sequence in order to reconstruct the original sequence. This is needed as DNA sequencing technology might not be able to 'read' whole genomes in one ...
*
Sorting by signed reversals
Sorting refers to ordering data in an increasing or decreasing manner according to some linear relationship among the data items.
# ordering: arranging items in a sequence ordered by some criterion;
# categorizing: grouping items with similar pro ...
: an algorithm for understanding genomic evolution.
*
Maximum parsimony (phylogenetics): an algorithm for finding the simplest phylogenetic tree to explain a given character matrix.
*
UPGMA: a distance-based phylogenetic tree construction algorithm.
Geoscience
*
Vincenty's formulae: a fast algorithm to calculate the distance between two latitude/longitude points on an ellipsoid
*
Geohash: a public domain algorithm that encodes a decimal latitude/longitude pair as a hash string
Linguistics
*
Lesk algorithm: word sense disambiguation
*
Stemming algorithm: a method of reducing words to their stem, base, or root form
*
Sukhotin's algorithm
Computational linguistics is an interdisciplinary field concerned with the computational modelling of natural language, as well as the study of appropriate computational approaches to linguistic questions. In general, computational linguistics d ...
: a statistical classification algorithm for classifying characters in a text as vowels or consonants
Medicine
*
ESC algorithm
Heart failure (HF), also known as congestive heart failure (CHF), is a syndrome, a group of signs and symptoms caused by an impairment of the heart's blood pumping function. Symptoms typically include shortness of breath, Fatigue (medical), exc ...
for the diagnosis of heart failure
*
Manning Criteria for irritable bowel syndrome
*
Pulmonary embolism
Pulmonary embolism (PE) is a blockage of an artery in the lungs by a substance that has moved from elsewhere in the body through the bloodstream (embolism). Symptoms of a PE may include shortness of breath, chest pain particularly upon breathing ...
diagnostic algorithms
*
Texas Medication Algorithm Project
Physics
*
Constraint algorithm: a class of algorithms for satisfying constraints for bodies that obey Newton's equations of motion
*
Demon algorithm The demon algorithm is a Monte Carlo method for efficiently sampling members of a microcanonical ensemble with a given energy. An additional degree of freedom, called 'the demon', is added to the system and is able to store and provide energy. If a ...
: a
Monte Carlo method
Monte Carlo methods, or Monte Carlo experiments, are a broad class of computational algorithms that rely on repeated random sampling to obtain numerical results. The underlying concept is to use randomness to solve problems that might be deter ...
for efficiently sampling members of a
microcanonical ensemble with a given energy
*
Featherstone's algorithm: computes the effects of forces applied to a structure of joints and links
*
Ground state approximation
**
Variational method
The calculus of variations (or Variational Calculus) is a field of mathematical analysis that uses variations, which are small changes in functions
and functionals, to find maxima and minima of functionals: mappings from a set of functions ...
***
Ritz method
*
''n''-body problems
**
Barnes–Hut simulation
The Barnes–Hut simulation (named after Josh Barnes and Piet Hut) is an approximation algorithm for performing an ''n''-body simulation. It is notable for having order O(''n'' log ''n'') compared to a direct-sum algorithm which would b ...
: Solves the n-body problem in an approximate way that has the order instead of as in a direct-sum simulation.
**
Fast multipole method (FMM): speeds up the calculation of long-ranged forces
*
Rainflow-counting algorithm: Reduces a complex
stress history to a count of elementary stress-reversals for use in
fatigue
Fatigue describes a state of tiredness that does not resolve with rest or sleep. In general usage, fatigue is synonymous with extreme tiredness or exhaustion that normally follows prolonged physical or mental activity. When it does not resolve ...
analysis
*
Sweep and prune: a broad phase algorithm used during
collision detection to limit the number of pairs of solids that need to be checked for collision
*
VEGAS algorithm: a method for reducing error in
Monte Carlo simulation
Monte Carlo methods, or Monte Carlo experiments, are a broad class of computational algorithms that rely on repeated random sampling to obtain numerical results. The underlying concept is to use randomness to solve problems that might be determ ...
s
*
Glauber dynamics In statistical physics, Glauber dynamics is a way to simulate the Ising model (a model of magnetism) on a computer. It is a type of Markov Chain Monte Carlo algorithm.
The algorithm
In the Ising model, we have say N particles that can spin u ...
: a method for simulating the Ising Model on a computer
Statistics
*
Algorithms for calculating variance: avoiding instability and numerical overflow
*
Approximate counting algorithm: allows counting large number of events in a small register
*
Bayesian statistics
Bayesian statistics is a theory in the field of statistics based on the Bayesian interpretation of probability where probability expresses a ''degree of belief'' in an event. The degree of belief may be based on prior knowledge about the event, ...
**
Nested sampling algorithm: a computational approach to the problem of comparing models in Bayesian statistics
*
Clustering Algorithms
**
Average-linkage clustering: a simple agglomerative clustering algorithm
**
Canopy clustering algorithm: an unsupervised pre-clustering algorithm related to the K-means algorithm
**
Complete-linkage clustering: a simple agglomerative clustering algorithm
**
DBSCAN
Density-based spatial clustering of applications with noise (DBSCAN) is a data clustering algorithm proposed by Martin Ester, Hans-Peter Kriegel, Jörg Sander and Xiaowei Xu in 1996.
It is a density-based clustering non-parametric algorithm: g ...
: a density based clustering algorithm
**
Expectation-maximization algorithm
**
Fuzzy clustering: a class of clustering algorithms where each point has a degree of belonging to clusters
***
Fuzzy c-means
***
FLAME clustering (Fuzzy clustering by Local Approximation of MEmberships): define clusters in the dense parts of a dataset and perform cluster assignment solely based on the neighborhood relationships among objects
**
KHOPCA clustering algorithm
KHOPCA is an adaptive clustering algorithm originally developed for dynamic networks. KHOPCA (k-hop clustering algorithm) provides a fully Distributed computing, distributed and localized approach to group elements such as nodes in a network accord ...
: a local clustering algorithm, which produces hierarchical multi-hop clusters in static and mobile environments.
**
k-means clustering: cluster objects based on attributes into partitions
**
k-means++: a variation of this, using modified random seeds
**
k-medoids: similar to k-means, but chooses datapoints or
medoids as centers
**
Linde–Buzo–Gray algorithm: a vector quantization algorithm to derive a good codebook
**
Lloyd's algorithm In electrical engineering and computer science, Lloyd's algorithm, also known as Voronoi iteration or relaxation, is an algorithm named after Stuart P. Lloyd for finding evenly spaced sets of points in subsets of Euclidean spaces and partitions of ...
(Voronoi iteration or relaxation): group data points into a given number of categories, a popular algorithm for
k-means clustering
**
OPTICS
Optics is the branch of physics that studies the behaviour and properties of light, including its interactions with matter and the construction of instruments that use or detect it. Optics usually describes the behaviour of visible, ultra ...
: a density based clustering algorithm with a visual evaluation method
**
Single-linkage clustering: a simple agglomerative clustering algorithm
**
SUBCLU
SUBCLU is an algorithm for clustering high-dimensional data by Karin Kailing, Hans-Peter Kriegel and Peer Kröger.Karin Kailing, Hans-Peter Kriegel and Peer Kröger. Density-Connected Subspace Clustering for High-Dimensional Data'. In: ''Proc. SIAM ...
: a subspace clustering algorithm
**
Ward's method: an agglomerative clustering algorithm, extended to more general Lance–Williams algorithms
**
WACA clustering algorithm: a local clustering algorithm with potentially multi-hop structures; for dynamic networks
*
Estimation Theory
Estimation theory is a branch of statistics that deals with estimating the values of parameters based on measured empirical data that has a random component. The parameters describe an underlying physical setting in such a way that their val ...
**
Expectation-maximization algorithm A class of related algorithms for finding maximum likelihood estimates of parameters in probabilistic models
***
Ordered subset expectation maximization (OSEM): used in
medical imaging for
positron emission tomography
Positron emission tomography (PET) is a functional imaging technique that uses radioactive substances known as radiotracers to visualize and measure changes in metabolic processes, and in other physiological activities including blood flow, ...
,
single-photon emission computed tomography
Single-photon emission computed tomography (SPECT, or less commonly, SPET) is a nuclear medicine tomographic imaging technique using gamma rays. It is very similar to conventional nuclear medicine planar imaging using a gamma camera (that is, ...
and
X-ray
X-rays (or rarely, ''X-radiation'') are a form of high-energy electromagnetic radiation. In many languages, it is referred to as Röntgen radiation, after the German scientist Wilhelm Conrad Röntgen, who discovered it in 1895 and named it ' ...
computed tomography.
**
Odds algorithm (Bruss algorithm) Optimal online search for distinguished value in sequential random input
**
Kalman filter
For statistics and control theory, Kalman filtering, also known as linear quadratic estimation (LQE), is an algorithm that uses a series of measurements observed over time, including statistical noise and other inaccuracies, and produces estima ...
: estimate the state of a linear
dynamic system from a series of noisy measurements
*
False nearest neighbor algorithm (FNN) estimates
fractal dimension
*
Hidden Markov model
A hidden Markov model (HMM) is a statistical Markov model in which the system being modeled is assumed to be a Markov process — call it X — with unobservable ("''hidden''") states. As part of the definition, HMM requires that there be an ob ...
**
Baum–Welch algorithm: computes maximum likelihood estimates and
posterior mode estimates for the parameters of a hidden Markov model
**
Forward-backward algorithm: a dynamic programming algorithm for computing the probability of a particular observation sequence
**
Viterbi algorithm: find the most likely sequence of hidden states in a hidden Markov model
*
Partial least squares regression: finds a linear model describing some predicted variables in terms of other observable variables
*
Queuing theory
Queueing theory is the mathematical study of waiting lines, or queues. A queueing model is constructed so that queue lengths and waiting time can be predicted. Queueing theory is generally considered a branch of operations research because the ...
**
Buzen's algorithm: an algorithm for calculating the normalization constant G(K) in the
Gordon–Newell theorem
*
RANSAC (an abbreviation for "RANdom SAmple Consensus"): an iterative method to estimate parameters of a mathematical model from a set of observed data which contains outliers
*
Scoring algorithm: is a form of
Newton's method
In numerical analysis, Newton's method, also known as the Newton–Raphson method, named after Isaac Newton and Joseph Raphson, is a root-finding algorithm which produces successively better approximations to the roots (or zeroes) of a real ...
used to solve
maximum likelihood
In statistics, maximum likelihood estimation (MLE) is a method of estimating the parameters of an assumed probability distribution, given some observed data. This is achieved by maximizing a likelihood function so that, under the assumed sta ...
equations numerically
*
Yamartino method: calculate an approximation to the standard deviation σθ of wind direction θ during a single pass through the incoming data
*
Ziggurat algorithm: generates random numbers from a non-uniform distribution
Computer science
Computer architecture
*
Tomasulo algorithm: allows sequential instructions that would normally be stalled due to certain dependencies to execute non-sequentially
Computer graphics
*
Clipping
**
Line clipping
***
Cohen–Sutherland
***
Cyrus–Beck
***
Fast-clipping
***
Liang–Barsky
***
Nicholl–Lee–Nicholl
** Polygon clipping
***
Sutherland–Hodgman
***
Vatti
Vatti is a Chinese company which manufactures kitchen appliances. It manufactures gas hobs, water heaters
Water (chemical formula ) is an inorganic, transparent, tasteless, odorless, and nearly colorless chemical substance, which is the ...
***
Weiler–Atherton
*
Contour lines and
Isosurface
An isosurface is a three-dimensional analog of an isoline. It is a surface that represents points of a constant value (e.g. pressure, temperature, velocity, density) within a volume of space; in other words, it is a level set of a continuous ...
s
**
Marching cubes: extract a polygonal mesh of an isosurface from a three-dimensional scalar field (sometimes called voxels)
**
Marching squares
In computer graphics, marching squares is an algorithm that generates contours for a two-dimensional scalar field (rectangular array of individual numerical values). A similar method can be used to contour 2D triangle meshes.
The contours can b ...
: generates contour lines for a two-dimensional scalar field
**
Marching tetrahedrons
Marching tetrahedra is an algorithm in the field of computer graphics to render implicit surfaces. It clarifies a minor ambiguity problem of the marching cubes algorithm with some cube configurations. It was originally introduced in 1991.
While t ...
: an alternative to
Marching cubes
*
Discrete Green's Theorem
Discrete may refer to:
*Discrete particle or quantum in physics, for example in quantum theory
* Discrete device, an electronic component with just one circuit element, either passive or active, other than an integrated circuit
*Discrete group, a ...
: is an algorithm for computing double integral over a generalized rectangular domain in constant time. It is a natural extension to the summed area table algorithm
*
Flood fill: fills a connected region of a multi-dimensional array with a specified symbol
*
Global illumination algorithms: Considers direct illumination and reflection from other objects.
**
Ambient occlusion
In 3D computer graphics, modeling, and animation, ambient occlusion is a shading and rendering technique used to calculate how exposed each point in a scene is to ambient lighting. For example, the interior of a tube is typically more occlude ...
**
Beam tracing
**
Cone tracing
**
Image-based lighting
**
Metropolis light transport
**
Path tracing
Path tracing is a computer graphics Monte Carlo method of rendering images of three-dimensional scenes such that the global illumination is faithful to reality. Fundamentally, the algorithm is integrating over all the illuminance arriving t ...
**
Photon mapping
**
Radiosity
**
Ray tracing
*
Hidden-surface removal or
Visual surface determination
**
Newell's algorithm: eliminate polygon cycles in the depth sorting required in hidden-surface removal
**
Painter's algorithm: detects visible parts of a 3-dimensional scenery
**
Scanline rendering: constructs an image by moving an imaginary line over the image
**
Warnock algorithm
*
Line Drawing: graphical algorithm for approximating a line segment on discrete graphical media.
**
Bresenham's line algorithm: plots points of a 2-dimensional array to form a straight line between 2 specified points (uses decision variables)
**
DDA line algorithm: plots points of a 2-dimensional array to form a straight line between 2 specified points (uses floating-point math)
**
Xiaolin Wu's line algorithm: algorithm for line antialiasing.
*
Midpoint circle algorithm: an algorithm used to determine the points needed for drawing a circle
*
Ramer–Douglas–Peucker algorithm: Given a 'curve' composed of line segments to find a curve not too dissimilar but that has fewer points
*
Shading
Shading refers to the depiction of depth perception in 3D models (within the field of 3D computer graphics) or illustrations (in visual art) by varying the level of darkness. Shading tries to approximate local behavior of light on the object ...
**
Gouraud shading: an algorithm to simulate the differing effects of light and colour across the surface of an object in 3D computer graphics
**
Phong shading: an algorithm to interpolate surface normal-vectors for surface shading in 3D computer graphics
*
Slerp
In computer graphics, Slerp is shorthand for spherical linear interpolation, introduced by Ken Shoemake in the context of quaternion interpolation for the purpose of animation, animating 3D rotation. It refers to constant-speed motion along a unit ...
(spherical linear interpolation): quaternion interpolation for the purpose of animating 3D rotation
*
Summed area table (also known as an integral image): an algorithm for computing the sum of values in a rectangular subset of a grid in constant time
Cryptography
*
Asymmetric (public key) encryption:
**
ElGamal
In cryptography, the ElGamal encryption system is an asymmetric key encryption algorithm for public-key cryptography which is based on the Diffie–Hellman key exchange. It was described by Taher Elgamal in 1985. ElGamal encryption is used in t ...
**
Elliptic curve cryptography
**
MAE1
**
NTRUEncrypt
**
RSA
RSA may refer to:
Organizations Academia and education
* Rabbinical Seminary of America, a yeshiva in New York City
*Regional Science Association International (formerly the Regional Science Association), a US-based learned society
*Renaissance S ...
*
Digital signature
A digital signature is a mathematical scheme for verifying the authenticity of digital messages or documents. A valid digital signature, where the prerequisites are satisfied, gives a recipient very high confidence that the message was created b ...
s (asymmetric authentication):
**
DSA, and its variants:
***
ECDSA an
Deterministic ECDSA***
EdDSA (Ed25519)
**
RSA
RSA may refer to:
Organizations Academia and education
* Rabbinical Seminary of America, a yeshiva in New York City
*Regional Science Association International (formerly the Regional Science Association), a US-based learned society
*Renaissance S ...
*
Cryptographic hash function
A cryptographic hash function (CHF) is a hash algorithm (a map of an arbitrary binary string to a binary string with fixed size of n bits) that has special properties desirable for cryptography:
* the probability of a particular n-bit output ...
s (see also the section on message authentication codes):
**
BLAKE
**
MD5 – Note that there is now a method of generating collisions for MD5
**
RIPEMD-160
RIPEMD (RIPE Message Digest) is a family of cryptographic hash functions developed in 1992 (the original RIPEMD) and 1996 (other variants). There are five functions in the family: RIPEMD, RIPEMD-128, RIPEMD-160, RIPEMD-256, and RIPEMD-320, of w ...
**
SHA-1
In cryptography, SHA-1 (Secure Hash Algorithm 1) is a cryptographically broken but still widely used hash function which takes an input and produces a 160-bit (20- byte) hash value known as a message digest – typically rendered as 40 hexadec ...
– Note that there is now a method of generating collisions for SHA-1
**
SHA-2
SHA-2 (Secure Hash Algorithm 2) is a set of cryptographic hash functions designed by the United States National Security Agency (NSA) and first published in 2001. They are built using the Merkle–Damgård construction, from a one-way compressi ...
(SHA-224, SHA-256, SHA-384, SHA-512)
**
SHA-3 (SHA3-224, SHA3-256, SHA3-384, SHA3-512, SHAKE128, SHAKE256)
**
Tiger
The tiger (''Panthera tigris'') is the largest living cat species and a member of the genus '' Panthera''. It is most recognisable for its dark vertical stripes on orange fur with a white underside. An apex predator, it primarily preys on ...
(TTH), usually used in
Tiger tree hashes
**
WHIRLPOOL
*
Cryptographically secure pseudo-random number generators
**
Blum Blum Shub – based on the hardness of
factorization
**
Fortuna
Fortuna ( la, Fortūna, equivalent to the Greek goddess Tyche) is the goddess of fortune and the personification of luck in Roman religion who, largely thanks to the Late Antique author Boethius, remained popular through the Middle Ages until ...
, intended as an improvement on
Yarrow algorithm
**
Linear-feedback shift register (note: many LFSR-based algorithms are weak or have been broken)
**
Yarrow algorithm
*
Key exchange
**
Diffie–Hellman key exchange
Diffie–Hellman key exchangeSynonyms of Diffie–Hellman key exchange include:
* Diffie–Hellman–Merkle key exchange
* Diffie–Hellman key agreement
* Diffie–Hellman key establishment
* Diffie–Hellman key negotiation
* Exponential key exc ...
**
Elliptic-curve Diffie–Hellman (ECDH)
*
Key derivation functions, often used for
password hashing and
key stretching
**
bcrypt
bcrypt is a password-hashing function designed by Niels Provos and David Mazières, based on the Blowfish cipher and presented at USENIX in 1999. Besides incorporating a salt to protect against rainbow table attacks, bcrypt is an adaptive ...
**
PBKDF2
In cryptography, PBKDF1 and PBKDF2 (Password-Based Key Derivation Function 1 and 2) are key derivation functions with a sliding computational cost, used to reduce vulnerabilities of brute-force attacks.
PBKDF2 is part of RSA Laboratories' Pu ...
**
scrypt
In cryptography, scrypt (pronounced "ess crypt") is a password-based key derivation function created by Colin Percival in March 2009, originally for the Tarsnap online backup service. The algorithm was specifically designed to make it costl ...
**
Argon2
*
Message authentication codes (symmetric authentication algorithms, which take a key as a parameter):
**
HMAC: keyed-hash message authentication
**
Poly1305
**
SipHash
*
Secret sharing, Secret Splitting, Key Splitting, M of N algorithms
** Blakey's Scheme
**
Shamir's Scheme
*
Symmetric (secret key) encryption:
**
Advanced Encryption Standard
The Advanced Encryption Standard (AES), also known by its original name Rijndael (), is a specification for the encryption of electronic data established by the U.S. National Institute of Standards and Technology (NIST) in 2001.
AES is a variant ...
(AES), winner of
NIST
The National Institute of Standards and Technology (NIST) is an agency of the United States Department of Commerce whose mission is to promote American innovation and industrial competitiveness. NIST's activities are organized into physical sc ...
competition, also known as
Rijndael
**
Blowfish
**
Twofish
In cryptography, Twofish is a symmetric key block cipher with a block size of 128 bits and key sizes up to 256 bits. It was one of the five finalists of the Advanced Encryption Standard contest, but it was not selected for standardization. Two ...
**
Threefish
**
Data Encryption Standard
The Data Encryption Standard (DES ) is a symmetric-key algorithm for the encryption of digital data. Although its short key length of 56 bits makes it too insecure for modern applications, it has been highly influential in the advancement of cr ...
(DES), sometimes DE Algorithm, winner of NBS selection competition, replaced by AES for most purposes
**
IDEA
In common usage and in philosophy, ideas are the results of thought. Also in philosophy, ideas can also be mental representational images of some object. Many philosophers have considered ideas to be a fundamental ontological category of be ...
**
RC4 (cipher)
**
Tiny Encryption Algorithm (TEA)
**
Salsa20
Salsa20 and the closely related ChaCha are stream ciphers developed by Daniel J. Bernstein. Salsa20, the original cipher, was designed in 2005, then later submitted to the eSTREAM European Union cryptographic validation process by Bernstein. Ch ...
, and its updated variant
ChaCha20
*
Post-quantum cryptography
*
Proof-of-work algorithms
Digital logic
* Boolean minimization
**
Quine–McCluskey algorithm: also called as Q-M algorithm, programmable method for simplifying the boolean equations
**
Petrick's method: another algorithm for boolean simplification
**
Espresso heuristic logic minimizer: a fast algorithm for boolean function minimization
Machine learning and statistical classification
*
ALOPEX: a correlation-based
machine-learning algorithm
*
Association rule learning: discover interesting relations between variables, used in
data mining
**
Apriori algorithm
AprioriRakesh Agrawal and Ramakrishnan SrikanFast algorithms for mining association rules Proceedings of the 20th International Conference on Very Large Data Bases, VLDB, pages 487-499, Santiago, Chile, September 1994. is an algorithm for frequent ...
**
Eclat algorithm
Association rule learning is a rule-based machine learning method for discovering interesting relations between variables in large databases. It is intended to identify strong rules discovered in databases using some measures of interestingness.Pi ...
**
FP-growth algorithm
**
One-attribute rule
Association rule learning is a rule-based machine learning method for discovering interesting relations between variables in large databases. It is intended to identify strong rules discovered in databases using some measures of interestingness.Pi ...
**
Zero-attribute rule
*
Boosting (meta-algorithm)
In machine learning, boosting is an ensemble meta-algorithm for primarily reducing bias, and also variance in supervised learning, and a family of machine learning algorithms that convert weak learners to strong ones. Boosting is based on the q ...
: Use many weak learners to boost effectiveness
**
AdaBoost
AdaBoost, short for ''Adaptive Boosting'', is a statistical classification meta-algorithm formulated by Yoav Freund and Robert Schapire in 1995, who won the 2003 Gödel Prize for their work. It can be used in conjunction with many other types ...
: adaptive boosting
**
BrownBoost BrownBoost is a boosting algorithm that may be robust to noisy datasets. BrownBoost is an adaptive version of the boost by majority algorithm. As is true for all boosting algorithms, BrownBoost is used in conjunction with other machine learning ...
: a boosting algorithm that may be robust to noisy datasets
**
LogitBoost:
logistic regression
In statistics, the logistic model (or logit model) is a statistical model that models the probability of an event taking place by having the log-odds for the event be a linear function (calculus), linear combination of one or more independent var ...
boosting
**
LPBoost:
linear programming
Linear programming (LP), also called linear optimization, is a method to achieve the best outcome (such as maximum profit or lowest cost) in a mathematical model whose requirements are represented by linear relationships. Linear programming is ...
boosting
*
Bootstrap aggregating
Bootstrap aggregating, also called bagging (from bootstrap aggregating), is a machine learning ensemble meta-algorithm designed to improve the stability and accuracy of machine learning algorithms used in statistical classification and regress ...
(bagging): technique to improve stability and classification accuracy
*
Computer Vision
Computer vision is an Interdisciplinarity, interdisciplinary scientific field that deals with how computers can gain high-level understanding from digital images or videos. From the perspective of engineering, it seeks to understand and automate t ...
**
Grabcut based on
Graph cuts
*
Decision Trees
**
C4.5 algorithm
C4.5 is an algorithm used to generate a decision tree developed by Ross Quinlan. C4.5 is an extension of Quinlan's earlier ID3 algorithm. The decision trees generated by C4.5 can be used for classification, and for this reason, C4.5 is often referr ...
: an extension to ID3
**
ID3 algorithm
In decision tree learning, ID3 (Iterative Dichotomiser 3) is an algorithm invented by Ross QuinlanQuinlan, J. R. 1986. Induction of Decision Trees. Mach. Learn. 1, 1 (Mar. 1986), 81–106 used to generate a decision tree from a dataset. ID3 is the ...
(Iterative Dichotomiser 3): use heuristic to generate small decision trees
*
Clustering: a class of
unsupervised learning
Unsupervised learning is a type of algorithm that learns patterns from untagged data. The hope is that through mimicry, which is an important mode of learning in people, the machine is forced to build a concise representation of its world and t ...
algorithms for grouping and bucketing related input vector.
**
k-nearest neighbors
In statistics, the ''k''-nearest neighbors algorithm (''k''-NN) is a non-parametric supervised learning method first developed by Evelyn Fix and Joseph Hodges in 1951, and later expanded by Thomas Cover. It is used for classification and regre ...
(k-NN): a method for classifying objects based on closest training examples in the
feature space
*
Linde–Buzo–Gray algorithm: a vector quantization algorithm used to derive a good codebook
*
Locality-sensitive hashing (LSH): a method of performing probabilistic dimension reduction of high-dimensional data
*
Neural Network
A neural network is a network or neural circuit, circuit of biological neurons, or, in a modern sense, an artificial neural network, composed of artificial neurons or nodes. Thus, a neural network is either a biological neural network, made up ...
**
Backpropagation: a
supervised learning method which requires a teacher that knows, or can calculate, the desired output for any given input
**
Hopfield net: a
Recurrent neural network in which all connections are symmetric
**
Perceptron: the simplest kind of feedforward neural network: a
linear classifier.
** Pulse-coupled neural networks (PCNN): Artificial neural network, Neural models proposed by modeling a cat's visual cortex and developed for high-performance Bionics, biomimetic image processing.
** Radial basis function network: an artificial neural network that uses radial basis functions as activation functions
** Self-organizing map: an unsupervised network that produces a low-dimensional representation of the input space of the training samples
* Random forest: classify using many decision trees
* Reinforcement learning:
** Q-learning: learns an action-value function that gives the expected utility of taking a given action in a given state and following a fixed policy thereafter
** State–action–reward–state–action, State–Action–Reward–State–Action (SARSA): learn a Markov decision process policy
** Temporal difference learning
* relevance vector machine, Relevance-Vector Machine (RVM): similar to SVM, but provides probabilistic classification
* Supervised learning: Learning by examples (labelled data-set split into training-set and test-set)
* Support vector machine, Support Vector Machine (SVM): a set of methods which divide multidimensional data by finding a dividing hyperplane with the maximum margin between the two sets
** Structured SVM: allows training of a classifier for general structured output labels.
* Winnow algorithm: related to the perceptron, but uses a Multiplicative Weight Update Method, multiplicative weight-update scheme
Programming language theory
* C3 linearization: an algorithm used primarily to obtain a consistent linearization of a multiple inheritance hierarchy in object-oriented programming
* Chaitin's algorithm: a bottom-up, graph coloring register allocation algorithm that uses cost/degree as its spill metric
* Hindley-Milner type inference, Hindley–Milner type inference algorithm
* Rete algorithm: an efficient pattern matching algorithm for implementing Start symbol (formal languages), production rule systems
* Sethi-Ullman algorithm: generates optimal code for arithmetic expressions
Parsing
* CYK algorithm: an O(n
3) algorithm for parsing context-free grammars in Chomsky normal form
* Earley parser: another O(n
3) algorithm for parsing any context-free grammar
* GLR parser: an algorithm for parsing any context-free grammar by Masaru Tomita. It is tuned for deterministic grammars, on which it performs almost linear time and O(n
3) in worst case.
* Inside-outside algorithm: an O(n
3) algorithm for re-estimating production probabilities in probabilistic context-free grammars
* LL parser: a relatively simple linear time parsing algorithm for a limited class of context-free grammars
* LR parser: A more complex linear time parsing algorithm for a larger class of context-free grammars. Variants:
** Canonical LR parser
** Look-ahead LR parser, LALR (look-ahead LR) parser
** Operator-precedence parser
** Simple LR parser, SLR (Simple LR) parser
** Simple precedence parser
* Packrat parser: a linear time parsing algorithm supporting some context-free grammars and parsing expression grammars
* Recursive descent parser: a top-down parsing, top-down parser suitable for LL(''k'') grammars
* Shunting-yard algorithm: converts an infix-notation math expression to postfix
* Pratt parser
* Lexical analysis
Quantum algorithms
* Deutsch–Jozsa algorithm: criterion of balance for Boolean function
* Grover's algorithm: provides quadratic speedup for many search problems
*
Shor's algorithm
Shor's algorithm is a quantum computer algorithm for finding the prime factors of an integer. It was developed in 1994 by the American mathematician Peter Shor.
On a quantum computer, to factor an integer N , Shor's algorithm runs in polynomial ...
: provides exponential function, exponential speedup (relative to currently known non-quantum algorithms) for factoring a number
* Simon's algorithm: provides a provably exponential function, exponential speedup (relative to any non-quantum algorithm) for a black-box problem
Theory of computation and automata
* DFA minimization#Hopcroft's algorithm, Hopcroft's algorithm, DFA minimization#Moore's algorithm, Moore's algorithm, and DFA minimization#Brzozowski's algorithm, Brzozowski's algorithm: algorithms for DFA minimization, minimizing the number of states in a deterministic finite automaton
* Powerset construction: algorithm to convert nondeterministic automaton to deterministic automaton.
* Tarski–Kuratowski algorithm: a non-deterministic algorithm which provides an upper bound for the complexity of formulas in the arithmetical hierarchy and analytical hierarchy
Information theory and signal processing
Coding theory
Error detection and correction
* BCH Codes
** Berlekamp–Massey algorithm
** Peterson–Gorenstein–Zierler algorithm
** Reed–Solomon error correction
* BCJR algorithm: decoding of error correcting codes defined on trellises (principally convolutional codes)
* Forward error correction
* Gray code
* Hamming codes
** Hamming(7,4): a Hamming code that encodes 4 bits of data into 7 bits by adding 3 parity bits
**
Hamming distance
In information theory, the Hamming distance between two strings of equal length is the number of positions at which the corresponding symbols are different. In other words, it measures the minimum number of ''substitutions'' required to chang ...
: sum number of positions which are different
** Hamming weight (population count): find the number of 1 bits in a binary word
* Redundancy checks
** Adler-32
** Cyclic redundancy check
** Damm algorithm
** Fletcher's checksum
** Longitudinal redundancy check (LRC)
** Luhn algorithm: a method of validating identification numbers
** Luhn mod N algorithm: extension of Luhn to non-numeric characters
** Parity bit, Parity: simple/fast error detection technique
** Verhoeff algorithm
Lossless compression algorithms
* Burrows–Wheeler transform: preprocessing useful for improving Lossless data compression, lossless compression
* Context tree weighting
* Delta encoding: aid to compression of data in which sequential data occurs frequently
* Dynamic Markov compression: Compression using predictive arithmetic coding
* Dictionary coders
** Byte pair encoding (BPE)
** Deflate
** Lempel–Ziv
*** LZ77 and LZ78
*** LZJB, Lempel–Ziv Jeff Bonwick (LZJB)
*** Lempel–Ziv–Markov chain algorithm (LZMA)
*** Lempel–Ziv–Oberhumer (LZO): speed oriented
*** Lempel–Ziv–Stac (LZS)
*** Lempel–Ziv–Storer–Szymanski (LZSS)
*** Lempel–Ziv–Welch (LZW)
*** LZWL: syllable-based variant
*** LZX
*** LZRW, Lempel–Ziv Ross Williams (LZRW)
* Entropy encoding: coding scheme that assigns codes to symbols so as to match code lengths with the probabilities of the symbols
** Arithmetic coding: advanced entropy coding
*** Range encoding: same as arithmetic coding, but looked at in a slightly different way
** Huffman coding: simple lossless compression taking advantage of relative character frequencies
*** Adaptive Huffman coding: adaptive coding technique based on Huffman coding
*** Package-merge algorithm: Optimizes Huffman coding subject to a length restriction on code strings
** Shannon–Fano coding
** Shannon–Fano–Elias coding: precursor to arithmetic encoding
* Entropy encoding, Entropy coding with known entropy characteristics
** Golomb coding: form of entropy coding that is optimal for alphabets following geometric distributions
** Rice coding: form of entropy coding that is optimal for alphabets following geometric distributions
** Truncated binary encoding
** Unary coding: code that represents a number n with n ones followed by a zero
** Universal code (data compression), Universal codes: encodes positive integers into binary code words
*** Elias Elias delta coding, delta, Elias gamma coding, gamma, and Elias omega coding, omega coding
*** Exponential-Golomb coding
*** Fibonacci coding
*** Levenshtein coding
* FELICS, Fast Efficient & Lossless Image Compression System (FELICS): a lossless image compression algorithm
* Incremental encoding: delta encoding applied to sequences of strings
* PPM compression algorithm, Prediction by partial matching (PPM): an adaptive statistical data compression technique based on context modeling and prediction
* Run-length encoding: lossless data compression taking advantage of strings of repeated characters
* SEQUITUR algorithm: lossless compression by incremental grammar inference on a string
Lossy compression algorithms
* 3Dc: a lossy data compression algorithm for Normal mapping, normal maps
* Audio data compression, Audio and speech encoding, Speech compression
** A-law algorithm: standard companding algorithm
** Code-excited linear prediction (CELP): low bit-rate speech compression
** Linear predictive coding (LPC): lossy compression by representing the spectral envelope of a digital signal of speech in compressed form
** Mu-law algorithm: standard analog signal compression or companding algorithm
** Warped Linear Predictive Coding (WLPC)
* Image compression
** Block Truncation Coding (BTC): a type of lossy image compression technique for greyscale images
** Embedded Zerotree Wavelet (EZW)
** Fast Cosine Transform, Fast Cosine Transform algorithms (FCT algorithms): computes Discrete Cosine Transform (DCT) efficiently
** Fractal compression: method used to compress images using fractals
** Set Partitioning in Hierarchical Trees (SPIHT)
** Wavelet compression: form of data compression well suited for image compression (sometimes also video compression and audio compression)
* Transform coding: type of data compression for "natural" data like audio signals or photographic images
* Video compression
* Vector quantization: technique often used in lossy data compression
Digital signal processing
* Adaptive-additive algorithm (AA algorithm): find the spatial frequency phase of an observed wave source
* Discrete Fourier transform: determines the frequencies contained in a (segment of a) signal
** Bluestein's FFT algorithm
** Bruun's FFT algorithm
** Cooley–Tukey FFT algorithm
** Fast Fourier transform
** Prime-factor FFT algorithm
** Rader's FFT algorithm
* Fast folding algorithm: an efficient algorithm for the detection of approximately periodic events within time series data
* Gerchberg–Saxton algorithm: Phase retrieval algorithm for optical planes
* Goertzel algorithm: identify a particular frequency component in a signal. Can be used for DTMF digit decoding.
* Karplus-Strong string synthesis: physical modelling synthesis to simulate the sound of a hammered or plucked string or some types of percussion
Image processing
* Contrast Enhancement
** Histogram equalization: use histogram to improve image contrast
** Adaptive histogram equalization: histogram equalization which adapts to local changes in contrast
* Connected-component labeling: find and label disjoint regions
* Dithering and half-toning
** Error diffusion
** Floyd–Steinberg dithering
** Ordered dithering
** Riemersma dithering
* Elser difference-map algorithm: a search algorithm for general constraint satisfaction problems. Originally used for X-ray crystallography, X-Ray diffraction microscopy
* Feature detection (computer vision), Feature detection
** Canny edge detector: detect a wide range of edges in images
** Generalised Hough transform
** Hough transform
** Marr–Hildreth algorithm: an early edge detection algorithm
** Scale-invariant feature transform, SIFT (Scale-invariant feature transform): is an algorithm to detect and describe local features in images.
** : is a robust local feature detector, first presented by Herbert Bay et al. in 2006, that can be used in computer vision tasks like object recognition or 3D reconstruction. It is partly inspired by the SIFT descriptor. The standard version of SURF is several times faster than SIFT and claimed by its authors to be more robust against different image transformations than SIFT.
* Richardson–Lucy deconvolution: image de-blurring algorithm
* Blind deconvolution: image de-blurring algorithm when point spread function is unknown.
* Median filtering
* Seam carving: content-aware image resizing algorithm
* Segmentation (image processing), Segmentation: partition a digital image into two or more regions
** GrowCut algorithm: an interactive segmentation algorithm
** Random walker algorithm
** Region growing
** Watershed (algorithm), Watershed transformation: a class of algorithms based on the watershed analogy
Software engineering
* Cache algorithms
* CHS conversion: converting between disk addressing systems
* Double dabble: Convert binary numbers to BCD
* Hash Function: convert a large, possibly variable-sized amount of data into a small datum, usually a single integer that may serve as an index into an array
** Fowler–Noll–Vo hash function: fast with low collision rate
** Pearson hashing: computes 8 bit value only, optimized for 8 bit computers
** Zobrist hashing: used in the implementation of transposition tables
* Unicode Collation Algorithm
* Xor swap algorithm: swaps the values of two variables without using a buffer
Database algorithms
* Algorithms for Recovery and Isolation Exploiting Semantics (ARIES): transaction (database), transaction recovery
* Join (SQL), Join algorithms
** Block nested loop
** Hash join
** Nested loop join
** Sort-Merge Join
Distributed systems algorithms
* Clock synchronization
** Berkeley algorithm
** Cristian's algorithm
** Intersection algorithm
** Marzullo's algorithm
* Consensus (computer science): agreeing on a single value or history among unreliable processors
** Chandra–Toueg consensus algorithm
** Paxos algorithm
** Raft (computer science)
* Detection of Process Termination
** Dijkstra-Scholten algorithm
** Huang's algorithm
* Lamport ordering: a partial ordering of events based on the ''happened-before'' relation
* Leader election: a method for dynamically selecting a coordinator
** Bully algorithm
* Mutual exclusion
** Lamport's Distributed Mutual Exclusion Algorithm
** Naimi-Trehel's log(n) Algorithm
** Maekawa's algorithm, Maekawa's Algorithm
** Raymond's algorithm, Raymond's Algorithm
** Ricart–Agrawala algorithm, Ricart–Agrawala Algorithm
* Snapshot algorithm: record a consistent global state for an asynchronous system
** Chandy–Lamport algorithm
* Vector clocks: generate a partial ordering of events in a distributed system and detect causality violations
Memory allocation and deallocation algorithms
* Buddy memory allocation: an algorithm to allocate memory such with less fragmentation
* Garbage collection (computer science), Garbage collectors
** Cheney's algorithm: an improvement on the Semi-space collector
** garbage collection (computer science), Generational garbage collector: Fast garbage collectors that segregate memory by age
** Mark-compact algorithm: a combination of the Mark and sweep, mark-sweep algorithm and Cheney's algorithm, Cheney's copying algorithm
** Mark and sweep
** Semi-space collector: an early copying collector
* Reference counting
Networking
* Karn's algorithm: addresses the problem of getting accurate estimates of the round-trip time for messages when using TCP
* Luleå algorithm: a technique for storing and searching internet routing tables efficiently
* Network congestion
** Exponential backoff
** Nagle's algorithm: improve the efficiency of TCP/IP networks by coalescing packets
** Truncated binary exponential backoff
Operating systems algorithms
* Banker's algorithm: algorithm used for deadlock avoidance
* Page replacement algorithms: for selecting the victim page under low memory conditions
** Adaptive replacement cache: better performance than LRU
** Clock with Adaptive Replacement (CAR): a page replacement algorithm with performance comparable to adaptive replacement cache
Process synchronization
* Dekker's algorithm
* Lamport's Bakery algorithm
* Peterson's algorithm
Scheduling
* Earliest deadline first scheduling
* Fair-share scheduling
* Least slack time scheduling
* List scheduling
* Multi level feedback queue
* Rate-monotonic scheduling
* Round-robin scheduling
* Shortest job next
* Shortest remaining time
* Top-nodes algorithm: resource calendar management
I/O scheduling
Disk scheduling
* Elevator algorithm: Disk scheduling algorithm that works like an elevator.
* Shortest seek first: Disk scheduling algorithm to reduce seek time.
Other
*'For You' algorithm: a proprietary algorithm developed by the social media network TikTok, Tik-Tok. Uploaded videos are released first to a selection of users who have been identified by the algorithm as being likely to engage with the video, based on their previous web-site viewing patterns.
TikTok Finally Explains How the ‘For You’ Algorithm Works
''Wired'', published 18 June 2020, accessed 30 January 2022
See also
* List of data structures
* List of machine learning algorithms
* List of pathfinding algorithms
* List of algorithm general topics
* List of terms relating to algorithms and data structures
* Heuristic
References
{{Reflist
Algorithms, *
Mathematics-related lists, Algorithms
Optimization algorithms and methods,