PR (complexity)

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

PR is the complexity class of all primitive recursive functions—or, equivalently, the set of all formal languages that can be decided in time bounded by such a function. This includes addition, multiplication, exponentiation, tetration, etc.

The Ackermann function is an example of a function that is not primitive recursive, showing that PR is strictly contained in R (Cooper 2004:88).

On the other hand, we can "enumerate" any recursively enumerable set (see also its complexity class RE) by a primitive-recursive function in the following sense: given an input (M,k), where M is a Turing machine and k is an integer, if M halts within k steps then output M; otherwise output nothing. Then the union of the outputs, over all possible inputs (Mk), is exactly the set of M that halt.

PR strictly contains ELEMENTARY.

PR does not contain "PR-complete" problems (assuming, e.g., reductions that belong to ELEMENTARY).

Hierarchy

[edit | edit source]

The PR class can be divided into an infinite hierarchy of increasingly large complexity levels, according to the fast-growing hierarchy.

The F0 class is the class of problems that can be solved in n+O(1) time. That is, there exists a Turing machine and a constant C, such that given an input of length n, the machine solves it and halts within n+C steps.

The F1 class is the class of problems that can be solved in 𝗉𝗈𝗅𝗒(n) time.

The F2 class is ELEMENTARY.

The F3 class is TOWER, which can be equivalently written as the class of problems that can be solved in tetration-time.

The union nFn is PR.

In practice, many problems that are not in PR but just beyond it are Fω-complete (Schmitz 2016).

References

[edit | edit source]
  • Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  • Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  • Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
[edit | edit source]