tags:

views:

182

answers:

3

Could somebody describe the PCP Theorem in layman's terms? [edit:Im a computer science student beginning theory.]

+6  A: 

Well, Wikipedia has at least two pages on the subject:

What level of knowledge can we assume for your layman?

Roughly speaking, I think, it says that is possible to check that a given solution to an NP complete problem is close to optimal within a (reasonable) finite time, whereas determining the optimal solution is not.

However, that assumes you know that 'NP complete' means a problem that has a 'non-deterministic polynomial complexity', and so on -- which is quite an assumption for a layman. You need to understand complexity theory and 'big-O' notation well enough to know what that means. And to understand that there is a huge division between the algorithms with (deterministic) polynomial time characteristics and those with non-deterministic polynomial time characteristics.

In this, Wikipedia will be your friend - or the algorithm books recommended by your instructor.


Corrected based on comments from Jörg W Mittag - thanks.

Jonathan Leffler
Yuck. NP *does not* mean Non-Polynomial, it means Non-Deterministically Polynomial. IOW, it does *not* mean that a problem cannot be solved in polynomial time, it means that a problem *can* be solved in polynomial time, but only by a non-deterministic Turing machine.
Jörg W Mittag
Otherwise very good explanation.
Jörg W Mittag
Alternative formulation: NP means that if a *possible* solution magically falls out of the sky, you can compute in *polynomial* time whether it is, in fact, the real solution. So, IOW if you guess a solution, and verifying that guess is in P, then the problem is in NP.
Jörg W Mittag
Thanks. I am aware of complexity theory. I was reading a chapter on approximation algorithms for NP and found Sanjeev Arora mentioned there. So I just thought if the community had any idea about this theorem.I have scheduled an appointment with a guy in the distributed computing lab. Hope he helpsme
kunjaan
+1  A: 

you might try "every problem in NP has a PCP", but "laymen" probably don't care about this topic and any explanation in depth risks boring them into a coma ;-)

Steven A. Lowe
+3  A: 

Targeted towards the layman computer scientist:

The PCP theorem says that you can make proofs that are so easy to check that you only need to look at a constant number of (randomly selected) bits to (usually) tell a bad proof from a good one.

Targeted towards the layman theorist:

For a language to be in NP means that you can prove a string is in the language easily. For example, you can prove a boolean circuit is satisfiable by providing its satisfying input. (but it's hard to prove a circuit is not satisfiable!)

In this context the person/program/turing machine verifying the proof has to run in polynomial time (in the size of the string supposedly in the language). It must be complete, meaning that it always accepts a valid proof a given string is in the language. It must be sound, meaning it rejects any "proof" for a string that is not in the language.

For NP the verifier is deterministic. What if the verifier can use randomness? We then have to allow for some error, so we allow the verifier to not be totally sound-- it can improperly accept some proofs. Really, all we care about is that the verifier detects bad proofs at least, say, 1/4 of the time. If you want better accuracy you can always run it a few more times! :-)

The PCP theorem, in its strongest form, says that any language in NP has a proof system that can be verified by only looking at a constant number of randomly selected bits. The constant is... 3. (That's the same 3 from 3-SAT) These proofs use error correcting codes, such that any error in the proof will conflict with a large portion of the input. Using a stronger code lets you get arbitrarily close to 50% soundness with just 3 bits.

Captain Segfault
This is a very good explanation to give the gist of what PCP theorem is about.
Moron