Thinking in polynomial time
“The Status of the P versus NP Problem” is the title of an excellent paper in September’s Communications of the ACM. For many developers, it may be a look at the world you live in, where solving complicated problems in a reasonable amount of time may be easy – or it may be difficult. For others, it’s a rare peek into the world of algorithmic computer science.
My own state is somewhere in the middle. I clearly remember studying the classes of problems deemed NP – non-polynomial time as I think of it, but more properly defined as nondeterministic polynomial time. However, that was a long time ago.
P problems – those solvable in polynomial time – are generally easy to code. NP problems aren’t. They seek to do tasks like determining if a large integer is prime, or finding the absolute best way to pack load a delivery truck with odd-sized packages, or working out the gravitational paths of multiple objects. Generally speaking, NP problems can be only solved in exponential time; however, the solution often can be verified in polynomial time. (It might take years to factor a 512-bit number, but you can verify in a couple of nanoseconds that the factors are correct simply by multiplying them together.)
The CACM paper, by Lance Fortnow (pictured), a professor at Northwestern University’s McCormick School of Engineering, discusses the ancient question: Is there a way of transforming NP problems so that they can be solved in polynomial time? In other words, does P = NP? (If I remember my computer science correctly, there is a hypothesis that says that if any NP problem can be transformed into a P problem, then all NP problems can be so transformed.)
Should we find out that P = NP, then a whole range of problems will become easier. Long-range weather forecasting is an NP problem. Wouldn’t it be nice to solve? On the other hand, public-key encryption only works because the factoring of very large integers is an NP problem. If P = NP, then the underpinnings of today’s best crypto algorithms will be washed away.
In a nutshell, it still seems that P ≠ NP. However, there is no proof one way or another. As Prof. Fortnow says, the question is still open. There’s a lot more to the subject – I recommend reading the paper. You’ll enjoy it; at least, I did.
Because you’re talking about math, it would be more correct to use the word “conjecture”, i.e.:
“There is a conjecture that says that if any NP problem can be transformed into a P problem, then all NP problems can be so transformed.”
Hypothesis are provisional ideas in science (subject to testing), conjectures are provisional ideas in math (subject to proof).
As Chevy Chase said on Saturday Night Live, “It was my understanding that there would be no math.”