This article does not cite any sources. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: "Model of computation" – news · newspapers · books · scholar · JSTOR (December 2009) (Learn how and when to remove this message)

This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: "Model of computation" – news · newspapers · books · scholar · JSTOR (February 2010) (Learn how and when to remove this message)

In computability theory and computational complexity theory, a **model of computation** is the definition of the set of allowable operations used in computation and their respective costs. Only assuming a certain model of computation is it possible to analyze the computational resources required, such as the execution time or memory space or to discuss the limitations of algorithms or computers.

Some examples of models include Turing machines, recursive functions, lambda calculus, and production systems.

In model-driven engineering, the **model of computation** explains how the behaviour of the whole system is the result of the behaviour of each of its components.

In the field of runtime analysis of algorithms,
it is common to specify a computational model in terms of *primitive operations* allowed which have unit cost, or simply **unit-cost operations**. A commonly used example is the random access machine, which has unit cost for read and write access to all of its memory cells. In this respect, it differs from the above mentioned Turing machine model.

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, used in proofs of computability and upper bounds on computational complexity of algorithms, and decision tree models, used in proofs of lower bounds on computational complexity of algorithmic problems.