Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Computability
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Formal models of computation ==<!-- This section is linked from [[Abstract machine]] --> {{main|Model of computation}} A [[model of computation]] is a formal description of a particular type of computational process. The description often takes the form of an [[abstract machine]] that is meant to perform the task at hand. General models of computation equivalent to a [[Turing machine]] (see [[Church–Turing thesis]]) include: ;[[Lambda calculus]]: A computation consists of an initial lambda expression (or two if you want to separate the function and its input) plus a finite sequence of lambda terms, each deduced from the preceding term by one application of [[beta reduction]]. ;[[Combinatory logic]] :A concept which has many similarities to <math>\lambda</math>-calculus, but also important differences exist (e.g. fixed point combinator '''Y''' has normal form in combinatory logic but not in <math>\lambda</math>-calculus). Combinatory logic was developed with great ambitions: understanding the nature of paradoxes, making foundations of mathematics more economic (conceptually), eliminating the notion of variables (thus clarifying their role in mathematics). ;[[μ-recursive function]]s: A computation consists of a μ-recursive function, i.e. its defining sequence, any input value(s) and a sequence of recursive functions appearing in the defining sequence with inputs and outputs. Thus, if in the defining sequence of a recursive function {{math|''f''(''x'')}} the functions {{math|''g''(''x'')}} and {{math|''h''(''x'',''y'')}} appear, then terms of the form {{math|''g''(5) {{=}} 7}} or {{math|''h''(3,2) {{=}} 10}} might appear. Each entry in this sequence needs to be an application of a basic function or follow from the entries above by using [[Function composition (computer science)|composition]], [[primitive recursion]] or [[Mu-recursive function|μ-recursion]]. For instance if {{math|''f''(''x'') {{=}} ''h''(''x'',''g''(''x''))}}, then for {{math|''f''(5) {{=}} 3}} to appear, terms like {{math|''g''(5) {{=}} 6}} and {{math|''h''(5,6) {{=}} 3}} must occur above. The computation terminates only if the final term gives the value of the recursive function applied to the inputs. ;[[String rewriting system]]s: Includes [[Markov algorithm]]s, that use [[grammar]]-like rules to operate on [[string (computer science)|strings]] of symbols; also [[Post canonical system]]. ;[[Register machine]] :A theoretical idealization of a computer. There are several variants. In most of them, each register can hold a natural number (of unlimited size), and the instructions are simple (and few in number), e.g. only decrementation (combined with conditional jump) and incrementation exist (and halting). The lack of the infinite (or dynamically growing) external store (seen at Turing machines) can be understood by replacing its role with [[Gödel numbering]] techniques: the fact that each register holds a natural number allows the possibility of representing a complicated thing (e.g. a sequence, or a matrix etc.) by an appropriate huge natural number — unambiguity of both representation and interpretation can be established by [[number theory|number theoretical]] foundations of these techniques. ;[[Turing machine]]: Also similar to the finite state machine, except that the input is provided on an execution "tape", which the Turing machine can read from, write to, or move back and forth past its read/write "head". The tape is allowed to grow to arbitrary size. The Turing machine is capable of performing complex calculations which can have arbitrary duration. This model is perhaps the most important model of computation in computer science, as it simulates computation in the absence of predefined resource limits. ;[[Multitape Turing machine]]: Here, there may be more than one tape; moreover there may be multiple heads per tape. Surprisingly, any computation that can be performed by this sort of machine can also be performed by an ordinary Turing machine, although the latter may be slower or require a larger total region of its tape. ;[[P′′]] :Like Turing machines, P′′ uses an infinite tape of symbols (without random access), and a rather minimalistic set of instructions. But these instructions are very different, thus, unlike Turing machines, P′′ does not need to maintain a distinct state, because all “memory-like” functionality can be provided only by the tape. Instead of rewriting the current symbol, it can perform a [[modular arithmetic]] incrementation on it. P′′ has also a pair of instructions for a cycle, inspecting the blank symbol. Despite its minimalistic nature, it has become the parental formal language of an implemented and (for entertainment) used programming language called [[Brainfuck]]. In addition to the general computational models, some simpler computational models are useful for special, restricted applications. [[Regular expression]]s, for example, specify string patterns in many contexts, from office productivity software to [[programming language]]s. Another formalism mathematically equivalent to regular expressions, [[finite-state machine|Finite automata]] are used in circuit design and in some kinds of problem-solving. [[Context-free grammar]]s specify programming language syntax. Non-deterministic [[pushdown automaton|pushdown automata]] are another formalism equivalent to context-free grammars. Different models of computation have the ability to do different tasks. One way to measure the power of a computational model is to study the class of [[formal language]]s that the model can generate; in such a way the [[Chomsky hierarchy]] of languages is obtained. Other restricted models of computation include: ;[[Deterministic finite automaton]] (DFA): Also called a finite-state machine. All real computing devices in existence today can be modeled as a finite-state machine, as all real computers operate on finite resources. Such a machine has a set of states, and a set of state transitions which are affected by the input stream. Certain states are defined to be accepting states. An input stream is fed into the machine one character at a time, and the state transitions for the current state are compared to the input stream, and if there is a matching transition the machine may enter a new state. If at the end of the input stream the machine is in an accepting state, then the whole input stream is accepted. ;[[Nondeterministic finite automaton]] (NFA): Another simple model of computation, although its processing sequence is not uniquely determined. It can be interpreted as taking multiple paths of computation simultaneously through a finite number of states. However, it is possible to prove that any NFA is reducible to an equivalent DFA. ;[[Pushdown automaton]]: Similar to the finite state machine, except that it has available an execution stack, which is allowed to grow to arbitrary size. The state transitions additionally specify whether to add a symbol to the stack, or to remove a symbol from the stack. It is more powerful than a DFA due to its infinite-memory stack, although only the top element of the stack is accessible at any time.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)