List of algorithms

Broad definition of the term algorithm

An algorithm is fundamentally a set of rules or defined procedures that is typically designed and used to solve a specific problem or a broad set of problems.

Broadly, algorithms define process(es), sets of rules, or methodologies that are to be followed in calculations, data processing, data mining, pattern recognition, automated reasoning or other problem-solving operations. With the increasing automation of services, more and more decisions are being made by algorithms. Some general examples are; risk assessments, anticipatory policing, and pattern recognition technology.[1]

The following is a list of well-known algorithms along with one-line descriptions for each.

Automated planning

Combinatorial algorithms

General combinatorial algorithms

Graph algorithms

Graph drawing

Network theory

Routing for graphs

  • 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 that reduces its memory requirement
  • Beam stack search: integrates backtracking with beam search
  • Best-first search: traverses a graph in the order of likely importance using a priority queue
  • Bidirectional search: 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: an exhaustive and reliable search method, but computationally inefficient in many applications
  • D*: an incremental heuristic search algorithm
  • Depth-first search: 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: an optimization to A* which may reduce computation time by an order of magnitude using further heuristics
  • Lexicographic breadth-first search (also known as Lex-BFS): a linear time algorithm for ordering the vertices of a graph
  • Uniform-cost search: a tree search that finds the lowest-cost route where costs vary
  • SSS*: 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

Sequence algorithms

Approximate sequence matching

  • Bitap algorithm: fuzzy algorithm that determines if strings are approximately equal.
  • Phonetic algorithms
    • Daitch–Mokotoff Soundex: a Soundex refinement which allows matching of Slavic and Germanic surnames
    • Double Metaphone: an improvement on Metaphone
    • Match rating approach: a phonetic algorithm developed by Western Airlines
    • Metaphone: an algorithm for indexing words by their sound, when pronounced in English
    • NYSIIS: phonetic algorithm, improves on Soundex
    • Soundex: 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
  • Trigram search: search for text when the exact syntax or spelling of the target object is not precisely known

Selection algorithms

  • Linear search: locates an item in an unsorted sequence
  • Selection algorithm: finds the kth largest item in a sequence
  • Ternary search: a technique for finding the minimum or maximum of a function that is either strictly increasing and then strictly decreasing or vice versa
  • Sorted lists
    • Binary search algorithm: locates an item in a sorted sequence
    • Fibonacci search technique: search a sorted sequence using a divide and conquer algorithm that narrows down possible locations with the aid of Fibonacci numbers
    • Jump search (or block search): linear search on a smaller subset of the sequence
    • Predictive search: binary-like search which factors in magnitude of search term versus the high and low values in the search. Sometimes called dictionary search or interpolated search.
    • Uniform binary search: an optimization of the classic binary search algorithm
    • Eytzinger binary search: cache friendly binary search algorithm [6]

Sequence merging

  • Simple merge algorithm
  • k-way merge algorithm
  • Union (merge, with elements on the output not repeated)

Sequence permutations

  • Fisher–Yates shuffle (also known as the Knuth shuffle): randomly shuffle a finite set
  • Schensted algorithm: constructs a pair of Young tableaux from a permutation
  • Steinhaus–Johnson–Trotter algorithm (also known as the Johnson–Trotter algorithm): generates permutations by transposing elements
  • Heap's permutation generation algorithm: interchange elements to generate next permutation

Sequence combinations

Sequence alignment

Sequence sorting

  • Exchange sorts
    • Bubble sort: 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
    • Gnome sort
    • Odd–even 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
  • Humorous or ineffective
  • Hybrid
    • Flashsort
    • Introsort: begin with quicksort and switch to heapsort when the recursion depth exceeds a certain level
    • Timsort: adaptative algorithm derived from merge sort and insertion sort. Used in Python 2.3 and up, and Java SE 7.
  • Insertion sorts
  • Merge sorts
    • Merge sort: sort the first and second half of the list separately, then merge the sorted lists
    • Slowsort
    • Strand sort
  • Non-comparison sorts
  • Selection sorts
    • Heapsort: convert the list into a heap, keep removing the largest element from the heap and adding it to the end of the list
    • Selection sort: pick the smallest of the remaining elements, add it to the end of the sorted list
    • Smoothgamersort
  • Other
  • Unknown class

Subsequences

  • Longest common subsequence problem: Find the longest subsequence common to all sequences in a set of sequences
  • Longest increasing subsequence problem: 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

Computational mathematics

Abstract algebra

  • Chien search: a recursive algorithm for determining roots of polynomials defined over a finite field
  • Schreier–Sims algorithm: computing a base and strong generating set (BSGS) of a permutation group
  • Todd–Coxeter algorithm: Procedure for generating cosets.

Computer algebra

