# The math problem that could change the world: Does P = NP?

- The Millennium Prize Problems are a set of seven unsolved mathematical problems laid out by the Clay Mathematical Institute, each with a $1 million prize for those who solve them.
- One of these problems asks whether P = NP. Put simply, this asks whether computationally hard problems actually contain hidden, computationally easy solutions. This, however, is a major simplification.
- Proving that P does not equal NP would be a major milestone, and it's the result that most computer scientists expect. However, if the opposite is true, then our world would become drastically different than it is now.

In 2000, the Clay Mathematics Institute laid out seven unsolved mathematical problems and offered $1 million to anyone who could resolve them. So far, only one of the seven so-called millennium problems have been solved: the Poincaré Conjecture, which has to do with how to define spheres in different spatial dimensions.

For non-mathematicians, both the nature of this problem and why it would be worth $1 million is a little hard to wrap one’s head around. However, another millennium problem is a little easier to understand, and solving it would have drastic consequences for how our world functions. Although seemingly more straightforward, definitively proving this problem one way or another has eluded researchers for decades. The question is whether or not *P* = *NP*.

*Shutterstock*

##### What are P and NP problems?

Put simply, the *P* versus *NP* question asks whether the set of problems that can be easily solved are also in the set of problems that can be easily checked. Imagine you’re tasked with gluing a shattered teacup back together. It’s easy to see if you’ve succeeded—you’ll have a complete teacup in front of you. But it’s very hard to take all the disparate pieces and fit them back together. This is an example of an *NP* problem; hard to solve, easy to check.

Now imagine instead you were tasked with counting how many pieces the teacup had broken into rather than having to reassemble it. This would be a *P* problem. It’s comparatively easier to count the broken pieces than it is to figure how they connect to each other.

##### Why are these two problem sets called P and NP?

Computer algorithms take a certain amount of time to solve the problem they are tasked with. Generally, you can roughly estimate how much time an algorithm will take using the number of elements they need to handle. Computer scientists call the number of elements *N*.

Because some algorithms are more or less efficient than others, the time they take to complete could be related to *N*, *N*^{2}, *N*^{3}, and so on. The important thing, though, is that the exponent is a constant—it’s 1, or 2, etc. When this is the case, an algorithm is said to complete in polynomial time, or *P*.

Unfortunately, not all problems work this way. Solving some problems can take an algorithm an amount of time proportional to 2* ^{N}*, 3

*, and so on. In this case,*

^{N}*N*is the exponent, meaning that every element the algorithm has to deal with increases its complexity exponentially. In this case, the algorithm can be completed in exponential time, or

*NP*(which really stands for nondeterministic polynomial time).

The difference between these two can be huge. If a *P* algorithm has 100 elements, and its time to complete working is proportional to *N*^{3}, then it will solve its problem in about 3 hours. If it’s an *NP* algorithm, however, and its completion time is proportional to 2* ^{N}*, then it will take roughly 300 quintillion years.

^{}

*Flickr user **Jan Kaláb*

##### Why does this matter?

Another way to ask whether *P *= *NP* is to ask whether every hard problem actually contains an easy, but hidden, solution. Are these two flavor of problems irrevocably separate from one another? Are some problems simply complex by their fundamental nature?

If *P* does equal *NP*, then it would have some major implications for our way of life. One major benefit is that many *NP* problems are referred to as being *NP*-complete, which means that their solutions can be quickly adapted to any other *NP*-complete problem. So, developing a way to quickly solve one *NP*-complete problem would make significant strides towards completing all other *NP*-complete problems.

What are some examples of *NP* problems? Many researchers focus on one major concern. The majority of modern cryptography relies on codes that are hard to crack but easy to check. As an example, consider the passwords or PINs to your various accounts. Checking that they are correct is straightforward, but brute-force guessing every permutation of letters and numbers would take forever. The encryption behind securing your credit card number when ordering something on Amazon, too, is an example of *NP* cryptography. If *P *= *NP*, then cracking nearly every kind of encryption would suddenly become much, much easier.

While losing any semblance of internet security would be disastrous, there would be many beneficial consequences if *P* = *NP*. Lance Fortnow, a computer scientist and author of *The Golden Ticket: P, NP and the Search for the Impossible,* summed up some of the major consequences in an article for *Communications of the ACM*:

Transportation of all forms will be scheduled optimally to move people and goods around quicker and cheaper. Manufacturers can improve their production to increase speed and create less waste. And I’m just scratching the surface. Learning becomes easy by using the principle of Occam’s razor—we simply find the smallest program consistent with the data. Near perfect vision recognition, language comprehension and translation and all other learning tasks become trivial. We will also have much better predictions of weather and earthquakes and other natural phenomenon.

This issue of whether *P* = *NP* is so fundamental that it’s difficult to select only a handful of representative tasks that could be improved by light years. It would become comparatively easy, for example, to predict protein structures from their amino acid sequences, an important milestone for designing drugs and biotechnology. Another commonly cited *NP* problem is how to determine the most efficient layout of transistors on a computer chip, significantly boosting computing power.

In fact, proving *P* = *NP *would make it much, much easier to solve nearly all other mathematical problems. Fortnow also wrote that “A person who proves P = NP would walk home from the Clay Institute not with $1 million check but with seven (actually six since the Poincaré Conjecture appears solved).”

Ultimately the consequences of proving that *P* = *NP* would be the total upending of the current technological and economical underpinnings of society. In all likelihood, solving this problem would be an innovative boost on par, if not greater than, the invention of the internet.

##### The scientific consensus

Unfortunately, most computer scientists do not believe that *P* = *NP*—as of 2012, 83% of computer scientists did not believe this proposition to be true. It’s very difficult to prove a negative, but all the failed attempts to prove that *P* = *NP* lend credence to the idea that the two types of problems are ultimately irreconcilable. MIT scientist Scott Aronson wrote a blog post listing ten reasons why *P* most likely does not equal *NP*, and number nine lays out an argument that both significantly dispels the idea that *P* = *NP* and succinctly describes the consequences were it true:

If P=NP, then the world would be a profoundly different place than we usually assume it to be. There would be no special value in ‘creative leaps,’ no fundamental gap between solving a problem and recognizing the solution once it’s found. Everyone who could appreciate a symphony would be Mozart; everyone who could follow a step-by-step argument would be Gauss; everyone who could recognize a good investment strategy would be Warren Buffett.