↑ arvau

Wikipedia / List of algorithms

An algorithm is a fundamental set of rules or defined procedures that are typically designed and used to be a simpler way to solve a specific problem or a broad set of problems.

Simply speaking, algorithms define different processes, sets of rules and regulations, or methodologies that are to be followed through 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.

The following is a list of well-known algorithms.

Automated planning

Combinatorial algorithms

General combinatorial algorithms

Pseudorandom number generators (uniformly distributed—see also List of pseudorandom number generators for other PRNGs with varying degrees of convergence and varying statistical quality):

Graph algorithms

Graph drawing

  • Coin graph drawing algorithms for finite connected planar graphs (approximately computing the theoretical circle-packing given by the Koebe-Andreev-Thurston theorem). See also Fáry's theorem on straight-line drawings of planar graphs.

  • Force-based algorithms (also known as force-directed algorithms or spring-based algorithms)

  • Spectral layout

Network theory

Network analysis

Link analysis

Web link analysis

Flow networks

Routing for graphs

Minimum spanning tree

Shortest path problem

Traveling salesman problem

Vehicle routing problem

Subgraphs

Cliques

Strongly connected components

Sequence algorithms

Approximate sequence matching

  • Bitap algorithm: fuzzy algorithm that determines if strings are approximately equal.

Phonetic algorithms

String metrics: computes a similarity or dissimilarity (distance) score between two pairs of text strings

Selection algorithms

Sorted lists

Sequence merging

Sequence permutations

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

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

  • Smoothsort

Other

Unknown class

Subsequences

Substrings

Matching wildcards

Substring search

Computational mathematics

Abstract algebra

Computer algebra

Geometry

Convex hull algorithms: determining the convex hull of a set of points

Line segment intersection: finding whether lines intersect, usually with a sweep line algorithm

Triangulation

Delaunay triangulation

Voronoi diagrams, geometric dual of Delaunay triangulation

Number theoretic algorithms

Discrete logarithm:

Integer factorization: breaking an integer into its prime factors

Modular square root: computing square roots modulo a prime number

Multiplication algorithms: fast multiplication of two numbers

Primality tests: determining whether a given number is prime

Numerical algorithms

Differential equation solving

Partial differential equation:

Runge–Kutta methods

Elementary and special functions

Computation of π:

Division algorithms: for computing quotient and/or remainder of two numbers

Exponentiation:

Hyperbolic and Trigonometric Functions:

Multiplication algorithms: fast multiplication of two numbers

Multiplicative inverse Algorithms: for computing a number's multiplicative inverse (reciprocal).

Square and Nth root of a number:

Summation:

Geometric

Interpolation and extrapolation

Multivariate interpolation

Polynomial interpolation

Spline interpolation: Reduces error with Runge's phenomenon.

Linear algebra

Eigenvalue algorithms

Matrix multiplication algorithms

Solving systems of linear equations

Sparse matrix algorithms

Monte Carlo

Numerical integration

Root finding

Optimization algorithms

Hybrid Algorithms

Combinatorial optimization: optimization problems where the set of feasible solutions is discrete

Constraint satisfaction

Min conflicts algorithm general algorithms for the constraint satisfaction

Evolutionary computation: optimization inspired by biological mechanisms of evolution

Genetic algorithms

Swarm intelligence

Linear programming

Integer linear programming: solve linear programming problems where some or all the unknowns are restricted to integer values

Local search: a metaheuristic for solving computationally hard optimization problems

Nearest neighbor search (NNS): find closest points in a metric space

Nonlinear optimization

Computational science

Astronomy

Bioinformatics

Geoscience

  • Geohash: a public domain algorithm that encodes a decimal latitude/longitude pair as a hash string

  • Vincenty's formulae: a fast algorithm to calculate the distance between two latitude/longitude points on an ellipsoid

Linguistics

Medicine

Physics

Ground state approximation

Variational method

n-body problems

Statistics

Bayesian statistics

Clustering algorithms

Fuzzy clustering: a class of clustering algorithms where each point has a degree of belonging to clusters

  • 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

  • Fuzzy c-means

  • 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

  • KHOPCA clustering algorithm: a local clustering algorithm, which produces hierarchical multi-hop clusters in static and mobile environments.

  • 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

  • WACA clustering algorithm: a local clustering algorithm with potentially multi-hop structures; for dynamic networks

  • Ward's method: an agglomerative clustering algorithm, extended to more general Lance–Williams algorithms

Estimation Theory

Expectation-maximization algorithm A class of related algorithms for finding maximum likelihood estimates of parameters in probabilistic models

Hidden Markov model

Queuing theory

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

Polygon clipping

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: 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

Line drawing: graphical algorithm for approximating a line segment on discrete graphical media.

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

Cryptography

Asymmetric (public key) encryption:

Digital signatures (asymmetric authentication):

DSA, and its variants:

Cryptographic hash functions (see also the section on message authentication codes):

  • BLAKE

  • MD5 – Note that there is now a method of generating collisions for MD5

  • RIPEMD-160

  • SHA-1 – Note that there is now a method of generating collisions for SHA-1

  • SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512)

  • SHA-3 (SHA3-224, SHA3-256, SHA3-384, SHA3-512, SHAKE128, SHAKE256)

  • Tiger (TTH), usually used in Tiger tree hashes

  • WHIRLPOOL

Cryptographically secure pseudo-random number generators

Key exchange

Key derivation functions, often used for password hashing and key stretching

Message authentication codes (symmetric authentication algorithms, which take a key as a parameter):

Secret sharing, secret splitting, key splitting, M of N algorithms

Symmetric (secret key) encryption:

Digital logic

Boolean minimization

Machine learning and statistical classification

Association rule learning: discover interesting relations between variables, used in data mining

Boosting (meta-algorithm): Use many weak learners to boost effectiveness

Computer Vision

Decision Trees

Neural Network

Reinforcement learning:

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

Programming language theory

Parsing

LR parser: A more complex linear time parsing algorithm for a larger class of context-free grammars. Variants:

Quantum algorithms

Theory of computation and automata

Information theory and signal processing

Coding theory

Error detection and correction

BCH Codes

Hamming codes

Redundancy checks

Lossless compression algorithms

Dictionary coders

Lempel–Ziv

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

Huffman coding: simple lossless compression taking advantage of relative character frequencies

Entropy coding with known entropy characteristics

Universal codes: encodes positive integers into binary code words

Lossy compression algorithms

Audio and Speech compression

Image compression

Vector quantization: technique often used in lossy data compression

Digital signal processing

Discrete Fourier transform: determines the frequencies contained in a (segment of a) signal

Image processing

Dithering and half-toning

Feature detection

Segmentation: partition a digital image into two or more regions

Software engineering

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

Database algorithms

Join algorithms

Distributed systems algorithms

Clock synchronization

Consensus (computer science): agreeing on a single value or history among unreliable processors

Detection of Process Termination

Leader election: a method for dynamically selecting a coordinator

Mutual exclusion

Snapshot algorithm: record a consistent global state for an asynchronous system

Memory allocation and deallocation algorithms

Garbage collectors

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

Operating systems algorithms

Page replacement algorithms: for selecting the victim page under low memory conditions

Process synchronization

Scheduling

I/O scheduling

Disk scheduling

See also

References