Geometry

  • Closest pair problem: find the pair of points (from a set of points) with the smallest distance between them
  • Collision detection algorithms: check for the collision or intersection of two given solids
  • Cone algorithm: identify surface points
  • Convex hull algorithms: determining the convex hull of a set of points
    • Graham scan
    • Quickhull
    • Gift wrapping algorithm or Jarvis march
    • Chan's algorithm
    • Kirkpatrick–Seidel algorithm
  • Euclidean distance transform: computes the distance between every point in a grid and a discrete collection of points.
  • Geometric hashing: a method for efficiently finding two-dimensional objects represented by discrete points that have undergone an affine transformation
  • Gilbert–Johnson–Keerthi distance algorithm: determining the smallest distance between two convex shapes.
  • Jump-and-Walk algorithm: an algorithm for point location in triangulations
  • Laplacian smoothing: an algorithm to smooth a polygonal mesh
  • Line segment intersection: finding whether lines intersect, usually with a sweep line algorithm
    • Bentley–Ottmann algorithm
    • Shamos–Hoey algorithm
  • Minimum bounding box algorithms: find the oriented minimum bounding box enclosing a set of points
  • Nearest neighbor search: find the nearest point or points to a query point
  • Nesting algorithm: make the most efficient use of material or space
  • Point in polygon algorithms: tests whether a given point lies within a given polygon
  • Point set registration algorithms: finds the transformation between two point sets to optimally align them.
  • Rotating calipers: determine all antipodal pairs of points and vertices on a convex polygon or convex hull.
  • Shoelace algorithm: determine the area of a polygon whose vertices are described by ordered pairs in the plane
  • Triangulation

Number theoretic algorithms

Numerical algorithms

Differential equation solving

Elementary and special functions

Geometric

Interpolation and extrapolation

Linear algebra

Monte Carlo

Numerical integration

Root finding

Optimization algorithms

Hybrid Algorithms

Computational science

Astronomy

Bioinformatics

  • Basic Local Alignment Search Tool also known as BLAST: an algorithm for comparing primary biological sequence information
  • Kabsch algorithm: calculate the optimal alignment of two sets of points in order to compute the root mean squared deviation between two protein structures.
  • Velvet: a set of algorithms manipulating de Bruijn graphs for genomic sequence assembly
  • Sorting by signed reversals: an algorithm for understanding genomic evolution.
  • Maximum parsimony (phylogenetics): an algorithm for finding the simplest phylogenetic tree to explain a given character matrix.
  • UPGMA: a distance-based phylogenetic tree construction algorithm.
  • Bloom Filter: probabilistic data structure used to test for the existence of an element within a set. Primarily used in bioinformatics to test for the existence of a k-mer in a sequence or sequences.

Geoscience

  • Vincenty's formulae: a fast algorithm to calculate the distance between two latitude/longitude points on an ellipsoid
  • Geohash: a public domain algorithm that encodes a decimal latitude/longitude pair as a hash string

Linguistics

  • Lesk algorithm: word sense disambiguation
  • Stemming algorithm: a method of reducing words to their stem, base, or root form
  • Sukhotin's algorithm: a statistical classification algorithm for classifying characters in a text as vowels or consonants

Medicine

  • ESC algorithm for the diagnosis of heart failure
  • Manning Criteria for irritable bowel syndrome
  • Pulmonary embolism diagnostic algorithms
  • Texas Medication Algorithm Project

Physics

Statistics

  • Algorithms for calculating variance: avoiding instability and numerical overflow
  • Approximate counting algorithm: allows counting large number of events in a small register
  • Bayesian statistics
    • Nested sampling algorithm: a computational approach to the problem of comparing models in Bayesian statistics
  • Clustering Algorithms
    • Average-linkage clustering: a simple agglomerative clustering algorithm
    • Canopy clustering algorithm: an unsupervised pre-clustering algorithm related to the K-means algorithm
    • Complete-linkage clustering: a simple agglomerative clustering algorithm
    • DBSCAN: a density based clustering algorithm
    • Expectation-maximization algorithm
    • Fuzzy clustering: a class of clustering algorithms where each point has a degree of belonging to clusters
      • Fuzzy c-means
      • FLAME clustering (Fuzzy clustering by Local Approximation of MEmberships): define clusters in the dense parts of a dataset and perform cluster assignment solely based on the neighborhood relationships among objects
    • KHOPCA clustering algorithm: a local clustering algorithm, which produces hierarchical multi-hop clusters in static and mobile environments.
    • k-means clustering: cluster objects based on attributes into partitions
    • k-means++: a variation of this, using modified random seeds
    • k-medoids: similar to k-means, but chooses datapoints or medoids as centers
    • Linde–Buzo–Gray algorithm: a vector quantization algorithm to derive a good codebook
    • Lloyd's algorithm (Voronoi iteration or relaxation): group data points into a given number of categories, a popular algorithm for k-means clustering
    • OPTICS: a density based clustering algorithm with a visual evaluation method
    • Single-linkage clustering: a simple agglomerative clustering algorithm
    • SUBCLU: a subspace clustering algorithm
    • Ward's method: an agglomerative clustering algorithm, extended to more general Lance–Williams algorithms
    • WACA clustering algorithm: a local clustering algorithm with potentially multi-hop structures; for dynamic networks
  • Estimation Theory
  • False nearest neighbor algorithm (FNN) estimates fractal dimension
  • Hidden Markov model
  • Partial least squares regression: 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: is a form of Newton's method used to solve maximum likelihood equations numerically
  • Yamartino method: calculate an approximation to the standard deviation σθ of wind direction θ during a single pass through the incoming data
  • Ziggurat algorithm: generates random numbers from a non-uniform distribution

