In Lesson
8 we looked at the class P, the set of efficiently computable
languages. In Lesson
9 we studied the class NP, the set of languages with efficiently
verifiable proofs.
Does P=NP, i.e., is every language with efficiently verifiable
proofs computable efficiently?
The P versus NP question is the most important question in
all of theoretical computer science and in mathematics in general. The
Clay Mathematics Institute lists the P versus NP question as one of
their seven Millennium
Prize Problems. Determine whether P=NP and collect a million
dollars.
To understand the importance of the P versus NP, let us imagine a
world where P = NP.
A large class of interesting search problems in NP, thought to be
hard to solve, would have efficient solutions. These include
Factoring, Map Coloring, Traveling Salesman, Job
Scheduling and thousands of others. Half of Garey
and Johnson is just a listing of NP-complete problems.
Public key cryptography would be impossible.
Learning via Occam's razor would be easy. For example if you
wanted an algorithm for separating spam from useful email, just search
for the smallest circuit that correctly identifies a large set of
samples. You can do this if P=NP.
This is just the beginning. Of course the general consensus is that
P≠NP but we have no idea on how to prove it.
Many of the future lessons will deal directly and indirectly with the
P versus NP problem. With these lessons, I hope to give you a real
feel of the importance and difficultly of this most important
question.