List of algorithms: Difference between revisions

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
imported>Onemillionthtree
m False
imported>Comp.arch
mNo edit summary
 
Line 2: Line 2:
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.
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.<ref>{{Cite web |title=algorithm |url=https://www.law.cornell.edu/wex/algorithm |access-date=2023-10-26 |website=LII / Legal Information Institute |language=en}}</ref>
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.<ref>{{Cite web |title=algorithm |url=https://www.law.cornell.edu/wex/algorithm |access-date=2023-10-26 |website=LII / Legal Information Institute |language=en}}</ref>


The following is a '''list of well-known algorithms'''.
The following is a '''list of well-known algorithms'''.
Line 15: Line 15:
* [[Cycle detection#Brent's algorithm|Brent's algorithm]]: finds a cycle in function value iterations using only two iterators<ref>{{Cite journal |last=Gegenfurtner |first=Karl R. |date=1992-12-01 |title=PRAXIS: Brent's algorithm for function minimization |journal=Behavior Research Methods, Instruments, & Computers |language=en |volume=24 |issue=4 |pages=560–564 |doi=10.3758/BF03203605 |issn=1532-5970|doi-access=free }}</ref>
* [[Cycle detection#Brent's algorithm|Brent's algorithm]]: finds a cycle in function value iterations using only two iterators<ref>{{Cite journal |last=Gegenfurtner |first=Karl R. |date=1992-12-01 |title=PRAXIS: Brent's algorithm for function minimization |journal=Behavior Research Methods, Instruments, & Computers |language=en |volume=24 |issue=4 |pages=560–564 |doi=10.3758/BF03203605 |issn=1532-5970|doi-access=free }}</ref>
* [[Floyd's cycle-finding algorithm]]: finds a cycle in function value iterations<ref>{{Cite web |date=2013-09-30 |title=richardshin.com {{!}} Floyd's Cycle Detection Algorithm |url=http://www.richardshin.com/floyds-cycle-detection-algorithm/ |access-date=2023-10-26 |language=en-US}}</ref>
* [[Floyd's cycle-finding algorithm]]: finds a cycle in function value iterations<ref>{{Cite web |date=2013-09-30 |title=richardshin.com {{!}} Floyd's Cycle Detection Algorithm |url=http://www.richardshin.com/floyds-cycle-detection-algorithm/ |access-date=2023-10-26 |language=en-US}}</ref>
* [[Gale–Shapley algorithm]]: solves the [[stable matching problem]]<ref>{{cite web |author=Tesler, G.|url=https://mathweb.ucsd.edu/~gptesler/154/slides/154_galeshapley_20-handout.pdf|website=mathweb.ucsd.edu|title=Ch. 5.9: Gale-Shapley Algorithm|date= 2020|publisher=[[University of California San Diego]]|access-date=26 April 2025|url-status=|archive-url=|archive-date=}}</ref><ref>{{cite web|last1=Kleinberg|first1=Jon |last2=Tardos|first2=Éva |url=https://www.cs.princeton.edu/~wayne/kleinberg-tardos/pdf/01StableMatching.pdf|website=www.cs.princeton.edu|title=Algorithmn Design: 1. Stable Matching|date= 2005|publisher=[[Pearson PLC|Pearson]]-[[Addison Wesley]]: [[Princeton University]]|access-date=26 April 2025|url-status=|archive-url=|archive-date=}}</ref><ref>{{cite web |last1=Goel|first1=Ashish |editor1-last=Ramseyer|editor1-first=Geo |url=https://web.stanford.edu/~ashishg/cs261/win21/notes/l5_note.pdf|website=web.stanford.edu|title=CS261 Winter 2018- 2019 Lecture 5: Gale-Shapley Algorith|date= 21 January 2019|publisher=[[Stanford University]]|access-date=26 April 2025|url-status=|archive-url=|archive-date=}}</ref>
* [[Gale–Shapley algorithm]]: solves the [[stable matching problem]]<ref>{{cite web |author=Tesler, G.|url=https://mathweb.ucsd.edu/~gptesler/154/slides/154_galeshapley_20-handout.pdf|website=mathweb.ucsd.edu|title=Ch. 5.9: Gale-Shapley Algorithm|date= 2020|publisher=[[University of California San Diego]]|access-date=26 April 2025}}</ref><ref>{{cite web|last1=Kleinberg|first1=Jon |last2=Tardos|first2=Éva |url=https://www.cs.princeton.edu/~wayne/kleinberg-tardos/pdf/01StableMatching.pdf|website=cs.princeton.edu|title=Algorithmn Design: 1. Stable Matching|date= 2005|publisher=[[Pearson PLC|Pearson]]-[[Addison Wesley]]: [[Princeton University]]|access-date=26 April 2025}}</ref><ref>{{cite web |last=Goel|first=Ashish |editor-last=Ramseyer|editor-first=Geo |url=https://web.stanford.edu/~ashishg/cs261/win21/notes/l5_note.pdf|website=web.stanford.edu|title=CS261 Winter 2018- 2019 Lecture 5: Gale-Shapley Algorith|date= 21 January 2019|publisher=[[Stanford University]]|access-date=26 April 2025}}</ref>
* [[Pseudorandom number generator]]s (uniformly distributed—see also [[List of random number generators#Pseudorandom number generators (PRNGs)|List of pseudorandom number generators]] for other PRNGs with varying degrees of convergence and varying statistical quality):{{citation needed|date=June 2024}}
* [[Pseudorandom number generator]]s (uniformly distributed—see also [[List of random number generators#Pseudorandom number generators (PRNGs)|List of pseudorandom number generators]] for other PRNGs with varying degrees of convergence and varying statistical quality):{{citation needed|date=June 2024}}
** [[ACORN (PRNG)|ACORN generator]]
** [[ACORN (PRNG)|ACORN generator]]
Line 28: Line 28:
* [[Hopcroft–Karp algorithm]]: convert a bipartite graph to a [[maximum cardinality matching]]
* [[Hopcroft–Karp algorithm]]: convert a bipartite graph to a [[maximum cardinality matching]]
* [[Hungarian algorithm]]: algorithm for finding a [[perfect matching]]
* [[Hungarian algorithm]]: algorithm for finding a [[perfect matching]]
* [[Prüfer sequence|Prüfer coding]]: conversion between a labeled tree and its [[Prüfer sequence]]
* [[Prüfer coding]]: conversion between a labeled tree and its [[Prüfer sequence]]
* [[Tarjan's off-line lowest common ancestors algorithm]]: computes [[lowest common ancestor]]s for pairs of nodes in a tree
* [[Tarjan's off-line lowest common ancestors algorithm]]: computes [[lowest common ancestor]]s for pairs of nodes in a tree
* [[Topological sorting|Topological sort]]: finds linear order of nodes (e.g. jobs) based on their dependencies.
* [[Topological sorting|Topological sort]]: finds linear order of nodes (e.g. jobs) based on their dependencies.
Line 141: Line 141:
** [[Fibonacci search technique]]: search a sorted sequence using a divide and conquer algorithm that narrows down possible locations with the aid of [[Fibonacci numbers]]
** [[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
** [[Jump search]] (or block search): linear search on a smaller subset of the sequence
** [[Interpolation search|Predictive search]]: binary-like search which factors in [[magnitude (mathematics)|magnitude]] of search term versus the high and low values in the search. Sometimes called dictionary search or interpolated search.
** [[Interpolation search|Predictive search]]: binary-like search which factors in [[magnitude (mathematics)|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
** [[Uniform binary search]]: an optimization of the classic binary search algorithm
* [[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
* [[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
Line 181: Line 181:
** [[Bogosort]]: the list is randomly shuffled until it happens to be sorted
** [[Bogosort]]: the list is randomly shuffled until it happens to be sorted
** [[Slowsort]]
** [[Slowsort]]
** [[Stalin sort]]: all elements that are not in order are removed from the list<ref>{{cite web | title=A "Sorting" algorithm | website=Code Golf Stack Exchange | date=October 30, 2018 | url=https://codegolf.stackexchange.com/questions/174964/a-sorting-algorithm | access-date=April 4, 2025}}</ref>
** [[Stooge sort]]
** [[Stooge sort]]
* Hybrid
* Hybrid
Line 458: Line 457:
** [[Successive over-relaxation]] (SOR): method used to speed up convergence of the [[Gauss–Seidel method]]
** [[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
** [[Tridiagonal matrix algorithm]] (Thomas algorithm): solves systems of tridiagonal equations
* [[SMAWK Algorithm]]
* [[Sparse matrix]] algorithms
* [[Sparse matrix]] algorithms
** [[Cuthill–McKee algorithm]]: reduce the [[bandwidth (matrix theory)|bandwidth]] of a [[symmetric sparse matrix]]
** [[Cuthill–McKee algorithm]]: reduce the [[bandwidth (matrix theory)|bandwidth]] of a [[symmetric sparse matrix]]
Line 641: Line 641:
** [[Expectation-maximization algorithm]] A class of related algorithms for finding maximum likelihood estimates of parameters in probabilistic models
** [[Expectation-maximization algorithm]] A class of related algorithms for finding maximum likelihood estimates of parameters in probabilistic models
*** [[Ordered subset expectation maximization]] (OSEM): used in [[medical imaging]] for [[positron emission tomography]], [[single-photon emission computed tomography]] and [[X-ray]] computed tomography.
*** [[Ordered subset expectation maximization]] (OSEM): used in [[medical imaging]] for [[positron emission tomography]], [[single-photon emission computed tomography]] and [[X-ray]] computed tomography.
** [[Kalman filter]]: estimate the state of a linear [[Dynamical system|dynamic system]] from a series of noisy measurements
** [[Kalman filter]]: estimate the state of a linear [[dynamical system|dynamic system]] from a series of noisy measurements
** [[Odds algorithm]] (Bruss algorithm) Optimal online search for distinguished value in sequential random input
** [[Odds algorithm]] (Bruss algorithm) Optimal online search for distinguished value in sequential random input
* [[False nearest neighbor algorithm]] (FNN) estimates [[fractal dimension]]
* [[False nearest neighbor algorithm]] (FNN) estimates [[fractal dimension]]
* [[Hidden Markov model]]
* [[Hidden Markov model]]
** [[Baum–Welch algorithm]]: computes maximum likelihood estimates and [[Maximum a posteriori|posterior mode]] estimates for the parameters of a hidden Markov model
** [[Baum–Welch algorithm]]: computes maximum likelihood estimates and [[maximum a posteriori|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
** [[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
** [[Viterbi algorithm]]: find the most likely sequence of hidden states in a hidden Markov model
* [[Partial least squares regression]]: finds a linear model describing some predicted variables in terms of other observable variables
* [[Partial least squares regression]]: finds a linear model describing some predicted variables in terms of other observable variables
Line 681: Line 681:
** [[Marching squares]]: generates contour lines for a two-dimensional scalar field
** [[Marching squares]]: generates contour lines for a two-dimensional scalar field
** [[Marching tetrahedrons]]: an alternative to [[Marching cubes]]
** [[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
* [[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
* [[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.
* [[Global illumination]] algorithms: Considers direct illumination and reflection from other objects.
Line 833: Line 833:
* [[Lexical analysis]]
* [[Lexical analysis]]
* [[LL parser]]: a relatively simple [[linear time]] parsing algorithm for a limited class of [[context-free grammar]]s
* [[LL parser]]: a relatively simple [[linear time]] parsing algorithm for a limited class of [[context-free grammar]]s
* [[LR parser]]: A more complex [[linear time]] parsing algorithm for a larger class of [[context-free grammar]]s. Variants:
* [[LR parser]]: A more complex [[linear time]] parsing algorithm for a larger class of [[context-free grammar]]s. Variants:
** [[Canonical LR parser]]
** [[Canonical LR parser]]
** [[Look-ahead LR parser|LALR (look-ahead LR) parser]]
** [[Look-ahead LR parser|LALR (look-ahead LR) parser]]
Line 963: Line 963:
* [[Fast folding algorithm]]: an efficient algorithm for the detection of approximately periodic events within time series data
* [[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
* [[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.
* [[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
* [[Karplus-Strong string synthesis]]: physical modelling synthesis to simulate the sound of a hammered or plucked string or some types of percussion


Line 977: Line 977:
** [[Ordered dithering]]
** [[Ordered dithering]]
** [[Riemersma 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
* 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]]
* [[Feature detection (computer vision)|Feature detection]]
** [[Canny edge detector]]: detect a wide range of edges in images
** [[Canny edge detector]]: detect a wide range of edges in images
Line 984: Line 984:
** [[Marr–Hildreth algorithm]]: an early [[edge detection]] algorithm
** [[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.
** [[Scale-invariant feature transform|SIFT]] (Scale-invariant feature transform): is an algorithm to detect and describe local features in images.
** {{visible anchor|SURF ([[speeded up robust features|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.<ref>{{cite web |url=http://www.vision.ee.ethz.ch/~surf/eccv06.pdf |title=Archived copy |website=www.vision.ee.ethz.ch |access-date=13 January 2022 |archive-url=https://web.archive.org/web/20070221214147/http://www.vision.ee.ethz.ch/~surf/eccv06.pdf |archive-date=21 February 2007 |url-status=dead}}</ref><ref>{{cite web |url=http://glorfindel.mavrinac.com/~aaron/school/pdf/bay06_surf.pdf |title=Archived copy |access-date=2013-10-05 |url-status=dead |archive-url=https://web.archive.org/web/20131006113018/http://glorfindel.mavrinac.com/~aaron/school/pdf/bay06_surf.pdf |archive-date=2013-10-06 }}</ref>
** {{visible anchor|SURF ([[speeded up robust features|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.<ref>{{cite web |url=http://www.vision.ee.ethz.ch/~surf/eccv06.pdf |title=Archived copy |website=vision.ee.ethz.ch |access-date=13 January 2022 |archive-url=https://web.archive.org/web/20070221214147/http://www.vision.ee.ethz.ch/~surf/eccv06.pdf |archive-date=21 February 2007 |url-status=dead}}</ref><ref>{{cite web |url=http://glorfindel.mavrinac.com/~aaron/school/pdf/bay06_surf.pdf |title=Archived copy |access-date=2013-10-05 |url-status=dead |archive-url=https://web.archive.org/web/20131006113018/http://glorfindel.mavrinac.com/~aaron/school/pdf/bay06_surf.pdf |archive-date=2013-10-06 }}</ref>
* [[Histogram equalization]]: use histogram to improve image contrast - Contrast Enhancement
* [[Histogram equalization]]: use histogram to improve image contrast - Contrast Enhancement
* [[Richardson–Lucy deconvolution]]: image de-blurring algorithm
* [[Richardson–Lucy deconvolution]]: image de-blurring algorithm

Latest revision as of 22:58, 9 November 2025

Template:Short description 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.

Automated planning

Script error: No such module "labelled list hatnote".

Combinatorial algorithms

Script error: No such module "labelled list hatnote".

General combinatorial algorithms

Graph algorithms

Script error: No such module "labelled list hatnote".

Graph drawing

Script error: No such module "labelled list hatnote".

Network theory

Script error: No such module "labelled list hatnote".

Routing for graphs

Graph search

Script error: No such module "labelled list hatnote".

Subgraphs

Sequence algorithms

Script error: No such module "labelled list hatnote".

Approximate sequence matching

Selection algorithms

Script error: No such module "Labelled list hatnote".

Sequence search

Sequence merging

Script error: No such module "Labelled list hatnote".

Sequence permutations

Script error: No such module "labelled list hatnote".

Sequence combinations

Script error: No such module "labelled list hatnote".

Sequence alignment

Sequence sorting

Script error: No such module "Labelled list hatnote". Script error: No such module "Unsubst".

Subsequences

Script error: No such module "labelled list hatnote".

Substrings

Script error: No such module "labelled list hatnote".

Computational mathematics

Script error: No such module "labelled list hatnote". Script error: No such module "Labelled list hatnote".

Abstract algebra

Script error: No such module "labelled list hatnote".

Computer algebra

Script error: No such module "labelled list hatnote".

Geometry

Template:Main category Script error: No such module "labelled list hatnote".

Number theoretic algorithms

Script error: No such module "labelled list hatnote".

Numerical algorithms

Script error: No such module "labelled list hatnote".

Differential equation solving

Script error: No such module "labelled list hatnote".

Elementary and special functions

Script error: No such module "labelled list hatnote".

Geometric

Interpolation and extrapolation

Script error: No such module "labelled list hatnote".

Linear algebra

Script error: No such module "labelled list hatnote".

Script error: No such module "anchor".

Monte Carlo

Script error: No such module "labelled list hatnote".

Numerical integration

Script error: No such module "labelled list hatnote".

Root finding

Script error: No such module "Labelled list hatnote".

Optimization algorithms

Script error: No such module "Labelled list hatnote".Hybrid Algorithms

Computational science

Script error: No such module "labelled list hatnote".

Astronomy

Bioinformatics

Script error: No such module "labelled list hatnote". Script error: No such module "Labelled list hatnote".

Geoscience

Script error: No such module "labelled list hatnote".

  • 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

Script error: No such module "labelled list hatnote".

Medicine

Script error: No such module "labelled list hatnote".

Physics

Script error: No such module "labelled list hatnote".

Statistics

Script error: No such module "labelled list hatnote".

Computer science

Script error: No such module "labelled list hatnote".

Computer architecture

Script error: No such module "labelled list hatnote".

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

Computer graphics

Script error: No such module "labelled list hatnote".

Cryptography

Script error: No such module "labelled list hatnote".

Digital logic

Machine learning and statistical classification

Script error: No such module "Labelled list hatnote". Script error: No such module "labelled list hatnote".

Programming language theory

Script error: No such module "labelled list hatnote".

Parsing

Script error: No such module "labelled list hatnote".

Quantum algorithms

Script error: No such module "labelled list hatnote".

Theory of computation and automata

Script error: No such module "labelled list hatnote".

Information theory and signal processing

Script error: No such module "Labelled list hatnote".

Coding theory

Script error: No such module "labelled list hatnote".

Error detection and correction

Script error: No such module "labelled list hatnote".

Lossless compression algorithms

Script error: No such module "Labelled list hatnote".

Lossy compression algorithms

Script error: No such module "Labelled list hatnote".

Digital signal processing

Script error: No such module "labelled list hatnote".

Image processing

Script error: No such module "labelled list hatnote".

Software engineering

Script error: No such module "labelled list hatnote".

Database algorithms

Script error: No such module "labelled list hatnote".

Distributed systems algorithms

Script error: No such module "labelled list hatnote".

Memory allocation and deallocation algorithms

Networking

Script error: No such module "labelled list hatnote".

Operating systems algorithms

Script error: No such module "labelled list hatnote".

Process synchronization

Script error: No such module "labelled list hatnote".

Scheduling

Script error: No such module "labelled list hatnote".

I/O scheduling

Script error: No such module "labelled list hatnote". Script error: No such module "Unsubst".

Disk scheduling

See also

References

Template:Reflist

Template:Algorithmic paradigms

  1. Script error: No such module "citation/CS1".
  2. Script error: No such module "Citation/CS1".
  3. Script error: No such module "citation/CS1".
  4. Script error: No such module "citation/CS1".
  5. Script error: No such module "citation/CS1".
  6. Script error: No such module "citation/CS1".
  7. Script error: No such module "citation/CS1".
  8. Script error: No such module "citation/CS1".
  9. Script error: No such module "citation/CS1".
  10. Script error: No such module "citation/CS1".