The **P versus NP problem** is a major unsolved problem in computer science. Informally, it asks whether every problem whose solution can be quickly verified by a computer can also be quickly solved by a computer. It was introduced in 1971 by Stephen Cook in his seminal paper "The complexity of theorem proving procedures" and is considered by many to be the most important open problem in the field. It is one of the seven Millennium Prize Problems selected by the Clay Mathematics Institute to carry a US$ 1,000,000 prize for the first correct solution.

The informal term *quickly* used above means the existence of an algorithm for the task that runs in polynomial time. The general class of questions for which some algorithm can provide an answer in polynomial time is called "class P" or just "**P**". For some questions, there is no known way to find an answer quickly, but if one is provided with information showing what the answer is, it may be possible to verify the answer quickly. The class of questions for which an answer can be *verified* in polynomial time is called **NP**.

Consider the subset sum problem, an example of a problem that is easy to verify, but whose answer may be difficult to compute. Given a set of integers, does some nonempty subset of them sum to 0? For instance, does a subset of the set {−2, −3, 15, 14, 7, −10} add up to 0? The answer "yes, because {−2, −3, −10, 15} add up to zero" can be quickly verified with three additions. However, there is no known algorithm to find such a subset in polynomial time (there is one, however, in exponential time, which consists of 2*n*-1 tries), and indeed such an algorithm can only exist if **P** = **NP**; hence this problem is in **NP** (quickly checkable) but not necessarily in **P** (quickly solvable).

An answer to the **P** = **NP** question would determine whether problems that can be verified in polynomial time, like the subset-sum problem, can also be solved in polynomial time. If it turned out that **P** does not equal **NP**, it would mean that there are problems in **NP** (such as NP-complete problems) that are harder to compute than to verify: they could not be solved in polynomial time, but the answer could be verified in polynomial time.

Aside from being an important problem in computational theory, a proof either way would have profound implications for mathematics, cryptography, algorithm research, artificial intelligence, game theory, multimedia processing and many other fields.

Read more about P Versus NP Problem: Context, NP-complete, Harder Problems, Problems in NP Not Known To Be in P or NP-complete, Does P Mean "easy"?, Reasons To Believe P ≠ NP, Consequences of The Resolution of The Problem, Results About Difficulty of Proof, Claimed Solutions, Logical Characterizations, Polynomial-time Algorithms, Formal Definitions For P and NP, Formal Definition For NP-completeness, Popular Culture

### Famous quotes containing the word problem:

“My *problem* lies in reconciling my gross habits with my net income.”

—Errol Flynn (1909–1959)