# BPP (Komplexitätsklasse)

In der Komplexitätstheorie steht BPP (englische Abkürzung für bounded error probabilistic polynomial time) für eine Komplexitätsklasse von Entscheidungsproblemen. Ein Problem liegt in BPP, wenn es einen polynomiell zeitbeschränkten probabilistischen Algorithmus gibt, der das Problem löst und dessen Fehlerwahrscheinlichkeit höchstens 1/3 beträgt. Die Verwendung einer beliebigen anderen konstanten Fehlerschranke kleiner als 1/2 ändert nichts an der Definition der Klasse BPP, durch mehrmalige Anwendung eines gegebenen BPP-Algorithmus lässt sich jede beliebige Fehlerschranke erreichen.
BPP-Algorithmen sind Monte-Carlo-Algorithmen, da sie mit einer geringen Wahrscheinlichkeit ein falsches Ergebnis liefern.
Sie wurde 1977 mit anderen probabilistischen Komplexitätsklassen von John T. Gill eingeführt.

## Definition

Eine Sprache ${\mathcal {L}}$ liegt genau dann in der Komplexitätsklasse ${\mathcal {BPP}}$, wenn eine probabilistische Turing-Maschine $M$ existiert, für die gilt:
* $M$ läuft für alle Eingaben in polynomieller Zeit
* $x\in {\mathcal {L}}\Rightarrow Pr[M(x)=1]\geq {\frac {2}{3}}$
* $x\notin {\mathcal {L}}\Rightarrow Pr[M(x)=0]\geq {\frac {2}{3}}$
Die Konstante 2/3 ist willkürlich gewählt. Jede Konstante echt größer als 1/2 und sogar ${\frac {1}{2}}+|x|^{-c}$ für eine Konstante $c>0$ (wobei $|x|$ die Eingabelänge ist) führt zu einer äquivalenten Definition.
Im Gegensatz zur Komplexitätsklasse ZPP wird hier gefordert, dass die Laufzeit der Turingmaschine $M$ für alle Eingaben polynomiell ist. Diese Forderung kann abgeschwächt werden, so dass wie bei ZPP nur noch gefordert wird, dass der Erwartungswert der Laufzeit durch ein Polynom beschränkt ist; die beiden Definitionen sind äquivalent.

## Eigenschaften

BPP ist abgeschlossen unter Komplementbildung, Vereinigung und Schnitt. Das bedeutet, dass für zwei Sprachen $L_{1},L_{2}\in {\mathcal {BPP}}$ auch $L_{1}^{c},L_{1}\cup L_{2},L_{1}\cap L_{2}\in {\mathcal {BPP}}$. Es ist also co-BPP = BPP.
Es ist kein BPP-vollständiges Problem bekannt und es gibt Hinweise darauf, dass es keine BPP-vollständigen Probleme gibt.

## Beziehung zu anderen Komplexitätsklassen

Die Klasse BPP liegt zwischen den Klassen RP und co-RP, bei denen nur einseitige Fehler erlaubt sind, und PP, bei der lediglich eine Fehlerschranke kleiner 1/2 gefordert wird, die auch von der Eingabelänge abhängen darf. Es gilt also (RP $\cup$ co-RP) ⊆ BPP ⊆ PP. Es ist unbekannt, ob die Inklusionen echt sind, da P ⊆ RP und PP ⊆ PSPACE gilt.
Die Beziehung zur Klasse NP ist unbekannt, weder BPP ⊆ NP noch NP ⊆ BPP konnte bisher gezeigt werden, letzteres gilt aber als unwahrscheinlich. BPP liegt in der Polynomialzeithierarchie PH: ${\mathcal {BPP}}\subseteq \Sigma _{2}^{P}\cap \Pi _{2}^{P}.$ Falls P = NP, kollabiert PH vollständig zu PH = P, in diesem Fall wäre BPP = P.
Die Klasse BQP ist das entsprechende Konzept zur Klasse BPP für Quantencomputer. Es gilt BPP ⊆ BQP.
Ein bedeutender Durchbruch in der Einschätzung von Zufallsalgorithmen gelang Avi Wigderson mit Russell Impagliazzo in den 1990er Jahren. Sie zeigten, das unter bestimmten Bedingungen schnelle Zufallsalgorithmen immer in deterministische Algorithmen umgewandelt werden können (mit geeigneten Pseudozufallsgeneratoren): die Komplexitätsklasse BPP ist unter einer häufig als zutreffend angenommenen Voraussetzung gleich der Komplexitätsklasse P. Die Voraussetzung ist, dass die Komplexitätsklasse E exponentielle Schaltkreiskomplexität hat.