BPP

This article is about the complexity class. For the Black nationalist organization, see Black Panther Party.
In complexity theory, BPP is the class of decision problems solvable by a probabilistic Turing machine in polynomial time, with an error probability of at most 1/3 for all instances. The abbreviation BPP refers to Boundederror, Probabilistic, Polynomial time.
BPP algorithm (1 run)  

Answer produced  
Correct answer  YES  NO 
YES  ≥2/3  ≤1/3 
NO  ≤1/3  ≥2/3 
BPP algorithm (n runs)  
Answer produced  
Correct answer  YES  NO 
YES  > 1e^{n/18}  < e^{n/18} 
NO  < e^{n/18}  > 1e^{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 [1] (http://www.cs.sfu.ca/~kabanets/cmpt710/lec16.pdf). 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.
It is known that BPP is closed under complement; that is, BPP=CoBPP. It is an open question whether BPP is a subset of NP. It is also an open question whether NP is a subset of BPP; if it is, then NP=RP (many consider this unlikely, since it would imply practical solutions for a range of difficult NPcomplete problems). It is known that RP is a subset of BPP, and BPP is a subset of PP. It is not known whether those two are strict subsets. BPP is contained in PH.
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. We also have P = BPP if EXPTIME collapses to MA, ^{1} if the exponentialtime hierarchy collapses to E = DTIME(2^{O(n)}), ^{1} or if E has exponential circuit complexity.^{2}
For a long time, one of the most famous problems that was known to be in BPP but not in P was the problem of determining whether a given number is a prime. However, in the 2002 paper PRIMES in P, Manindra Agrawal and his students Neeraj Kayal and Nitin Saxena found a deterministic polynomialtime algorithm for this problem, thus showing that it is in P.
This class is defined for an ordinary Turing machine plus a source of randomness. The corresponding class for a quantum computer is BQP.
External links
 Princeton CS 597E: Derandomization paper list (http://www.cs.princeton.edu/courses/archive/fall03/cs597E/)
 Harvard CS 225: Pseudorandomness (http://www.courses.fas.harvard.edu/~cs225/)
References
Footnotes
Important complexity classes (more) 
P  NP  CoNP  NPC  CoNPC  NPhard  UP  #P  #PC  L  NC  PC 
PSPACE  PSPACEC  EXPTIME  EXPSPACE  BQP  BPP  RP  ZPP  PCP  IP  PH 