|BPP algorithm (1 run)|
|BPP algorithm (n runs)|
|YES||> 1-e-n/18||< e-n/18|
|NO||< e-n/18||> 1-e-n/18|
If a problem is in BPP, then there is an algorithm for it that is allowed to flip coins and make random decisions. It is guaranteed to run in polynomial time. On any given run of the algorithm, it has a probability of at most 1/3 of giving the wrong answer. That is true, whether the answer is YES or NO.
The choice of 1/3 in the definition is arbitrary. It can be any constant between 0 and 1/2 (exclusive) and the set BPP will be unchanged; however, this constant must be independent of the input. The idea is that there is a probability of error, but if the algorithm is run many times, the chance that the majority of the runs are wrong drops off exponentially as a consequence of the Chernoff bound This makes it possible to create a highly accurate algorithm by merely running the algorithm several times and taking a "majority vote" of the answers.
BPP is one of the largest practical classes of problems, meaning most problems of interest in BPP have efficient probabilistic algorithms that can be run quickly on real modern machines, by the method described above. For this reason it is of great practical interest which problems and classes of problems are inside BPP.
The existence of certain strong pseudorandom number generators is conjectured by most experts of the field. This conjecture implies that randomness does not give additional computational power to polynomial time computation, that is, P=RP=BPP. Note that ordinary generators are not sufficient to show this result; any probabilistic algorithm implemented using a typical random number generator will always produce incorrect results on certain inputs irrespective of the seed (though these inputs might be rare). We also have P = BPP if the exponential-time hierarchy collapses to E = (Babai et al.), or if E has exponential circuit complexity (Impagliazzo and Wigderson). Also BPP is contained in i.o.-SUBEXP = if EXPTIME does not collapse to MA (Babai et al.).
A Monte Carlo algorithm is a randomized algorithm which is likely to be correct. Problems in the class BPP have Monte Carlo algorithms with polynomial bounded runtimes. This is compared to a Las Vegas algorithm which is a randomized algorithm which is likely to be correct and is never incorrect, the alternative being to state failure. Las Vegas algorithms with polynomial bound runtimes are used to define the class ZPP.
BPP is contained in P/poly; in fact, as a consequence of the proof of this fact, every BPP algorithm operating on inputs of bounded length can be derandomized into a deterministic algorithm using a fixed string of random bits. Finding this string may be expensive, however.
An important example of a problem in BPP (in fact in co-RP) still not known to be in P is polynomial identity testing, the problem of determining whether a polynomial is identically equal to the zero polynomial. In other words, is there an assignment of variables such that when the polynomial is evaluated the result is nonzero? It suffices to choose each variable's value uniformly at random from a finite subset of at least d values to achieve bounded error probability, where d is the total degree of the polynomial.