Computational complexity theory is a branch of the
theory of computation in
theoretical computer science that focuses on classifying
computational problems according to their inherent difficulty, and relating those
classes to each other. A computational problem is understood to be a task that is in principle amenable to being solved by a computer, which is equivalent to stating that the problem may be solved by mechanical application of mathematical steps, such as an
algorithm.