# List of algorithms

Jump to navigation
Jump to search

The following is a **list of the algorithms** described in Wikipedia.
See also the list of data structures, list of algorithm general topics and list of terms relating to algorithms and data structures.

If you intend to describe a new algorithm, please read algorithms on Wikipedia first, then add a link to your article and a one-line description here.

## Contents

- 1 Combinatorial algorithms
- 2 Compression algorithms
- 3 Computational geometry
- 4 Computer graphics
- 5 Cryptographic algorithms
- 6 Distributed systems algorithms
- 7 Numerical algorithms
- 8 Number theoretic algorithms
- 9 Numerical algebra
- 10 Parsing
- 11 Software engineering
- 12 Quantum algorithms
- 13 Medical algorithms
- 14 Other

## Combinatorial algorithms

### General combinatorial algorithms

- Floyd's cycle-finding algorithm: finds cycles in iterations
- (uniformly distributed) Pseudorandom number generators:
- Robinson-Schensted algorithm: generates permutations from pairs of Young tableaux

### Graph algorithms

*See main article graph theory*

- Bellman-Ford algorithm: 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: solves the all pairs shortest path problem in a weighted, directed graph
- Kruskal's algorithm: finds a minimum spanning tree for a graph
- Prim's algorithm: finds a minimum spanning tree for a graph
- Boruvka's algorithm: finds a minimum spanning tree for a graph
- Ford-Fulkerson algorithm: computes the maximum flow in a graph
- Edmonds-Karp algorithm: implementation of Ford-Fulkerson
- Nonblocking Minimal Spanning Switch say, for a telephone exchange
- Spring based algorithm: algorithm for graph drawing
- Topological sort
- Hungarian Algorithm: algorithm for finding a perfect matching

### Search algorithms

- Linear search: finds an item in an unsorted list
- Selection algorithm: finds the
*k*th largest item in a list - Binary search: locates an item in a sorted list
- Binary search tree
- Breadth-first search: traverses a graph level by level
- Depth-first search: traverses a graph branch by branch
- Best-first search: traverses a graph in the order of likely importance using a priority queue
- A* tree search: special case of best-first search
- 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.
- Hash table: finds an item in an unsorted collection in O(1) time.

### String algorithms

#### Searching

- Aho-Corasick algorithm
- Bitap algorithm
- Boyer-Moore string search algorithm
- Knuth-Morris-Pratt algorithm
- Rabin-Karp string search algorithm

#### Approximate matching

### Sort algorithms

- Binary tree sort
- Bogosort
- Bubble sort: for each pair of indices, swap the items if out of order
- Bucket sort
- Comb sort
- Cocktail sort
- Counting sort
- Gnome sort
- Heapsort: convert the list into a heap, keep removing the largest element from the heap and adding it to the end of the list
- Insertion sort: determine where the current item belongs in the list of sorted ones, and insert it there
- Merge sort: sort the first and second half of the list separately, then merge the sorted lists
- Pancake sorting
- Pigeonhole sort
- 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
- Radix sort: sorts strings letter by letter
- Selection sort: pick the smallest of the remaining elements, add it to the end of the sorted list
- Shell sort: an attempt to improve insertion sort
- Smoothsort
- Stupid sort
- Topological sort

## Compression algorithms

### Lossless compression algorithms

- Burrows-Wheeler transform: preprocessing useful for improving lossless compression
- DEFLATE: lossless data compression
- Delta encoding: aid to compression of data in which sequential data occurs frequently
- Incremental encoding: delta encoding applied to sequences of strings
- LZW: lossless data compression (Lempel-Ziv-Welch)
- LZ77 (algorithm): LZ77 and LZ78 are the names for the two lossless data compression algorithms
- LZMA: short for Lempel-Ziv-Markov chain-Algorithm
- LZO: data compression algorithm that is focused on speed
- PPM compression algorithm
- Shannon-Fano coding
- Truncated binary encoding
- Run-length encoding: lossless data compression taking advantage of strings of repeated characters
- SEQUITUR algorithm: lossless compression by incremental grammar inference on a string
- EZW (Embedded Zerotree Wavelet)
- Entropy encoding: coding scheme that assigns codes to symbols so as to match code lengths with the probabilities of the symbols
- Huffman coding: simple lossless compression taking advantage of relative character frequencies
- Adaptive Huffman coding: adaptive coding technique based on Huffman coding

- Arithmetic coding: advanced entropy coding
- Range encoding: data compression method that is believed to approach the compression ratio of arithmetic coding

- Huffman coding: simple lossless compression taking advantage of relative character frequencies
- Entropy coding with known entropy characteristics
- Unary coding: code that represents a number n with n ones followed by a zero
- Elias delta|gamma|omega coding: universal code encoding the positive integers
- Fibonacci coding: universal code which encodes positive integers into binary code words
- 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

### Lossy compression algorithms

- Linear predictive coding: lossy compression by representing the spectral envelope of a digital signal of speech in compressed form
- A-law algorithm: standard companding algorithm
- Mu-law algorithm: standard analog signal compression or companding algorithm
- Fractal compression: method used to compress images using fractals
- Transform coding: type of data compression for "natural" data like audio signals or photographic images
- Vector quantization: technique often used in lossy data compression
- Wavelet compression: form of data compression well suited for image compression (sometimes also video compression and audio compression)

## Computational geometry

- Gift wrapping algorithm: determining the convex hull of a set of points
- Graham scan determining the convex hull of a set of points in the plane
- Point in polygon: tests whether a given point lies within a given polygon