Computer science

Computer architecture

  • Tomasulo algorithm: allows sequential instructions that would normally be stalled due to certain dependencies to execute non-sequentially

Computer graphics

  • Clipping
    • Line clipping
      • Cohen–Sutherland
      • Cyrus–Beck
      • Fast-clipping
      • Liang–Barsky
      • Nicholl–Lee–Nicholl
    • Polygon clipping
      • Sutherland–Hodgman
      • Vatti
      • Weiler–Atherton
  • Contour lines and Isosurfaces
    • Marching cubes: extract a polygonal mesh of an isosurface from a three-dimensional scalar field (sometimes called voxels)
    • Marching squares: generates contour lines for a two-dimensional scalar field
    • Marching tetrahedrons: 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 algorithms: Considers direct illumination and reflection from other objects.
  • Hidden-surface removal or Visual surface determination
    • Newell's algorithm: eliminate polygon cycles in the depth sorting required in hidden-surface removal
    • Painter's algorithm: detects visible parts of a 3-dimensional scenery
    • Scanline rendering: constructs an image by moving an imaginary line over the image
    • Warnock algorithm
  • Line Drawing: graphical algorithm for approximating a line segment on discrete graphical media.
  • Midpoint circle algorithm: an algorithm used to determine the points needed for drawing a circle
  • Ramer–Douglas–Peucker algorithm: Given a 'curve' composed of line segments to find a curve not too dissimilar but that has fewer points
  • Shading
    • 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 (spherical linear interpolation): quaternion interpolation for the purpose of animating 3D rotation
  • Summed area table (also known as an integral image): an algorithm for computing the sum of values in a rectangular subset of a grid in constant time
  • Binary space partitioning

Cryptography

Digital logic

  • Boolean minimization
    • Quine–McCluskey algorithm: also called as Q-M algorithm, programmable method for simplifying the Boolean equations
    • Petrick's method: another algorithm for Boolean simplification
    • Espresso heuristic logic minimizer: a fast algorithm for Boolean function minimization

Machine learning and statistical classification

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 algorithm
  • Rete algorithm: an efficient pattern matching algorithm for implementing production rule systems
  • Sethi-Ullman algorithm: generates optimal code for arithmetic expressions

Parsing

Quantum algorithms

Theory of computation and automata

Information theory and signal processing

Coding theory

Error detection and correction

Lossless compression algorithms

Lossy compression algorithms

Digital signal processing

Image processing

  • Contrast Enhancement
  • Connected-component labeling: find and label disjoint regions
  • Dithering and half-toning
  • Elser difference-map algorithm: a search algorithm for general constraint satisfaction problems. Originally used for X-Ray diffraction microscopy
  • 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
    • SIFT (Scale-invariant feature transform): is an algorithm to detect and describe local features in images.
    • SURF (Speeded Up Robust Features): 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.[8][9]
  • 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: partition a digital image into two or more regions
    • GrowCut algorithm: an interactive segmentation algorithm
    • Random walker algorithm
    • Region growing
    • 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

Distributed systems algorithms

Memory allocation and deallocation algorithms

Networking

Operating systems algorithms

Process synchronization

Scheduling

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.

See also

References

  1. "algorithm". LII / Legal Information Institute. Retrieved 2023-10-26.
  2. Gegenfurtner, Karl R. (1992-12-01). "PRAXIS: Brent's algorithm for function minimization". Behavior Research Methods, Instruments, & Computers. 24 (4): 560–564. doi:10.3758/BF03203605. ISSN 1532-5970.
  3. "richardshin.com | Floyd's Cycle Detection Algorithm". 2013-09-30. Retrieved 2023-10-26.
  4. Osipenko, Alexander (2021-09-12). "Gale–Shapley algorithm simply explained". Medium. Retrieved 2023-10-27.
  5. Bertoldi, David (2019-11-11). "Building a Pseudorandom Number Generator". Medium. Retrieved 2023-10-27.
  6. "Eytzinger Binary Search - Algorithmica". Retrieved 2023-04-09.
  7. "Shannon-Fano-Elias Coding" (PDF). my.ece.msstate.edu. Archived from the original (PDF) on 2021-02-28. Retrieved 2023-10-11.
  8. "Archived copy" (PDF). www.vision.ee.ethz.ch. Archived from the original (PDF) on 21 February 2007. Retrieved 13 January 2022.{{cite web}}: CS1 maint: archived copy as title (link)
  9. "Archived copy" (PDF). Archived from the original (PDF) on 2013-10-06. Retrieved 2013-10-05.{{cite web}}: CS1 maint: archived copy as title (link)
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.