In mathematics and computer science, an **algorithm** (i/ˈælɡərɪðəm/) is a step-by-step procedure for calculations. Algorithms are used for calculation, data processing, and automated reasoning.

More precisely, an algorithm is an effective method expressed as a finite list of well-defined instructions for calculating a function. Starting from an initial state and initial input (perhaps empty), the instructions describe a computation that, when executed, will proceed through a finite number of well-defined successive states, eventually producing "output" and terminating at a final ending state. The transition from one state to the next is not necessarily deterministic; some algorithms, known as randomized algorithms, incorporate random input.

Though al-Khwārizmī's *algorism* referred only to the rules of performing arithmetic using Hindu-Arabic numerals, a partial formalization of what would become the modern *algorithm* began with attempts to solve the Entscheidungsproblem (the "decision problem") posed by David Hilbert in 1928. Subsequent formalizations were framed as attempts to define "effective calculability" or "effective method"; those formalizations included the Gödel–Herbrand–Kleene recursive functions of 1930, 1934 and 1935, Alonzo Church's lambda calculus of 1936, Emil Post's "Formulation 1" of 1936, and Alan Turing's Turing machines of 1936–7 and 1939. Giving a formal definition of algorithms, corresponding to the intuitive notion, remains a challenging problem.

Read more about Algorithm: Informal Definition, Formalization, Implementation, Computer Algorithms, Algorithmic Analysis, Continuous Algorithms, Legal Issues, Etymology

### Other articles related to "algorithm":

**Algorithm**s

... Here are some random walk MCMC methods Metropolis–Hastings

**algorithm**Generates a random walk using a proposal density and a method for rejecting ... A variation of the Metropolis–Hastings

**algorithm**that allows multiple trials at each point ... This allows the

**algorithm**to generally take larger steps at each iteration, which helps combat problems intrinsic to large dimensional problems ...

**Algorithm**

... The Tomasulo

**algorithm**is a hardware

**algorithm**developed in 1967 by Robert Tomasulo from IBM ... This

**algorithm**differs from scoreboarding in that it utilizes register renaming ... The Tomasulo

**algorithm**also uses a common data bus (CDB) on which computed values are broadcast to all the reservation stations that may need it ...

**Algorithm**- History: Development of The Notion of "

**algorithm**" - History After 1950

... directed toward further refinement of the definition of "

**algorithm**", and activity is on-going because of issues surrounding, in particular, foundations of mathematics (especially the ... For more, see

**Algorithm**characterizations ...

**Algorithm**s - 1960s

... Hoare 1962 - Ford–Fulkerson

**algorithm**developed by L ... Fulkerson 1962 - Bresenham's line

**algorithm**developed by Jack E ... Fedorenko 1965 - Cooley–Tukey

**algorithm**rediscovered by James Cooley and John Tukey 1965 - Levenshtein distance developed by Vladimir Levenshtein 1965 - Cocke–Younge ...

**Algorithm**s For Barcode Decoding - Symbology Decoding

**Algorithm**

... The Symbology Decoding

**Algorithm**for barcode scanners is the first symbology-based

**algorithm**for decoding ... to detect transitions in the signal, whereas the traditional

**algorithm**relies on the maxima and minima ... The Symbology Decoding

**Algorithm**for Bar Code Scanners exhibited high resilience to blur and noise when tested on 1D Universal Product Codes ...