In computability theory and computational complexity theory, a reduction is a transformation of one computational problem|problem into another problem. Depending on the transformation used this can be used to define complexity classes on a set of problems.
Intuitively, problem A is reducible to problem B if an algorithm for solving problem B efficiently (if it existed) could also be used as a subroutine to solve problem A efficiently. When this is true, solving A cannot be harder than solving B. We write A ≤m B, usually with a subscript on the ≤ to indicate the type of reduction being used (m : mapping reduction, p : polynomial reduction).