Model of computation
In computer science, and more specifically in computability theory and computational complexity theory, a model of computation is a model that describes how an output of a mathematical function is computed given an input. A model of computation 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.
Categories
Models of computation can be classified into three categories: sequential models, functional models, and concurrent models.Sequential models
Sequential models include:- Finite-state machines
- Post machines.
- Pushdown automata
- Register machines
- * Random-access machines
- Turing machines
- Decision tree model
- External memory model
Functional models
- Abstract rewriting systems
- Combinatory logic
- General recursive functions
- Lambda calculus
Concurrent models
- Actor model
- Cellular automaton
- Interaction nets
- Kahn process networks
- Logic gates and digital circuits
- Petri nets
- Process calculus
- Synchronous Data Flow
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.