In computational complexity theory, the complexity class NTIME(f(n)) is the set of decision problems that can be solved by a non-deterministic Turing machine which runs in time O(f(n)). Here O is the big O notation, f is some function, and n is the size of the input (for which the problem is to be decided).
This means that there is a non-deterministic machine which, for a given input of size n, will run in time O(f(n)) (i.e. within a constant multiple of f(n), for n greater than some value), and will always "reject" the input if the answer to the decision problem is "no" for that input, while if the answer is "yes" the machine will "accept" that input for at least one computation path. Equivalently, there is a deterministic Turing machine M that runs in time O(f(n)) and is able to check a polynomial-length certificate for an input; if the input is a "yes" instance, then at least one certificate is accepted, if the input is a "no" instance, no certificate can make the machine accept.
The space available to the machine is not limited, although it cannot exceed O(f(n)), because the time available limits how much of the tape is reachable.
The well-known complexity class NP can be defined in terms of NTIME as follows:
Similarly, the class NEXP is defined in terms of NTIME:
The non-deterministic time hierarchy theorem says that nondeterministic machines can solve more problems in asymptotically more time.
NTIME is also related to DSPACE in the following way. For any time constructible function t(n), we have
A generalization of NTIME is ATIME, defined with alternating Turing machines. It turns out that