3,173 Related Articles

### Computer science

computer scientistcomputer sciencescomputer scientists
In mathematics and computer science, an algorithm is an unambiguous specification of how to solve a class of problems.
It enables the use of algorithms to manipulate, store, and communicate digital information.

### Computation

computationalcomputationscomputing
Starting from an initial state and initial input (perhaps empty), the instructions describe a computation that, when executed, proceeds through a finite number of well-defined successive states, eventually producing "output" and terminating at a final ending state.
Computation is any type of calculation that includes both arithmetical and non-arithmetical steps and follows a well-defined model, for example an algorithm.

### Euclidean algorithm

Euclid's algorithmEuclideanEuclid
Greek mathematicians used algorithms in, for example, the sieve of Eratosthenes for finding prime numbers and the Euclidean algorithm for finding the greatest common divisor of two numbers. A prototypical example of an algorithm is the Euclidean algorithm to determine the maximum common divisor of two integers; an example (there are others) is described by the flowchart above and as an example in a later section.
It is an example of an algorithm, a step-by-step procedure for performing a calculation according to well-defined rules,

### Calculation

calculationscalculatingcalculate
Algorithms can perform calculation, data processing, and automated reasoning tasks.
The term is used in a variety of senses, from the very definite arithmetical calculation of using an algorithm, to the vague heuristics of calculating a strategy in a competition, or calculating the chance of a successful relationship between two people.

### Sieve of Eratosthenes

algorithm for finding prime numbershis sieve algorithmSieve
Greek mathematicians used algorithms in, for example, the sieve of Eratosthenes for finding prime numbers and the Euclidean algorithm for finding the greatest common divisor of two numbers.
In mathematics, the sieve of Eratosthenes is a simple, ancient algorithm for finding all prime numbers up to any given limit.

### Alan Turing

TuringTuring, Alan Turing, Alan
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–37 and 1939.
Turing was highly influential in the development of theoretical computer science, providing a formalisation of the concepts of algorithm and computation with the Turing machine, which can be considered a model of a general-purpose computer.

### Entscheidungsproblem

Church's theoremcorrectly evaluate every statementDecision Problem
A partial formalization of what would become the modern concept of algorithm began with attempts to solve the Entscheidungsproblem (decision problem) posed by David Hilbert in 1928.
The problem asks for an algorithm that takes as input a statement of a first-order logic (possibly with a finite number of axioms beyond the usual axioms of first-order logic) and answers "Yes" or "No" according to whether the statement is universally valid, i.e., valid in every structure satisfying the axioms.

### Flowchart

flow chartflowchartsflow charts
A prototypical example of an algorithm is the Euclidean algorithm to determine the maximum common divisor of two integers; an example (there are others) is described by the flowchart above and as an example in a later section. Algorithms can be expressed in many kinds of notation, including natural languages, pseudocode, flowcharts, drakon-charts, programming languages or control tables (processed by interpreters).
A flowchart is a type of diagram that represents an algorithm, workflow or process.

### DRAKON

Drakon-chartdrakon-chartsDRAKON visual language for business process modeling
Algorithms can be expressed in many kinds of notation, including natural languages, pseudocode, flowcharts, drakon-charts, programming languages or control tables (processed by interpreters).
DRAKON is an algorithmic visual programming and modeling language developed within the Buran space project following ergonomic design principles.

### Turing reduction

Turing reduciblerelative computabilityrelative computing
Thus, an algorithm can be considered to be any sequence of operations that can be simulated by a Turing-complete system.
It can be understood as an algorithm that could be used to solve A if it had available to it a subroutine for solving B.

### Programming language

programming languageslanguagedialect
Algorithms can be expressed in many kinds of notation, including natural languages, pseudocode, flowcharts, drakon-charts, programming languages or control tables (processed by interpreters).
Programming languages are used in computer programming to create programs that implement specific algorithms.

### Turing machine

