Model of computation
In computer science, and more specifically in computability theory and computational complexity theory, a model of computation is a model which describes how an output of a mathematical function is computed given an input. A model describes how units of computations, memories, and communications are organized. The computational complexity of an algorithm can be measured given a model of computation. Using a model allows studying the performance of algorithms independently of the variations that are specific to particular implementations and specific technology.
Models
Models of computation can be classified in three categories: sequential models, functional models, and concurrent models.
Sequential models include:
Functional models include:
Concurrent models include:
- Cellular automaton
- Kahn process networks
- Petri nets
- Synchronous Data Flow
- Interaction nets
- Actor model
Models differ in their expressive power; for example, each function that can be computed by a Finite state machine can also be computed by a Turing machine, but not vice versa.
Categories
There are many models of computation, differing in the set of admissible operations and their computations cost. They fall into the following broad categories:
- Abstract machine and models equivalent to it (e.g. lambda calculus is equivalent to the Turing machine) - used in proofs of computability and upper bounds on computational complexity of algorithms.
- Decision tree models - used in proofs of lower bounds on computational complexity of algorithmic problems.