## Computer graphics

- Bresenham's line algorithm: plots points of a 2-dimensional array to form a straight line between 2 specified points (uses decision variables)
- DDA line algorithm: plots points of a 2-dimensional array to form a straight line between 2 specified points (uses floating-point math)
- Flood fill: fills a connected region of a multi-dimensional array with a specified symbol
- Painter's algorithm: detects visible parts of a 3-dimensional scenery
- Ray tracing: realistic image rendering

## Cryptographic algorithms

*(See also Topics in cryptography for an 'analytical glossary')*

- Symmetric (secret key) encryption:
- Advanced Encryption Standard (AES), winner of NIST competition
- Blowfish
- Data Encryption Standard (DES), sometimes DE Algorithm, winner of NBS selection competition, replaced by AES for most purposes
- IDEA
- RC4 (cipher)

- Asymmetric (public key) encryption or digital signature:
- Cryptographic Message digest functions:
- MD5 – Note that there is now a method of generating collisions for MD5
- RIPEMD-160
- SHA-1
- HMAC: keyed-hash message authentication

- Cryptographically secure pseudo-random number generators
- Blum Blum Shub - based on the hardness of factorization
- Yarrow algorithm
- Fortuna, allegedly an improvement on Yarrow

*Other*- Diffie-Hellman: key exchange

## Distributed systems algorithms

- Lamport ordering: a partial ordering of events based on the
*happened-before*relation - Snapshot algorithm: a snapshot is the process of recording the global state of a system
- Vector ordering: a total ordering of events

## Numerical algorithms

*See also main article *numerical analysis* and list of numerical analysis topics*

- De Boor algorithm: computes splines.
- De Casteljau's algorithm: computes Bezier curves
- False position method: approximates roots of a function
- Gauss-Jordan elimination: solves systems of linear equations
- Gauss-Legendre algorithm: computes the digits of pi
- Gauss-Newton algorithm: find minimum of function of several variables
- Kahan summation algorithm: a more accurate method of summing floating-point numbers
- Levenberg-Marquardt algorithm: find minimum of function of several variables
- MISER algorithm: Monte Carlo simulation, numerical integration
- Newton's method: finds zeros of functions with calculus
- Rounding functions: the classic ways to round numbers
- Secant method: approximates roots of a function
- Shifting nth-root algorithm: digit by digit root extraction
- Square root: approximates the square root of a number
- Strassen algorithm

### Optimization algorithms

- Simplex algorithm: An algorithm for solving the linear programming problem
- Branch and bound
- Simulated annealing
- Genetic algorithms
- Particle swarm
- Tabu search
- Local search

### Digital signal processing

- CORDIC: Fast trigonometric function computation technique.
- Fast Fourier transform: determines the frequencies contained in a (segment of a) signal
- Rainflow-counting algorithm: Reduces a complex stress history to a count of elementary stress-reversals for use in fatigue analysis
- Osem: algorithm for processing of medical images
- Goertzel algorithm Can be used for DTMF digit decoding.
- Discrete Fourier transform

## Number theoretic algorithms

- Discrete logarithm:
- Euclidean algorithm: computes the greatest common divisor
- Integer factorization: breaking an integer into its prime factors
- Multiplication algorithms: fast multiplication of two numbers
- Primality tests: determining whether a given number is prime

## Numerical algebra

- Buchberger's algorithm: finds a Gröbner basis
- Eigenvalue algorithm
- Exponentiating by squaring: quickly computes powers of numbers and matrices
- Gram-Schmidt process: orthogonalizes a set of vectors
- Knuth-Bendix completion algorithm: for rewriting rule systems
- Multivariate division algorithm: for polynomials in several indeterminates

## Parsing

- Recursive descent parser: A top-down parser suitable for LL(
*k*) 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:
- Packrat parser: A linear time parsing algorithm supporting some context-free grammars and parsing expression grammars
- CYK algorithm: An O(n
^{3}) algorithm for parsing any context-free grammar - Earley's algorithm: Another O(n
^{3}) algorithm for parsing any context-free grammar

## Software engineering

- Algorithms for Recovery and Isolation Exploiting Semantics: recovery
- Unicode Collation Algorithm
- CHS conversion: Converting between disk addressing systems
- Cyclic redundancy check: calculation of a check word
- Parity: Simple/fast error detection technique. Is a number even or odd?
- Diff: compare two sequences. An example of Dynamic programming (dynamic refers to the property that the optimal solution can be constructed by combining optimal solutions to sub-problems e.g. quicksort).

## Quantum algorithms

*Application of quantum computation to various categories of problems and algorithms*

- Grover's algorithm: provides quadratic speedup for many search problems
- Shor's algorithm: provides exponential speedup for factorizing a number
- Deutsch-Jozsa algorithm: criterion of balance for Boolean function

## Medical algorithms

## Other

- Astronomical algorithms
- Banker's algorithm
- Baum-Welch algorithm
- Doomsday algorithm: day of the week
- Levenberg-Marquardt nonlinear least squares fitting algorithm
- Marzullo's algorithm: distributed clock synchronization
- Page replacement algorithms
- Risch algorithm
- Schreier-Sims algorithm
- Todd-Coxeter algorithm
- Viterbi algorithm
- Xor swap algorithm: swaps the values of two variables without using a buffer

de:Liste von Algorithmen id:Daftar algoritma pt:Lista de algoritmos ru:Список алгоритмов