The complexity class BPP

From Polymath Wiki
Revision as of 13:33, 28 July 2009 by Gowers (talk | contribs) (New page: The complexity class BPP is, very roughly, the class of all problems for which there is a randomized algorithm that runs in polynomial time and almost always gives the right answer. A sl...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

The complexity class BPP is, very roughly, the class of all problems for which there is a randomized algorithm that runs in polynomial time and almost always gives the right answer.

A slightly more formal definition is the following. A Boolean function [math]\displaystyle{ f:\bigcup_{n=1}^\infty\{0,1\}^n\rightarrow\{0,1\} }[/math] belongs to BPP if there is a randomized polynomial-time algorithm such that for any x such that f(x)=1 it will output 1 with probability at least 2/3, and for any x such that f(x)=0 it will output 0 with probability at least 2/3. This may not sound like "almost always" getting the right answer, but a standard trick allows you to get the almost always from such an algorithm: you just run it several times. If there is a probability of 2/3 of getting the answer right, then almost certainly you will get the answer right over half the time if you run the algorithm (independently) 50 times, say. Indeed, the probability that this is not the case decreases exponentially with the number of times you repeat the algorithm.

[Some good examples of problems in BPP are needed here.]