An encoding of a problem is a mapping from problem instances to symbol strings over some alphabet , where .
Typically, = {0, 1}.
Problems represented as binary strings are called concrete problems.
An algorithm solves a concrete problem in time O(T(n)) if, when provided any problem instance i of length n = i, the algorithm can produce the solution in at most O(T(n)) time.
A concrete problem is polynomial-time solvable if there exists an algorithm to solve it in time O(nk) for some constant k.
The complexity class P is the set of concrete decision problems solvable in polynomial time.