List Of Root Finding Algorithms
   HOME

TheInfoList



OR:

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 Computational problem, problems or to perform a computation. Algorithms are used as specificat ...
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 In computer science, cycle detection or cycle finding is the algorithmic problem of finding a cycle in a sequence of iterated function values. For any function that maps a finite set to itself, and any initial value in , the sequence of itera ...
: 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 Davi ...
: 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 In graph theory, graph coloring is a special case of graph labeling; it is an assignment of labels traditionally called "colors" to elements of a Graph (discrete mathematics), graph subject to certain constraints. In its simplest form, it is a w ...
: 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 ad ...
*
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 "Hun ...
: 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 In computer science, a topological sort or topological ordering of a directed graph is a linear ordering of its vertices such that for every directed edge ''uv'' from vertex ''u'' to vertex ''v'', ''u'' comes before ''v'' in the ordering. For ins ...
: 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 **** TrustRank * Flow networks ** Dinic's algorithm: is a strongly polynomial algorithm for computing the maximum flow in a flow network. ** Edmonds–Karp algorithm: implementation of Ford–Fulkerson ** Ford–Fulkerson algorithm: computes the maximum flow in a graph **
Karger's algorithm In computer science and graph theory, Karger's algorithm is a randomized algorithm to compute a minimum cut of a connected graph. It was invented by David Karger and first published in 1993. The idea of the algorithm is based on the concept of c ...
: a Monte Carlo method to compute the
minimum cut In graph theory, a minimum cut or min-cut of a graph is a cut (a partition of the vertices of a graph into two disjoint subsets) that is minimal in some metric. Variations of the minimum cut problem consider weighted graphs, directed graphs, term ...
of a connected graph ** Push–relabel algorithm: computes a maximum flow in a graph


Routing for graphs