deterministic Turing machineuniversal computeruniversal computation
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–37 and 1939.
Despite the model's simplicity, given any computer algorithm, a Turing machine capable of simulating that algorithm's logic can be constructed.

### Pseudocode

pseudo-codepseudo codepseudo
Algorithms can be expressed in many kinds of notation, including natural languages, pseudocode, flowcharts, drakon-charts, programming languages or control tables (processed by interpreters).
Pseudocode is an informal high-level description of the operating principle of a computer program or other algorithm.

### Data structure

data structuresstructurestructures
In practice, the state is stored in one or more data structures.
Usually, efficient data structures are key to designing efficient algorithms.

### Function (mathematics)

functionfunctionsmathematical function
As an effective method, an algorithm can be expressed within a finite amount of space and time and in a well-defined formal language for calculating a function.
A computation that defines a function may often be described by an algorithm, and any kind of algorithm may be used.

### Divide-and-conquer algorithm

divide and conquer algorithmdivide and conquerdivide-and-conquer
The design of algorithms is part of many solution theories of operation research, such as dynamic programming and divide-and-conquer.
A divide-and-conquer algorithm works by recursively breaking down a problem into two or more sub-problems of the same or related type, until these become simple enough to be solved directly.

### Halting problem

always terminatesavoid the halting problemdetect non-terminating computations
Chaitin prefaces his definition with: "I'll show you can't prove that a program is 'elegant—such a proof would solve the Halting problem (ibid).
Alan Turing proved in 1936 that a general algorithm to solve the halting problem for all possible program-input pairs cannot exist.

### Effective method

effective procedureeffectively calculableeffective
As an effective method, an algorithm can be expressed within a finite amount of space and time and in a well-defined formal language for calculating a function.
An effective method for calculating the values of a function is an algorithm.

### Computer program

programprogramscomputer programs
Most algorithms are intended to be implemented as computer programs.
The underlying method used for some calculation or manipulation is known as an algorithm.

### Computability

computablecomputable in ''Dcomputation
Minsky describes a more congenial variation of Lambek's "abacus" model in his "Very Simple Bases for Computability".
The computability of a problem is closely linked to the existence of an algorithm to solve the problem.

### Control table

quotations
Algorithms can be expressed in many kinds of notation, including natural languages, pseudocode, flowcharts, drakon-charts, programming languages or control tables (processed by interpreters).
The tables can have multiple dimensions, of fixed or variable lengths and are usually portable between computer platforms, requiring only a change to the interpreter, not the algorithm itself - the logic of which is essentially embodied within the table structure and content.

### Correctness (computer science)

correctnessprogram correctnesscorrect
An additional benefit of a structured program is that it lends itself to proofs of correctness using mathematical induction.
In theoretical computer science, correctness of an algorithm is asserted when it is said that the algorithm is correct with respect to a specification.

### Algorithmic efficiency

efficiencyefficientcomputational cost
Different algorithms may complete the same task with a different set of instructions in less or more time, space, or 'effort' than others.
In computer science, algorithmic efficiency is a property of an algorithm which relates to the number of computational resources used by the algorithm.

### Fast Fourier transform

FFTFast Fourier Transform (FFT)Fourier
To illustrate the potential improvements possible even in well-established algorithms, a recent significant innovation, relating to FFT algorithms (used heavily in the field of image processing), can decrease processing time up to 1,000 times for applications like medical imaging.
A fast Fourier transform (FFT) is an algorithm that computes the discrete Fourier transform (DFT) of a sequence, or its inverse (IDFT).

### Computational complexity theory

computational complexitycomplexity theorycomplexity
Van Emde Boas observes "even if we base complexity theory on abstract instead of concrete machines, arbitrariness of the choice of a model remains. It is at this point that the notion of simulation enters".
A decision problem can be viewed as a formal language, where the members of the language are instances whose output is yes, and the non-members are those instances whose output is no. The objective is to decide, with the aid of an algorithm, whether a given input string is a member of the formal language under consideration.