Turing completeness A computational system that can compute every Turing- computable function is called Turing-complete (or Turing-powerful). In computability theory, several closely related terms are used to describe the computational power of a computational system (such as an abstract machine or programming language): In contrast, a universal computer is defined as a device with a Turing-complete instruction set, infinite memory, and infinite available time. However, real computers have limited physical resources, so they are only linear bounded automaton complete. Real computers constructed so far can be functionally analyzed like a single-tape Turing machine (the "tape" corresponding to their memory) thus the associated mathematics can apply by abstracting their operation far enough. In colloquial usage, the terms "Turing-complete" and "Turing-equivalent" are used to mean that any real-world general-purpose computer or computer language can approximately simulate the computational aspects of any other real-world general-purpose computer or computer language. Of course, no physical system can have infinite memory but if the limitation of finite memory is ignored, most programming languages are otherwise Turing-complete. For example, an imperative language is Turing-complete if it has conditional branching (e.g., "if" and "goto" statements, or a "branch if zero" instruction see one-instruction set computer) and the ability to change an arbitrary amount of memory (e.g., the ability to maintain an arbitrary number of data items). To show that something is Turing-complete, it is enough to show that it can be used to simulate some Turing-complete system. A universal Turing machine can be used to simulate any Turing machine and by extension the computational aspects of any possible real-world computer. The Church–Turing thesis conjectures that any function whose values can be computed by an algorithm can be computed by a Turing machine, and therefore that if any real-world computer can simulate a Turing machine, it is Turing equivalent to a Turing machine. The concept is named after English mathematician and computer scientist Alan Turing.Ī related concept is that of Turing equivalence – two computers P and Q are called equivalent if P can simulate Q and Q can simulate P. Virtually all programming languages today are Turing-complete. Turing completeness is used as a way to express the power of such a data-manipulation rule set.
This means that this system is able to recognize or decide other data-manipulation rule sets.
In computability theory, a system of data-manipulation rules (such as a computer's instruction set, a programming language, or a cellular automaton) is said to be Turing-complete or computationally universal if it can be used to simulate any Turing machine. For the usage of this term in the theory of relative computability by oracle machines, see Turing reduction.