*
Edmonds' algorithm In graph theory, Edmonds' algorithm or Chu–Liu/Edmonds' algorithm is an algorithm for finding a spanning arborescence of minimum weight (sometimes called an ''optimum branching''). It is the directed analog of the minimum spanning tree probl ...
(also known as Chu–Liu/Edmonds' algorithm): find maximum or minimum branchings *
Euclidean minimum spanning tree A Euclidean minimum spanning tree of a finite set of points in the Euclidean plane or higher-dimensional Euclidean space connects the points by a system of line segments with the points as endpoints, minimizing the total length of the segments. ...
: algorithms for computing the minimum spanning tree of a set of points in the plane * Longest path problem: 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 i ...
** Prim's algorithm ** Reverse-delete algorithm * Nonblocking minimal spanning switch say, for a
telephone exchange A 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 syst ...
*
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 tw ...
**
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 is ...
: computes shortest paths in a weighted graph (where some of the edge weights may be negative) ** Dijkstra's algorithm: 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 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 tw ...
problem in a weighted, directed graph **
Johnson's algorithm Johnson's algorithm is a way to find the shortest paths between all pairs of vertices in an edge-weighted directed graph. It allows some of the edge weights to be negative numbers, but no negative-weight cycles may exist. It works by using ...
: 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 The nearest neighbour algorithm was one of the first algorithms used to solve the travelling salesman problem approximately. In that problem, the salesman starts at a random city and repeatedly visits the nearest city until all have been visited. ...
* 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 Beam stack search is a search algorithm that combines chronological backtracking (that is, depth-first search) with beam search and is similar to depth-first beam search.Furcy, David. Koenig, Sven. "Limited Discrepancy Beam Search". 2005. Both sea ...
: 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 Bidirectional search is a graph search algorithm that finds a shortest path from an initial vertex to a goal vertex in a directed graph. It runs two simultaneous searches: one forward from the initial state, and one backward from the goal, stopping ...
: find the shortest path from an initial vertex to a goal vertex in a directed graph * Breadth-first search: traverses a graph level by level *
Brute-force search In computer science, brute-force search or exhaustive search, also known as generate and test, is a very general problem-solving technique and algorithmic paradigm that consists of systematically enumerating all possible candidates for the soluti ...
: an exhaustive and reliable search method, but computationally inefficient in many applications * D*: an
incremental heuristic search Incremental heuristic search algorithms combine both incremental and heuristic search to speed up searches of sequences of similar search problems, which is important in domains that are only incompletely known or change dynamically. Incremental ...
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 alon ...
: traverses a graph branch by branch * Dijkstra's algorithm: 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 In computer science, jump point search (JPS) is an optimization to the A* search algorithm for uniform-cost grids. It reduces symmetries in the search procedure by means of graph pruning, eliminating certain nodes in the grid based on assumptions t ...
: an optimization to A* which may reduce computation time by an order of magnitude using further heuristics *
Lexicographic breadth-first search In computer science, lexicographic breadth-first search or Lex-BFS is a linear time algorithm for ordering the vertices of a graph. The algorithm is different from a breadth-first search, but it produces an ordering that is consistent with breadt ...
(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 clique In the mathematical area of graph theory, a clique ( or ) is a subset of vertices of an undirected graph such that every two distinct vertices in the clique are adjacent. That is, a clique of a graph G is an induced subgraph of G that is comple ...
s 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 algorit ...
: find a maximum clique in an undirected graph *
Strongly connected components In the mathematical theory of directed graphs, a graph is said to be strongly connected if every vertex is reachable from every other vertex. The strongly connected components of an arbitrary directed graph form a partition into subgraphs that a ...
**
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 tr ...
**
Kosaraju's algorithm In computer science, Kosaraju-Sharir's algorithm (also known as Kosaraju's algorithm) is a linear time algorithm to find the strongly connected components of a directed graph. Aho, Hopcroft and Ullman credit it to S. Rao Kosaraju and Micha Sha ...
**
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 In theoretical computer science, the subgraph isomorphism problem is a computational task in which two graphs ''G'' and ''H'' are given as input, and one must determine whether ''G'' contains a subgraph that is isomorphic to ''H''. Subgraph isomorp ...


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 algorithm A phonetic algorithm is an algorithm for indexing of words by their pronunciation. Most phonetic algorithms were developed for English and are not useful for indexing words in other languages. Because English spelling varies significantly depending ...
s **
Daitch–Mokotoff Soundex Daitch–Mokotoff Soundex (D–M Soundex) is a phonetic algorithm invented in 1985 by Jewish genealogists Gary Mokotoff and Randy Daitch. It is a refinement of the Russell and American Soundex algorithms designed to allow greater accuracy in mat ...
: a
Soundex Soundex is a phonetic algorithm for indexing names by sound, as pronounced in English. The goal is for homophones to be encoded to the same representation so that they can be matched despite minor differences in spelling. The algorithm mainly enc ...
refinement which allows matching of Slavic and Germanic surnames **
Double Metaphone Metaphone is a phonetic algorithm, published by Lawrence Philips in 1990, for indexing words by their English pronunciation. It fundamentally improves on the Soundex algorithm by using information about variations and inconsistencies in English s ...
: 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 A phonetic algorithm is an algorithm for indexing of words by their pronunciation. Most phonetic algorithms were developed for English and are not useful for indexing words in other languages. Because English spelling varies significantly depending ...
, improves on
Soundex Soundex is a phonetic algorithm for indexing names by sound, as pronounced in English. The goal is for homophones to be encoded to the same representation so that they can be matched despite minor differences in spelling. The algorithm mainly enc ...
**
Soundex Soundex is a phonetic algorithm for indexing names by sound, as pronounced in English. The goal is for homophones to be encoded to the same representation so that they can be matched despite minor differences in spelling. The algorithm mainly enc ...
: a phonetic algorithm for indexing names by sound, as pronounced in English * String metrics: computes a similarity or dissimilarity (distance) score between two pairs of text strings ** Damerau–Levenshtein distance: 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 The Jaccard index, also known as the Jaccard similarity coefficient, is a statistic used for gauging the similarity and diversity of sample sets. It was developed by Grove Karl Gilbert in 1884 as his ratio of verification (v) and now is freque ...
** Hamming distance: 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 character ...
: search for text when the exact syntax or spelling of the target object is not precisely known


Selection algorithms

*
Quickselect In computer science, quickselect is a selection algorithm to find the ''k''th smallest element in an unordered list. It is also known as the kth order statistics . It is related to the quicksort sorting algorithm. Like quicksort, it was devel ...
*
Introselect In computer science, introselect (short for "introspective selection") is a selection algorithm that is a hybrid of quickselect and median of medians which has fast average performance and optimal worst-case performance. Introselect is related t ...


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 In computer science, a selection algorithm is an algorithm for finding the ''k''th smallest number in a list or array; such a number is called the ''k''th ''order statistic''. This includes the cases of finding the minimum, maximum, and median el ...
: finds the ''k''th largest item in a sequence *
Ternary search A ternary search algorithm is a technique in computer science for finding the minimum or maximum of a unimodal function. A ternary search determines either that the minimum or maximum cannot be in the first third of the domain or that it cannot be ...
: a technique for finding the minimum or maximum of a function that is either strictly increasing and then strictly decreasing or vice versa *
Sorted list In computer science, a sorting algorithm is an algorithm that puts elements of a list into an order. The most frequently used orders are numerical order and lexicographical order, and either ascending or descending. Efficient sorting is import ...
s ** Binary search algorithm: locates an item in a sorted sequence **
Fibonacci search technique In computer science, the Fibonacci search technique is a method of searching a sorted array using a divide and conquer algorithm that narrows down possible locations with the aid of Fibonacci numbers. Note that the running time analysis is this ...
: search a sorted sequence using a divide and conquer algorithm that narrows down possible locations with the aid of Fibonacci numbers **
Jump search In computer science, a jump search or block search refers to a search algorithm for ordered lists. It works by first checking all items ''L'km'', where k \in \mathbb and ''m'' is the block size, until an item is found that is larger than the se ...
(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 The Fisher–Yates shuffle is an algorithm for generating a random permutation of a finite sequence—in plain terms, the algorithm shuffling, shuffles the sequence. The algorithm effectively puts all the elements into a hat; it continually deter ...
(also known as the Knuth shuffle): randomly shuffle a finite set *
Schensted algorithm Craige Schensted (), who formally changed his name to Ea Ea, was an American physicist and mathematician who first formulated the insertion algorithm that defines the Robinson–Schensted correspondence. Under a different form, that correspondenc ...
: constructs a pair of Young tableaux from a permutation *
Steinhaus–Johnson–Trotter algorithm The Steinhaus–Johnson–Trotter algorithm or Johnson–Trotter algorithm, also called plain changes, is an algorithm named after Hugo Steinhaus, Selmer M. Johnson and Hale F. Trotter that generates all of the permutations of n elements. E ...
(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 In bioinformatics, a sequence alignment is a way of arranging the sequences of DNA, RNA, or protein to identify regions of similarity that may be a consequence of functional, structural, or evolutionary relationships between the sequences. Alig ...
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 **
Odd–even sort In computing, an odd–even sort or odd–even transposition sort (also known as brick sort or parity sort) is a relatively simple sorting algorithm, developed originally for use on parallel processors with local interconnections. It is a compar ...
** Quicksort: 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 **
Stooge sort Stooge sort is a recursive sorting algorithm. It is notable for its exceptionally bad time complexity of . The running time of the algorithm is thus slower compared to reasonable sorting algorithms, and is slower than bubble sort, a canonical exa ...
* Hybrid **
Flashsort Flashsort is a distribution sorting algorithm showing linear computational complexity for uniformly distributed data sets and relatively little additional memory requirement. The original work was published in 1998 by Karl-Dietrich Neubert. Co ...
**
Introsort Introsort or introspective sort is a hybrid sorting algorithm that provides both fast average performance and (asymptotically) optimal worst-case performance. It begins with quicksort, it switches to heapsort when the recursion depth exceeds a le ...
: begin with quicksort and switch to heapsort when the recursion depth exceeds a certain level **
Timsort Timsort is a hybrid, stable sorting algorithm, derived from merge sort and insertion sort, designed to perform well on many kinds of real-world data. It was implemented by Tim Peters in 2002 for use in the Python programming language. The algorit ...
: adaptative algorithm derived from merge sort and insertion sort. Used in Python 2.3 and up, and Java SE 7. * Insertion sorts ** Insertion sort: determine where the current item belongs in the list of sorted ones, and insert it there **
Library sort Library sort, or gapped insertion sort is a sorting algorithm that uses an insertion sort, but with gaps in the array to accelerate subsequent insertions. The name comes from an analogy: Suppose a librarian were to store their books alphabetically ...
**
Patience sorting In computer science, patience sorting is a sorting algorithm inspired by, and named after, the card game patience (or forbearance) is the ability to endure difficult circumstances. Patience may involve perseverance in the face of delay; tole ...
**
Shell sort Shellsort, also known as Shell sort or Shell's method, is an in-place comparison sort. It can be seen as either a generalization of sorting by exchange ( bubble sort) or sorting by insertion (insertion sort). The method starts by sorting pairs of ...
: an attempt to improve insertion sort **
Tree sort A tree sort is a sort algorithm that builds a binary search tree from the elements to be sorted, and then traverses the tree ( in-order) so that the elements come out in sorted order. Its typical use is sorting elements online: after each insert ...
(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: sort the first and second half of the list separately, then merge the sorted lists **
Slowsort Slowsort is a sorting algorithm. It is of humorous nature and not useful. It is a ''reluctant algorithm'' based on the principle of ''multiply and surrender'' (a parody formed by taking the opposites of '' divide and conquer''). It was published i ...
** Strand sort * 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 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 In computer science, heapsort is a comparison-based sorting algorithm. Heapsort can be thought of as an improved selection sort: like selection sort, heapsort divides its input into a sorted and an unsorted region, and it iteratively shrinks the ...
: 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 In computer science, smoothsort is a comparison-based sorting algorithm. A variant of heapsort, it was invented and published by Edsger Dijkstra in 1981. Like heapsort, smoothsort is an in-place algorithm with an upper bound of , but it is not a ...
* Other **
Bitonic sorter Bitonic mergesort is a parallel algorithm for sorting. It is also used as a construction method for building a sorting network. The algorithm was devised by Ken Batcher. The resulting sorting networks consist of O(n\log^2(n)) comparators and have ...
**
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 Spaghetti sort is a linear-time, analog algorithm for sorting a sequence of items, introduced by A. K. Dewdney in his ''Scientific American'' column. This algorithm sorts a sequence of items requiring ''O''(''n'') stack space in a stable manner ...
**
Topological sort In computer science, a topological sort or topological ordering of a directed graph is a linear ordering of its vertices such that for every directed edge ''uv'' from vertex ''u'' to vertex ''v'', ''u'' comes before ''v'' in the ordering. For ins ...
* 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 subseq ...
: Find the longest increasing subsequence of a given sequence * Ruzzo–Tompa algorithm: 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 In computer science, string-searching algorithms, sometimes called string-matching algorithms, are an important class of string algorithms that try to find a place where one or several strings (also called patterns) are found within a larger string ...
** 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 def ...
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. T ...
: amortized linear ( sublinear in most times) algorithm for substring search ** Boyer–Moore–Horspool algorithm: Simplification of Boyer–Moore **
Knuth–Morris–Pratt algorithm In computer science, the Knuth–Morris–Pratt string-searching algorithm (or KMP algorithm) searches for occurrences of a "word" W within a main "text string" S by employing the observation that when a mismatch occurs, the word itself embodies s ...
: substring search which bypasses reexamination of matched characters ** Rabin–Karp string search algorithm: searches multiple patterns efficiently **
Zhu–Takaoka string matching algorithm In computer science Computer science is the study of computation, automation, and information. Computer science spans theoretical disciplines (such as algorithms, theory of computation, information theory, and automation) to practical ...
: a variant of Boyer–Moore * Ukkonen's algorithm: a
linear-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 ...
, 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 particu ...
s *
Matching wildcards In computer science, an algorithm for matching wildcards (also known as globbing) is useful in comparing text strings that may contain wildcard syntax. Common uses of these algorithms include command-line interfaces, e.g. the Bourne shell or Micro ...
**
Rich Salz InterNetNews (INN) is a Usenet news server package, originally released by Rich Salz in 1991, and presented at the Summer 1992 USENIX conference in San Antonio, Texas. It was the first news server with integrated NNTP functionality. While prev ...
'
wildmat wildmat is a pattern matching library developed by Rich Salz. Based on the wildcard syntax already used in the Bourne shell, wildmat provides a uniform mechanism for matching patterns across applications with simpler syntax than that typically ...
: 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 c ...
: computing a base and
strong generating set In abstract algebra, especially in the area of group theory, a strong generating set of a permutation group is a generating set that clearly exhibits the permutation structure as described by a stabilizer chain. A stabilizer chain is a sequence of ...
(BSGS) of a
permutation group In mathematics, a permutation group is a group ''G'' whose elements are permutations of a given set ''M'' and whose group operation is the composition of permutations in ''G'' (which are thought of as bijective functions from the set ''M'' to it ...
* Todd–Coxeter algorithm: Procedure for generating cosets.


Computer algebra

*
Buchberger's algorithm In the theory of multivariate polynomials, Buchberger's algorithm is a method for transforming a given set of polynomials into a Gröbner basis, which is another set of polynomials that have the same common zeros and are more convenient for extract ...
: finds a Gröbner basis * Cantor–Zassenhaus algorithm: 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 In mathematics, computer science, and logic, rewriting covers a wide range of methods of replacing subterms of a well-formed formula, formula with other terms. Such methods may be achieved by rewriting systems (also known as rewrite systems, rewr ...
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 exa ...
s in several indeterminates * Pollard's kangaroo algorithm (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, becaus ...
: 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 ...
: an algorithm for the calculus operation of indefinite integration (i.e. finding
antiderivatives In calculus, an antiderivative, inverse derivative, primitive function, primitive integral or indefinite integral of a function is a differentiable function whose derivative is equal to the original function . This can be stated symbolically ...
)


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 In computational geometry, the cone algorithm is an algorithm for identifying the particles that are near the surface of an object composed of discrete particles. Its applications include computational surface science and computational nano sci ...
: identify surface points *
Convex hull algorithms Algorithms that construct convex hulls of various objects have a broad range of applications in mathematics and computer science. In computational geometry, numerous algorithms are proposed for computing the convex hull of a finite set of points ...
: determining the
convex hull In geometry, the convex hull or convex envelope or convex closure of a shape is the smallest convex set that contains it. The convex hull may be defined either as the intersection of all convex sets containing a given subset of a Euclidean space ...
of a
set Set, The Set, SET or SETS may refer to: Science, technology, and mathematics Mathematics *Set (mathematics), a collection of elements *Category of sets, the category whose objects and morphisms are sets and total functions, respectively Electro ...
of points **
Graham scan Graham's scan is a method of finding the convex hull of a finite set of points in the plane with time complexity O(''n'' log ''n''). It is named after Ronald Graham, who published the original algorithm in 1972. The algorithm finds all vertices o ...
**
Quickhull Quickhull is a method of computing the convex hull of a finite set of points in ''n''-dimensional space. It uses a divide and conquer approach similar to that of quicksort, from which its name derives. Its worst case time complexity for 2-dimensio ...
**
Gift wrapping algorithm In computational geometry, the gift wrapping algorithm is an algorithm for computing the convex hull of a given set of points. Planar case In the two-dimensional case the algorithm is also known as Jarvis march, after R. A. Jarvis, who published ...
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: 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 generally, ...
*
Gilbert–Johnson–Keerthi distance algorithm The Gilbert–Johnson–Keerthi distance algorithm is a method of determining the minimum distance between two convex sets. Unlike many other distance algorithms, it does not require that the geometry data be stored in any specific format, but inst ...
: determining the smallest distance between two convex shapes. * Jump-and-Walk algorithm: an algorithm for point location in triangulations *
Laplacian smoothing Laplacian smoothing is an algorithm to smooth a polygonal mesh In 3D computer graphics and solid modeling, a polygon mesh is a collection of , s and s that defines the shape of a polyhedral object. The faces usually consist of triangles (tr ...
: an algorithm to smooth a polygonal mesh *
Line segment intersection In geometry, an intersection is a point, line, or curve common to two or more objects (such as lines, curves, planes, and surfaces). The simplest case in Euclidean geometry is the line–line intersection between two distinct lines, which either ...
: finding whether lines intersect, usually with a sweep line algorithm **
Bentley–Ottmann algorithm In computational geometry, the Bentley–Ottmann algorithm is a sweep line algorithm for listing all ''crossings'' in a set of line segments, i.e. it finds the ''intersection points'' (or, simply, ''intersections'') of line segments. It extends the ...
** Shamos–Hoey algorithm * Minimum bounding box algorithms: find the oriented minimum bounding box enclosing a set of points * Nearest neighbor search: 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 In computer vision, pattern recognition, and robotics, point-set registration, also known as point-cloud registration or scan matching, is the process of finding a spatial transformation (''e.g.,'' scaling, rotation and translation) that aligns t ...
algorithms: finds the transformation between two point sets to optimally align them. *
Rotating calipers In computational geometry, the method of rotating calipers is an algorithm design technique that can be used to solve optimization problems including finding the width or diameter of a set of points. The method is so named because the idea is ana ...
: determine all antipodal pairs of points and vertices on a convex polygon or
convex hull In geometry, the convex hull or convex envelope or convex closure of a shape is the smallest convex set that contains it. The convex hull may be defined either as the intersection of all convex sets containing a given subset of a Euclidean space ...
. * Shoelace algorithm: 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 me ...
** Delaunay triangulation ***
Ruppert's algorithm In mesh generation, Delaunay refinement are algorithms for mesh generation based on the principle of adding Steiner points to the geometry of an input to be meshed, in a way that causes the Delaunay triangulation or constrained Delaunay triangulati ...
(also known as Delaunay refinement): create quality Delaunay triangulations ***
Chew's second algorithm In mesh generation, Delaunay refinement are algorithms for mesh generation based on the principle of adding Steiner points to the geometry of an input to be meshed, in a way that causes the Delaunay triangulation or constrained Delaunay triangulati ...
: create quality
constrained Delaunay triangulation In computational geometry, a constrained Delaunay triangulation is a generalization of the Delaunay triangulation that forces certain required segments into the triangulation as edges, unlike the Delaunay triangulation itself which is based purely ...
s ** Marching triangles: reconstruct two-dimensional surface geometry from an unstructured
point cloud Point or points may refer to: Places * Point, Lewis, a peninsula in the Outer Hebrides, Scotland * Point, Texas, a city in Rains County, Texas, United States * Point, the NE tip and a ferry terminal of Lismore, Inner Hebrides, Scotland * Point ...
**
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 be v ...
algorithms: decompose a polygon into a set of triangles **
Voronoi diagram In mathematics, a Voronoi diagram is a partition of a plane into regions close to each of a given set of objects. In the simplest case, these objects are just finitely many points in the plane (called seeds, sites, or generators). For each seed th ...
s, 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 Fortune's algorithm is a sweep line algorithm for generating a Voronoi diagram from a set of points in a plane using O(''n'' log ''n'') time and O(''n'') space. Section 7.2: Computing the Voronoi Diagram: pp.151–160. It was origina ...
: 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 *
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''b' ...
: **
Baby-step giant-step In group theory, a branch of mathematics, the baby-step giant-step is a meet-in-the-middle algorithm for computing the discrete logarithm or order of an element in a finite abelian group by Daniel Shanks. The discrete log problem is of fundamental ...
** 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 effi ...
: computes the greatest common divisor *
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 ide ...
: also solves the equation ''ax'' + ''by'' = ''c'' *
Integer factorization In number theory, integer factorization is the decomposition of a composite number into a product of smaller integers. If these factors are further restricted to prime numbers, the process is called prime factorization. When the numbers are suf ...
: 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 ways ...
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 equali ...
**
Dixon's algorithm In number theory, Dixon's factorization method (also Dixon's random squares method or Dixon's algorithm) is a general-purpose integer factorization algorithm; it is the prototypical factor base method. Unlike for other factor base methods, its run- ...
**
Fermat's factorization method Fermat's factorization method, named after Pierre de Fermat, is based on the representation of an odd integer as the difference of two squares: :N = a^2 - b^2. That difference is algebraically factorable as (a+b)(a-b); if neither factor equals one, ...
**
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\left( ...
**
Lenstra elliptic curve factorization The Lenstra elliptic-curve factorization or the elliptic-curve factorization method (ECM) is a fast, sub-exponential running time, algorithm for integer factorization, which employs elliptic curves. For general-purpose factoring, ECM is the th ...
** Pollard's ''p'' − 1 algorithm ** Pollard's rho algorithm ** prime factorization algorithm **
Quadratic sieve The quadratic sieve algorithm (QS) is an integer factorization algorithm and, in practice, the second fastest method known (after the general number field sieve). It is still the fastest for integers under 100 decimal digits or so, and is considerab ...
**
Shor's algorithm Shor's algorithm is a quantum algorithm, 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 ...
** Special number field sieve ** Trial division * Multiplication algorithms: fast multiplication of two numbers **
Karatsuba algorithm The Karatsuba algorithm is a fast multiplication algorithm. It was discovered by Anatoly Karatsuba in 1960 and published in 1962. Knuth D.E. (1969) ''The Art of Computer Programming. v.2.'' Addison-Wesley Publ.Co., 724 pp. It is a divi ...
**
Schönhage–Strassen algorithm The Schönhage–Strassen algorithm is an asymptotically fast multiplication algorithm for large integers. It was developed by Arnold Schönhage and Volker Strassen in 1971.A. Schönhage and V. Strassen,Schnelle Multiplikation großer Zahlen, ''C ...
**
Toom–Cook multiplication Toom–Cook, sometimes known as Toom-3, named after Andrei Toom, who introduced the new algorithm with its low complexity, and Stephen Cook, who cleaned the description of it, is a multiplication algorithm for large integers. Given two large intege ...
*
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 ** Berlekamp's root finding algorithm * Odlyzko–Schönhage algorithm: calculates nontrivial zeroes of the
Riemann zeta function The Riemann zeta function or Euler–Riemann zeta function, denoted by the Greek letter (zeta), is a mathematical function of a complex variable defined as \zeta(s) = \sum_^\infty \frac = \frac + \frac + \frac + \cdots for \operatorname(s) > ...
* Lenstra–Lenstra–Lovász algorithm (also known as LLL algorithm): find a short, nearly orthogonal lattice
basis Basis may refer to: Finance and accounting *Adjusted basis, the net cost of an asset after adjusting for various tax-related items *Basis point, 0.01%, often used in the context of interest rates *Basis trading, a trading strategy consisting of ...
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 whet ...
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 ways ...
** 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 In computational number theory, the Lucas test is a primality test for a natural number ''n''; it requires that the prime factors of ''n'' − 1 be already known. It is the basis of the Pratt certificate that gives a concise verification that ...
**
Miller–Rabin primality test The Miller–Rabin primality test or Rabin–Miller primality test is a probabilistic primality test: an algorithm which determines whether a given number is likely to be prime, similar to the Fermat primality test and the Solovay–Strassen prim ...
**
Sieve of Atkin In mathematics, the sieve of Atkin is a modern algorithm for finding all prime numbers up to a specified integer. Compared with the ancient sieve of Eratosthenes, which marks off multiples of primes, the sieve of Atkin does some preliminary work a ...
**
Sieve of Eratosthenes In mathematics, the sieve of Eratosthenes is an ancient algorithm for finding all prime numbers up to any given limit. It does so by iteratively marking as composite (i.e., not prime) the multiples of each prime, starting with the first prime n ...
**
Sieve of Sundaram In mathematics, the sieve of Sundaram is a variant of the sieve of Eratosthenes, a simple deterministic algorithm for finding all the prime numbers up to a specified integer. It was discovered by Indian student S. P. Sundaram in 1934. Algorithm St ...


Numerical algorithms


Differential equation solving

* Euler method * Backward Euler method * Trapezoidal rule (differential equations) * Linear multistep methods *
Runge–Kutta methods In numerical analysis, the Runge–Kutta methods ( ) are a family of implicit and explicit iterative methods, which include the Euler method, used in temporal discretization for the approximate solutions of simultaneous nonlinear equations. The ...
**
Euler integration In mathematics and computational science, the Euler method (also called forward Euler method) is a first-order numerical analysis, numerical procedure for solving ordinary differential equations (ODEs) with a given Initial value problem, initia ...
*
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 calculus, multivariable function. The function is often thought of as an "unknown" to be sol ...
: ** 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 In mathematics, Borwein's algorithm is an algorithm devised by Jonathan Borwein, Jonathan and Peter Borwein to calculate the value of . They devised several other algorithms. They published the book ''Pi and the AGM – A Study in Analytic Number Th ...
: 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 The Chudnovsky algorithm is a fast method for calculating the digits of , based on Ramanujan’s formulae. It was published by the Chudnovsky brothers in 1988. It was used in the world record calculations of 2.7 trillion digits of in December ...
: a fast method for calculating the digits of π **
Bailey–Borwein–Plouffe formula The Bailey–Borwein–Plouffe formula (BBP formula) is a formula for . It was discovered in 1995 by Simon Plouffe and is named after the authors of the article in which it was published, David H. Bailey, Peter Borwein, and Plouffe. Before that, ...
: (BBP formula) a spigot algorithm for the computation of the nth binary digit of π * Division algorithms: for computing quotient and/or remainder of two numbers ** Long division ** Restoring division ** 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-valu ...
to find the
reciprocal Reciprocal may refer to: In mathematics * Multiplicative inverse, in mathematics, the number 1/''x'', which multiplied by ''x'' gives the product 1, also known as a ''reciprocal'' * Reciprocal polynomial, a polynomial obtained from another pol ...
of D, and multiply that reciprocal by N to find the final quotient Q. ** Goldschmidt division * Hyperbolic and Trigonometric Functions: ** BKM algorithm: computes
elementary functions In mathematics, an elementary function is a function (mathematics), function of a single variable (mathematics), variable (typically Function of a real variable, real or Complex analysis#Complex functions, complex) that is defined as taking addit ...
using a table of logarithms ** CORDIC: computes hyperbolic and trigonometric functions using a table of arctangents * Exponentiation: **
Addition-chain exponentiation In mathematics and computer science, optimal addition-chain exponentiation is a method of exponentiation by a positive integer power that requires a minimal number of multiplications. Using ''the form of'' the shortest addition chain, with multipl ...
: 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 book ...
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 A multiplication algorithm is an algorithm (or method) to multiply two numbers. Depending on the size of the numbers, different algorithms are more efficient than others. Efficient multiplication algorithms have existed since the advent of the de ...
: an integer multiplication algorithm for very large numbers possessing a very low asymptotic complexity **
Karatsuba algorithm The Karatsuba algorithm is a fast multiplication algorithm. It was discovered by Anatoly Karatsuba in 1960 and published in 1962. Knuth D.E. (1969) ''The Art of Computer Programming. v.2.'' Addison-Wesley Publ.Co., 724 pp. It is a divi ...
: an efficient procedure for multiplying large numbers **
Schönhage–Strassen algorithm The Schönhage–Strassen algorithm is an asymptotically fast multiplication algorithm for large integers. It was developed by Arnold Schönhage and Volker Strassen in 1971.A. Schönhage and V. Strassen,Schnelle Multiplikation großer Zahlen, ''C ...
: an asymptotically fast multiplication algorithm for large integers **
Toom–Cook multiplication Toom–Cook, sometimes known as Toom-3, named after Andrei Toom, who introduced the new algorithm with its low complexity, and Stephen Cook, who cleaned the description of it, is a multiplication algorithm for large integers. Given two large intege ...
: (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-valu ...
*
Rounding functions Rounding means replacing a number with an approximate value that has a shorter, simpler, or more explicit representation. For example, replacing $ with $, the fraction 312/937 with 1/3, or the expression with . Rounding is often done to obta ...
: the classic ways to round numbers *
Spigot algorithm A spigot algorithm is an algorithm for computing the value of a transcendental number (such as or ''e'') that generates the digits of the number sequentially from left to right providing increasing precision as the algorithm proceeds. Spigot alg ...
: 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 The alpha max plus beta min algorithm is a high-speed approximation of the square root of the sum of two squares. The square root of the sum of two squares, also known as Pythagorean addition, is a useful function, because it finds the hypotenu ...
: an approximation of the square-root of the sum of two squares **
Methods of computing square roots Methods of computing square roots are numerical analysis algorithms for approximating the principal, or non-negative, square root (usually denoted \sqrt, \sqrt /math>, or S^) of a real number. Arithmetically, it means given S, a procedure for fin ...
** ''n''th root algorithm ** Shifting nth-root algorithm: digit by digit root extraction * Summation: **
Binary splitting In mathematics, binary splitting is a technique for speeding up numerical evaluation of many types of series with rational terms. In particular, it can be used to evaluate hypergeometric series at rational points. Method Given a series :S(a,b) = ...
: 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 In numerical analysis, the Kahan summation algorithm, also known as compensated summation, significantly reduces the numerical error in the total obtained by adding a sequence of finite-precision floating-point numbers, compared to the obvious appro ...
: a more accurate method of summing floating-point numbers *
Unrestricted algorithm An unrestricted algorithm is an algorithm for the computation of a mathematical function that puts no restrictions on the range of the argument or on the precision that may be demanded in the result. The idea of such an algorithm was put forward by ...


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 l ...
. * Level set method (LSM): a numerical technique for tracking interfaces and shapes


Interpolation and extrapolation

*
Birkhoff interpolation In mathematics, Birkhoff interpolation is an extension of polynomial interpolation. It refers to the problem of finding a polynomial ''p'' of degree ''d'' such that certain derivatives have specified values at specified points: : p^(x_i) = y_i \qq ...
: an extension of polynomial interpolation *
Cubic interpolation In numerical analysis, a cubic Hermite spline or cubic Hermite interpolator is a spline where each piece is a third-degree polynomial specified in Hermite form, that is, by its values and first derivatives at the end points of the corresponding ...
*
Hermite interpolation In numerical analysis, Hermite interpolation, named after Charles Hermite, is a method of polynomial interpolation, which generalizes Lagrange interpolation. Lagrange interpolation allows computing a polynomial of degree less than that takes the s ...
* Lagrange interpolation: interpolation using Lagrange polynomials * Linear interpolation: a method of curve fitting using linear polynomials * Monotone cubic interpolation: a variant of cubic interpolation that preserves monotonicity of the data set being interpolated. * Multivariate interpolation **
Bicubic interpolation In mathematics, bicubic interpolation is an extension of cubic interpolation (not to be confused with cubic spline interpolation, a method of applying cubic interpolation to a data set) for interpolating data points on a two-dimensional regular ...
, a generalization of
cubic interpolation In numerical analysis, a cubic Hermite spline or cubic Hermite interpolator is a spline where each piece is a third-degree polynomial specified in Hermite form, that is, by its values and first derivatives at the end points of the corresponding ...
to two dimensions ** Bilinear interpolation: an extension of linear interpolation for interpolating functions of two variables on a regular grid **
Lanczos resampling filtering and Lanczos resampling are two applications of a mathematical formula. It can be used as a low-pass filter or used to smoothly interpolate the value of a digital signal between its samples. In the latter case it maps each sample of t ...
("Lanzosh"): a multivariate interpolation method used to compute new values for any digitally sampled data **
Nearest-neighbor interpolation Nearest-neighbor interpolation (also known as proximal interpolation or, in some contexts, point sampling) is a simple method of multivariate interpolation in one or more dimensions. Interpolation is the problem of approximating the value of a ...
**
Tricubic interpolation In the mathematical subfield numerical analysis, tricubic interpolation is a method for obtaining values at arbitrary points in 3D space of a function defined on a regular grid. The approach involves approximating the function locally by an expre ...
, a generalization of
cubic interpolation In numerical analysis, a cubic Hermite spline or cubic Hermite interpolator is a spline where each piece is a third-degree polynomial specified in Hermite form, that is, by its values and first derivatives at the end points of the corresponding ...
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, actua ...
. * Polynomial interpolation ** Neville's algorithm * Spline interpolation: Reduces error with Runge's phenomenon. ** 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 In the mathematical field of numerical analysis, De Casteljau's algorithm is a recursive method to evaluate polynomials in Bernstein form or Bézier curves, named after its inventor Paul de Casteljau. De Casteljau's algorithm can also be used to sp ...
:
Bézier curve A Bézier curve ( ) is a parametric curve used in computer graphics and related fields. A set of discrete "control points" defines a smooth, continuous curve by means of a formula. Usually the curve is intended to approximate a real-world shape t ...
s *
Trigonometric interpolation In mathematics, trigonometric interpolation is interpolation with trigonometric polynomials. Interpolation is the process of finding a function which goes through some given data points. For trigonometric interpolation, this function has to be a tr ...


Linear algebra

* Eigenvalue algorithms **
Arnoldi iteration In numerical linear algebra, the Arnoldi iteration is an eigenvalue algorithm and an important example of an iterative method. Arnoldi finds an approximation to the eigenvalues and eigenvectors of general (possibly non-Hermitian) matrices by const ...
**
Inverse iteration In numerical analysis, inverse iteration (also known as the ''inverse power method'') is an Iterative method, iterative eigenvalue algorithm. It allows one to find an approximate eigenvector when an approximation to a corresponding eigenvalue is alr ...
** Jacobi method **
Lanczos iteration The Lanczos algorithm is an iterative method devised by Cornelius Lanczos that is an adaptation of power methods to find the m "most useful" (tending towards extreme highest/lowest) eigenvalues and eigenvectors of an n \times n Hermitian matri ...
** 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, that is, ...
* Gram–Schmidt process: orthogonalizes a set of vectors *
Matrix multiplication algorithm Because matrix multiplication is such a central operation in many numerical algorithms, much work has been invested in making matrix multiplication algorithms efficient. Applications of matrix multiplication in computational problems are found in m ...
s **
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 especially suitable for computers laid out in an N × N mesh **
Coppersmith–Winograd algorithm In theoretical computer science, the computational complexity of matrix multiplication dictates how quickly the operation of matrix multiplication can be performed. Matrix multiplication algorithms are a central subroutine in theoretical and nu ...
: square matrix multiplication ** Freivalds' algorithm: a randomized algorithm used to verify matrix multiplication **
Strassen algorithm In linear algebra, the Strassen algorithm, named after Volker Strassen, is an algorithm for matrix multiplication. It is faster than the standard matrix multiplication algorithm for large matrices, with a better asymptotic complexity, although t ...
: faster matrix multiplication * 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 to ...
: solves systems of linear equations **
Conjugate gradient In mathematics, the conjugate gradient method is an algorithm for the numerical solution of particular systems of linear equations, namely those whose matrix is positive-definite. The conjugate gradient method is often implemented as an iterative ...
: 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 In linear algebra, a Toeplitz matrix or diagonal-constant matrix, named after Otto Toeplitz, is a matrix in which each descending diagonal from left to right is constant. For instance, the following matrix is a Toeplitz matrix: :\qquad\begin a & b ...
** Stone's method: also known as the strongly implicit procedure or SIP, is an algorithm for solving a sparse linear system of equations ** Successive over-relaxation (SOR): method used to speed up convergence of the Gauss–Seidel method ** Tridiagonal matrix algorithm (Thomas algorithm): solves systems of tridiagonal equations * Sparse matrix 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 results ...
: 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


Monte Carlo

*
Gibbs sampling In statistics, Gibbs sampling or a Gibbs sampler is a Markov chain Monte Carlo (MCMC) algorithm for obtaining a sequence of observations which are approximated from a specified multivariate probability distribution, when direct sampling is dif ...
: 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 whi ...
: generates a sequence of samples using
Hamiltonian Hamiltonian may refer to: * Hamiltonian mechanics, a function that represents the total energy of a system * Hamiltonian (quantum mechanics), an operator corresponding to the total energy of that system ** Dyall Hamiltonian, a modified 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 seque ...
: 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 phenomenon i ...
of one or more variables *
Wang and Landau algorithm The Wang and Landau algorithm, proposed by Fugao Wang and David P. Landau, is a Monte Carlo method designed to estimate the density of states of a system. The method performs a non-Markovian random walk to build the density of states by quickly vi ...
: 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 seque ...
sampling


Numerical integration

* MISER algorithm: 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 In mathematics, the ''regula falsi'', method of false position, or false position method is a very old method for solving an equation with one unknown; this method, in modified form, is still in use. In simple terms, the method is the trial and er ...
: 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-valu ...
: finds zeros of functions with
calculus Calculus, originally called infinitesimal calculus or "the calculus of infinitesimals", is the mathematical study of continuous change, in the same way that geometry is the study of shape, and algebra is the study of generalizations of arithm ...
* Halley's method: uses first and second derivatives * Secant method: 2-point, 1-sided *
False position method In mathematics, the ''regula falsi'', method of false position, or false position method is a very old method for solving an equation with one unknown; this method, in modified form, is still in use. In simple terms, the method is the trial and er ...
and Illinois method: 2-point, bracketing *
Ridder's method In numerical analysis, Ridders' method is a root-finding algorithm based on the false position method and the use of an exponential function to successively approximate a root of a continuous function f(x). The method is due to C. Ridders. Ridders' ...
: 3-point, exponential scaling *
Muller's method Muller's method is a root-finding algorithm, a numerical method for solving equations of the form ''f''(''x'') = 0. It was first presented by David E. Muller in 1956. Muller's method is based on the secant method, which constructs at every iterat ...
: 3-point, quadratic interpolation


Optimization algorithms

* Alpha–beta pruning: search to reduce number of nodes in minimax algorithm * Branch and bound * Bruss algorithm: see odds algorithm * Chain matrix multiplication * Combinatorial optimization: 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 ta ...
in polynomial time * Constraint satisfaction ** General algorithms for the constraint satisfaction ***
AC-3 algorithm In constraint satisfaction, the AC-3 algorithm (short for Arc Consistency Algorithm #3) is one of a series of algorithms used for the solution of constraint satisfaction problems (or CSP's). It was developed by Alan Mackworth in 1977. The earlier AC ...
***
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 In computer science, the min-conflicts algorithm is a search algorithm or heuristic method to solve constraint satisfaction problems. Given an initial assignment of values to all the variables of a constraint satisfaction problem, the algorithm ra ...
** Chaff algorithm: an algorithm for solving instances of the boolean satisfiability problem **
Davis–Putnam algorithm The Davis–Putnam algorithm was developed by Martin Davis and Hilary Putnam for checking the validity of a first-order logic formula using a resolution-based decision procedure for propositional logic. Since the set of valid first-order formulas i ...
: check the validity of a first-order logic formula **
Davis–Putnam–Logemann–Loveland algorithm In logic and computer science, the Davis–Putnam–Logemann–Loveland (DPLL) algorithm is a complete, backtracking-based search algorithm for deciding the satisfiability of propositional logic formulae in conjunctive normal form, i.e. for solvi ...
(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 In the mathematical field of combinatorics, given a collection of subsets of a set , an exact cover is a subcollection of such that each element in is contained in ''exactly one'' subset in . In other words, is a partition of consisting of s ...
problem ***
Algorithm X Algorithm X is an algorithm for solving the exact cover problem. It is a straightforward Recursion (computer science), recursive, Nondeterministic algorithm, nondeterministic, depth-first, backtracking algorithm used by Donald Knuth to demonstrate ...
: 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 In computer science, dancing links (DLX) is a technique for adding and deleting a node from a circular doubly linked list. It is particularly useful for efficiently implementing backtracking algorithms, such as Knuth's Algorithm X for the exact ...
: an efficient implementation of Algorithm X * Cross-entropy method: a general Monte Carlo approach to combinatorial and continuous multi-extremal optimization and
importance sampling Importance sampling is a Monte Carlo method for evaluating properties of a particular distribution, while only having samples generated from a different distribution than the distribution of interest. Its introduction in statistics is generally att ...
*
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 as ...
*
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 subproblem In computer science, a problem is said to have overlapping subproblems if the problem can be broken down into subproblems which are reused several times or a recursive algorithm for the problem solves the same subproblem over and over rather than a ...
s and
optimal substructure In computer science, a problem is said to have optimal substructure if an optimal solution can be constructed from optimal solutions of its subproblems. This property is used to determine the usefulness of greedy algorithms for a problem.{{cite boo ...
*
Ellipsoid method In mathematical optimization, the ellipsoid method is an iterative method for convex optimization, minimizing convex functions. When specialized to solving feasible linear optimization problems with rational data, the ellipsoid method is an algor ...
: is an algorithm for solving convex optimization problems *
Evolutionary computation In computer science, evolutionary computation is a family of algorithms for global optimization inspired by biological evolution, and the subfield of artificial intelligence and soft computing studying these algorithms. In technical terms, they ...
: optimization inspired by biological mechanisms of evolution ** Evolution strategy **
Gene expression programming In computer programming, gene expression programming (GEP) is an evolutionary algorithm that creates computer programs or models. These computer programs are complex tree structures that learn and adapt by changing their sizes, shapes, and compos ...
** 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. Tournament selection involves running several "tournaments" among a few individuals (or "chromosomes") chosen at random from the po ...
**
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 Swarm intelligence (SI) is the collective behavior of decentralized, self-organized systems, natural or artificial. The concept is employed in work on artificial intelligence. The expression was introduced by Gerardo Beni and Jing Wang in 1989, in ...
*** 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 The golden-section search is a technique for finding an extremum (minimum or maximum) of a function inside a specified interval. For a strictly unimodal function with an extremum inside the interval, it will find that extremum, while for an interv ...
: an algorithm for finding the maximum of a real function * Gradient descent *
Grid Search In machine learning, hyperparameter optimization or tuning is the problem of choosing a set of optimal hyperparameters for a learning algorithm. A hyperparameter is a parameter whose value is used to control the learning process. By contrast, the v ...
*
Harmony search This is a chronologically ordered list of metaphor-based metaheuristics and swarm intelligence algorithms, sorted by decade of proposal. Algorithms 1980s-1990s Simulated annealing (Kirkpatrick et al., 1983) Simulated annealing is a pr ...
(HS): a metaheuristic algorithm mimicking the improvisation process of musicians *
Interior point method Interior-point methods (also referred to as barrier methods or IPMs) are a certain class of algorithms that solve linear and nonlinear convex optimization problems. An interior point method was discovered by Soviet mathematician I. I. Dikin in 1 ...
*
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 function#As a polynomial function, li ...
**
Benson's algorithm Benson's algorithm, named after Harold Benson, is a method for solving multi-objective linear programming problems and vector linear programs. This works by finding the "efficient extreme points in the outcome set". The primary concept in Benso ...
: an algorithm for solving linear
vector optimization Vector optimization is a subarea of mathematical optimization where Optimization problem, optimization problems with a vector-valued objective functions are optimized with respect to a given partial ordering and subject to certain constraints. A mu ...
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 branch ...
***
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 t ...
**
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 pol ...
: 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 function#As a polynomial function, li ...
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 function#As a polynomial function, li ...
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. When de ...
used in game programming * Nearest neighbor search (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 settin ...
** Best Bin First: find an approximate solution to the nearest neighbor search problem in very-high-dimensional spaces * Newton's method in optimization * Nonlinear optimization ** BFGS method: a nonlinear optimization algorithm **
Gauss–Newton algorithm The Gauss–Newton algorithm is used to solve non-linear least squares problems, which is equivalent to minimizing a sum of squared function values. It is an extension of Newton's method for finding a minimum of a non-linear function. Since a sum ...
: 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 res ...
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 res ...
problems **
Nelder–Mead method The Nelder–Mead method (also downhill simplex method, amoeba method, or polytope method) is a numerical method used to find the minimum or maximum of an objective function in a multidimensional space. It is a direct search method (based on ...
(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 Random search (RS) is a family of numerical optimization methods that do not require the gradient of the problem to be optimized, and RS can hence be used on functions that are not continuous or differentiable. Such optimization methods are also kn ...
* Simulated annealing * Stochastic tunneling * Subset sum 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 structure, primary biological sequence information, such as the amino acid, amino-acid sequences of proteins or the nucleotides of DN ...
also known as BLAST: an algorithm for comparing primary biological sequence information *
Kabsch algorithm The Kabsch algorithm, named after Wolfgang Kabsch, is a method for calculating the optimal rotation matrix that minimizes the RMSD ( root mean squared deviation) between two paired sets of points. It is useful in graphics, cheminformatics to compar ...
: 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 graph In graph theory, an -dimensional De Bruijn graph of symbols is a directed graph representing overlaps between sequences of symbols. It has vertices, consisting of all possible sequences of the given symbols; the same symbol may appear multiple ...
s for genomic sequence assembly *
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 UPGMA (unweighted pair group method with arithmetic mean) is a simple agglomerative (bottom-up) hierarchical clustering method. The method is generally attributed to Sokal and Michener. The UPGMA method is similar to its ''weighted'' variant, the ...
: a distance-based phylogenetic tree construction algorithm.


Geoscience

*
Vincenty's formulae Vincenty's formulae are two related iterative methods used in geodesy to calculate the distance between two points on the surface of a spheroid, developed by Thaddeus Vincenty (1975a). They are based on the assumption that the figure of the Earth ...
: 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 The Lesk algorithm is a classical algorithm for word sense disambiguation introduced by Michael E. Lesk in 1986. Overview The Lesk algorithm is based on the assumption that words in a given "neighborhood" (section of text) will tend to share a com ...
: word sense disambiguation *
Stemming algorithm In linguistic morphology and information retrieval, stemming is the process of reducing inflected (or sometimes derived) words to their word stem, base or root (linguistics), root form—generally a written word form. The stem need not be identic ...
: a method of reducing words to their stem, base, or root form * Sukhotin's algorithm: 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 diagnostic algorithms *
Texas Medication Algorithm Project The Texas Medication Algorithm Project (TMAP) is a decision-tree medical algorithm, the design of which was based on the expert opinions of mental health specialists. It has provided and rolled out a set of psychiatric management guidelines for doct ...


Physics

*
Constraint algorithm In computational chemistry, a constraint algorithm is a method for satisfying the Newtonian motion of a rigid body which consists of mass points. A restraint algorithm is used to ensure that the distance between mass points is maintained. The gene ...
: 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 determi ...
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 The ground state of a quantum-mechanical system is its stationary state of lowest energy; the energy of the ground state is known as the zero-point energy of the system. An excited state is any state with energy greater than the 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 t ...
***
Ritz method The Ritz method is a direct method to find an approximate solution for boundary value problems. The method is named after Walther Ritz, and is also commonly called the Rayleigh–Ritz method and the Ritz-Galerkin method. In quantum mechanics, a ...
* ''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 In physical simulations, sweep and prune is a broad phase algorithm used during collision detection to limit the number of pairs of solids that need to be checked for collision, i.e. intersection. This is achieved by sorting the starts (lower bound ...
: 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 The VEGAS algorithm, due to G. Peter Lepage, is a method for reducing error in Monte Carlo simulations by using a known or approximate probability distribution function to concentrate the search in those areas of the integrand that make the gre ...
: 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 determini ...
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 up ...
: a method for simulating the Ising Model on a computer


Statistics

* Algorithms for calculating variance: avoiding instability and numerical overflow *
Approximate counting algorithm The approximate counting algorithm allows the counting of a large number of events using a small amount of memory. Invented in 1977 by Robert Morris of Bell Labs, it uses probabilistic techniques to increment the counter. It was fully analyzed ...
: allows counting large number of events in a small register * Bayesian statistics **
Nested sampling algorithm The nested sampling algorithm is a computational approach to the Bayesian statistics problems of comparing models and generating samples from posterior distributions. It was developed in 2004 by physicist John Skilling. Background Bayes' theorem ca ...
: 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 Complete-linkage clustering is one of several methods of agglomerative hierarchical clustering. At the beginning of the process, each element is in a cluster of its own. The clusters are then sequentially combined into larger clusters until all ...
: a simple agglomerative clustering algorithm ** DBSCAN: a density based clustering algorithm ** Expectation-maximization algorithm **
Fuzzy clustering Fuzzy clustering (also referred to as soft clustering or soft ''k''-means) is a form of clustering in which each data point can belong to more than one cluster. Clustering or cluster analysis involves assigning data points to clusters such that i ...
: 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: a local clustering algorithm, which produces hierarchical multi-hop clusters in static and mobile environments. **
k-means clustering ''k''-means clustering is a method of vector quantization, originally from signal processing, that aims to partition ''n'' observations into ''k'' clusters in which each observation belongs to the cluster with the nearest mean (cluster centers or ...
: 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 The Linde–Buzo–Gray algorithm (introduced by Yoseph Linde, Andrés Buzo and Robert M. Gray in 1980) is a vector quantization algorithm to derive a good codebook. It is similar to the k-means method in data clustering. The algorithm At each ...
: a vector quantization algorithm to derive a good codebook ** Lloyd's algorithm (Voronoi iteration or relaxation): group data points into a given number of categories, a popular algorithm for
k-means clustering ''k''-means clustering is a method of vector quantization, originally from signal processing, that aims to partition ''n'' observations into ''k'' clusters in which each observation belongs to the cluster with the nearest mean (cluster centers or ...
**
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, ultraviole ...
: 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 In statistics, Ward's method is a criterion applied in hierarchical cluster analysis. Ward's minimum variance method is a special case of the objective function approach originally presented by Joe H. Ward, Jr. Ward suggested a general agglomerat ...
: an agglomerative clustering algorithm, extended to more general Lance–Williams algorithms **
WACA clustering algorithm WACA is a clustering algorithm Cluster analysis or clustering is the task of grouping a set of objects in such a way that objects in the same group (called a cluster) are more similar (in some sense) to each other than to those in other group ...
: 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 valu ...
** 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 Medical imaging is the technique and process of imaging the interior of a body for clinical analysis and medical intervention, as well as visual representation of the function of some organs or tissues (physiology). Medical imaging seeks to rev ...
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 Metabolism, metabolic processes, and in other physiological activities including bl ...
,
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 An X-ray, or, much less commonly, X-radiation, is a penetrating form of high-energy electromagnetic radiation. Most X-rays have a wavelength ranging from 10  picometers to 10  nanometers, corresponding to frequencies in the range 30&nb ...
computed tomography. ** Odds algorithm (Bruss algorithm) Optimal online search for distinguished value in sequential random input ** Kalman filter: estimate the state of a linear
dynamic system In mathematics, a dynamical system is a system in which a Function (mathematics), function describes the time dependence of a Point (geometry), point in an ambient space. Examples include the mathematical models that describe the swinging of a ...
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 In electrical engineering, statistical computing and bioinformatics, the Baum–Welch algorithm is a special case of the expectation–maximization algorithm used to find the unknown parameters of a hidden Markov model (HMM). It makes use of the f ...
: 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 Partial least squares regression (PLS regression) is a statistical method that bears some relation to principal components regression; instead of finding hyperplanes of maximum variance between the response and independent variables, it finds a li ...
: finds a linear model describing some predicted variables in terms of other observable variables * Queuing theory ** 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 Scoring algorithm, also known as Fisher's scoring, is a form of Newton's method used in statistics to solve maximum likelihood equations numerically, named after Ronald Fisher. Sketch of derivation Let Y_1,\ldots,Y_n be random variables, independe ...
: 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-valu ...
used to solve
maximum likelihood In statistics, maximum likelihood estimation (MLE) is a method of estimation theory, estimating the Statistical parameter, parameters of an assumed probability distribution, given some observed data. This is achieved by Mathematical optimization, ...
equations numerically *
Yamartino method The Yamartino method is an algorithm for calculating an approximation of the standard deviation of wind direction during a single pass through the incoming data. Background The standard deviation of wind direction is a measure of lateral turbulen ...
: 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 Tomasulo's algorithm is a computer architecture hardware algorithm for dynamic scheduling of instructions that allows out-of-order execution and enables more efficient use of multiple execution units. It was developed by Robert Tomasulo at IBM in ...
: 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 line A contour line (also isoline, isopleth, or isarithm) of a function of two variables is a curve along which the function has a constant value, so that the curve joins points of equal value. It is a plane section of the three-dimensional grap ...
s and Isosurfaces ** 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: 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 Global illumination (GI), or indirect illumination, is a group of algorithms used in 3D computer graphics that are meant to add more realistic lighting to 3D scenes. Such algorithms take into account not only the light that comes directly from ...
algorithms: Considers direct illumination and reflection from other objects. ** Ambient occlusion **
Beam tracing Beam tracing is an algorithm to simulate wave propagation. It was developed in the context of computer graphics to render 3D scenes, but it has been also used in other similar areas such as acoustics and electromagnetism simulations. Beam tracing ...
**
Cone tracing Cone tracing and beam tracing are a derivative of the ray tracing algorithm that replaces rays, which have no thickness, with thick rays. Principles In ray tracing, rays are often modeled as geometric ray with no thickness to perform efficient g ...
** Image-based lighting ** Metropolis light transport ** Path tracing **
Photon mapping In computer graphics, photon mapping is a two-pass global illumination rendering algorithm developed by Henrik Wann Jensen between 1995 and 2001Jensen, H. (1996). ''Global Illumination using Photon Maps''. nlineAvailable at: http://graphics.stanf ...
** Radiosity ** Ray tracing * Hidden-surface removal or Visual surface determination **
Newell's algorithm Newell's Algorithm is a 3D computer graphics procedure for elimination of polygon cycles in the depth sorting required in hidden surface removal. It was proposed in 1972 by brothers Martin Newell and Dick Newell, and Tom Sancha, while all three wer ...
: eliminate polygon cycles in the depth sorting required in hidden-surface removal **
Painter's algorithm The painter’s algorithm (also depth-sort algorithm and priority fill) is an algorithm for visible surface determination in 3D computer graphics that works on a polygon-by-polygon basis rather than a pixel-by-pixel, row by row, or area by are ...
: detects visible parts of a 3-dimensional scenery ** Scanline rendering: constructs an image by moving an imaginary line over the image **
Warnock algorithm The Warnock algorithm is a hidden surface algorithm invented by John Warnock that is typically used in the field of computer graphics. It solves the problem of rendering a complicated image by recursive subdivision of a scene until areas are obt ...
* Line Drawing: graphical algorithm for approximating a line segment on discrete graphical media. **
Bresenham's line algorithm Bresenham's line algorithm is a line drawing algorithm that determines the points of an ''n''-dimensional raster that should be selected in order to form a close approximation to a straight line between two points. It is commonly used to draw line ...
: 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 336px, Demonstration of Xiaolin Wu's algorithm. Compression artifacts in the jpeg standard can be made "fairly" with it. Xiaolin Wu's line algorithm is an algorithm for line antialiasing. Antialiasing technique Xiaolin Wu's line algorithm was p ...
: algorithm for line antialiasing. *
Midpoint circle algorithm In computer graphics, the midpoint circle algorithm is an algorithm used to determine the points needed for rasterizing a circle. Bresenham's circle algorithm is derived from the midpoint circle algorithm. The algorithm can be generalized to coni ...
: an algorithm used to determine the points needed for drawing a circle *
Ramer–Douglas–Peucker algorithm The Ramer–Douglas–Peucker algorithm, also known as the Douglas–Peucker algorithm and iterative end-point fit algorithm, is an algorithm that decimates a curve composed of line segments to a similar curve with fewer points. It was one of the e ...
: 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's ...
** 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 A summed-area table is a data structure and algorithm for quickly and efficiently generating the sum of values in a rectangular subset of a grid. In the image processing domain, it is also known as an integral image. It was introduced to computer g ...
(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 th ...
**
Elliptic curve cryptography Elliptic-curve cryptography (ECC) is an approach to public-key cryptography based on the algebraic structure of elliptic curves over finite fields. ECC allows smaller keys compared to non-EC cryptography (based on plain Galois fields) to provide e ...
** MAE1 **
NTRUEncrypt The NTRUEncrypt public key cryptosystem, also known as the NTRU encryption algorithm, is an NTRU lattice-based alternative to RSA and elliptic curve cryptography (ECC) and is based on the shortest vector problem in a lattice (which is not known ...
** RSA *
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 In public-key cryptography, Edwards-curve Digital Signature Algorithm (EdDSA) is a digital signature scheme using a variant of Schnorr signature based on twisted Edwards curves. It is designed to be faster than existing digital signature scheme ...
(Ed25519) ** RSA *
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 re ...
s (see also the section on message authentication codes): **
BLAKE Blake is a surname which originated from Old English. Its derivation is uncertain; it could come from "blac", a nickname for someone who had dark hair or skin, or from "blaac", a nickname for someone with pale hair or skin. Another theory, presuma ...
** 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 hexadecima ...
– 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 compression ...
(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 u ...
(TTH), usually used in Tiger tree hashes ** WHIRLPOOL * Cryptographically secure pseudo-random number generators ** Blum Blum Shub – based on the hardness of factorization ** Fortuna, intended as an improvement on
Yarrow algorithm The Yarrow algorithm is a family of cryptographic pseudorandom number generators (CPRNG) devised by John Kelsey, Bruce Schneier, and Niels Ferguson and published in 1999. The Yarrow algorithm is explicitly unpatented, royalty-free, and open sour ...
** Linear-feedback shift register (note: many LFSR-based algorithms are weak or have been broken) **
Yarrow algorithm The Yarrow algorithm is a family of cryptographic pseudorandom number generators (CPRNG) devised by John Kelsey, Bruce Schneier, and Niels Ferguson and published in 1999. The Yarrow algorithm is explicitly unpatented, royalty-free, and open sour ...
* 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 Elliptic-curve Diffie–Hellman (ECDH) is a key agreement protocol that allows two parties, each having an elliptic-curve public–private key pair, to establish a shared secret over an insecure channel. This shared secret may be directly used as a ...
(ECDH) *
Key derivation function In cryptography, a key derivation function (KDF) is a cryptographic algorithm that derives one or more secret keys from a secret value such as a master key, a password, or a passphrase using a pseudorandom function (which typically uses a crypto ...
s, often used for
password hashing In cryptography, a key derivation function (KDF) is a cryptographic algorithm that derives one or more secret keys from a secret value such as a master key, a password, or a passphrase using a pseudorandom function (which typically uses a crypto ...
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 fu ...
**
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' Publ ...
** scrypt ** Argon2 *
Message authentication code In cryptography, a message authentication code (MAC), sometimes known as a ''tag'', is a short piece of information used for authenticating a message. In other words, to confirm that the message came from the stated sender (its authenticity) and ...
s (symmetric authentication algorithms, which take a key as a parameter): **
HMAC In cryptography, an HMAC (sometimes expanded as either keyed-hash message authentication code or hash-based message authentication code) is a specific type of message authentication code (MAC) involving a cryptographic hash function and a secret ...
: 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 sci ...
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. Twof ...
**
Threefish Threefish is a symmetric-key tweakable block cipher designed as part of the Skein hash function, an entry in the NIST hash function competition. Threefish uses no S-boxes or other table lookups in order to avoid cache timing attacks; The paper ...
**
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 cry ...
(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 being ...
**
RC4 (cipher) In cryptography, RC4 (Rivest Cipher 4, also known as ARC4 or ARCFOUR, meaning Alleged RC4, see below) is a stream cipher. While it is remarkable for its simplicity and speed in software, multiple vulnerabilities have been discovered in RC4, ren ...
**
Tiny Encryption Algorithm In cryptography, the Tiny Encryption Algorithm (TEA) is a block cipher notable for its simplicity of description and implementation, typically a few lines of code. It was designed by David Wheeler and Roger Needham of the Cambridge Computer Lab ...
(TEA) ** Salsa20, and its updated variant
ChaCha20 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 ...
* Post-quantum cryptography * Proof-of-work algorithms


Digital logic

* Boolean minimization **
Quine–McCluskey algorithm The Quine–McCluskey algorithm (QMC), also known as the method of prime implicants, is a method used for minimization of Boolean functions that was developed by Willard V. Quine in 1952 and extended by Edward J. McCluskey in 1956. As a genera ...
: also called as Q-M algorithm, programmable method for simplifying the boolean equations **
Petrick's method In Boolean algebra, Petrick's method (also known as ''Petrick function'' or ''branch-and-bound'' method) is a technique described by Stanley R. Petrick (1931–2006) in 1956 for determining all minimum sum-of-products solutions from a prime impl ...
: another algorithm for boolean simplification **
Espresso heuristic logic minimizer The ESPRESSO logic minimizer is a computer program using heuristic and specific algorithms for efficiently reducing the complexity of digital logic gate circuits. ESPRESSO-I was originally developed at IBM by Robert K. Brayton et al. in 1982. ...
: a fast algorithm for boolean function minimization


Machine learning and statistical classification

*
ALOPEX Alopex may refer to: * ''Alopex lagopus'', a taxonomic synonym for the Arctic fox, ''Vulpes lagopus'' * ALOPEX a correlation-based machine learning algorithm * Alopex (Teenage Mutant Ninja Turtles), a character in the ''Teenage Mutant Ninja Turt ...
: 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 ** FP-growth algorithm ** One-attribute rule ** 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 que ...
: Use many weak learners to boost effectiveness ** AdaBoost: 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 function#As a polynomial function, li ...
boosting * Bootstrap aggregating (bagging): technique to improve stability and classification accuracy *
Computer Vision Computer vision is an 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 tasks that the hum ...
**
Grabcut GrabCut is an image segmentation method based on graph cuts. Starting with a user-specified bounding box around the object to be segmented, the algorithm estimates the color distribution of the target object and that of the background using a Ga ...
based on Graph cuts *
Decision Trees A decision tree is a decision support tool that uses a tree-like model of decisions and their possible consequences, including chance event outcomes, resource costs, and utility. It is one way to display an algorithm that only contains condit ...
**
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 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 reg ...
(k-NN): a method for classifying objects based on closest training examples in the feature space *
Linde–Buzo–Gray algorithm The Linde–Buzo–Gray algorithm (introduced by Yoseph Linde, Andrés Buzo and Robert M. Gray in 1980) is a vector quantization algorithm to derive a good codebook. It is similar to the k-means method in data clustering. The algorithm At each ...
: a vector quantization algorithm used to derive a good codebook *
Locality-sensitive hashing In computer science, locality-sensitive hashing (LSH) is an algorithmic technique that hashes similar input items into the same "buckets" with high probability. (The number of buckets is much smaller than the universe of possible input items.) Since ...
(LSH): a method of performing probabilistic dimension reduction of high-dimensional data *
Neural Network A neural network is a network or 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 of biological ...
** 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(n3) algorithm for parsing context-free grammars in Chomsky normal form * Earley parser: another O(n3) 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(n3) in worst case. * Inside-outside algorithm: an O(n3) 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 algorithm, 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 ...
: 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: 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,