Error reduction for BPP #
The error 1 / 3 in the definition of BPP (Cslib.Complexity.BPP) can be made exponentially
small Arora and Barak, Section 7.4.1. Cut the random string into 2 r(n) blocks of
p(n) bits, where n is the length of the encoded instance, run the bounded-error decider on
every block and accept when a strict majority, more than r(n), of the runs accept
(Cslib.Complexity.repeatMajority). The answer is wrong only when at most half of the runs are
right, which happens on at most an (8 / 9) ^ r(n) fraction of the random strings
(Cslib.card_filter_card_filter_le_le, an exponential-moment bound). Since 2 * 8 ^ 6 < 9 ^ 6,
r = 6 q runs make the error at most 2 ^ (-q(n)).
The condition Cslib.Complexity.PromiseProblem.SolvesWithErrorExponent enc q p V Q says that V
errs on at most a 2 ^ (-q(n)) fraction of the random strings on every instance in the promise of
Q; for a decision problem it is Cslib.Complexity.DecidesWithErrorExponent. Error reduction is
proved once, for promise problems: a promise problem is in PromiseBPP exactly when it is solved in
polynomial time with error at most 2 ^ (-q(n)) for every polynomial q
(Cslib.Complexity.mem_PromiseBPP_iff_forall_solvesWithErrorExponent), and the statement for
BPP is its instance at PromiseProblem.ofSet A. The one-sided version for RP is
Cslib.Complexity.mem_PromiseRP_iff_forall_solvesWithOneSidedErrorExponent.
Main definitions #
Cslib.Complexity.ErrorExponentAt: the per-instance condition that a verifier errs from a specified Boolean answer on at most a2 ^ (-q(n))fraction of random strings.Cslib.Complexity.PromiseProblem.SolvesWithErrorExponent: error at most2 ^ (-q(n)).Cslib.Complexity.DecidesWithErrorExponent: its specialization to a decision problem.Cslib.Complexity.BPP.booleanSubalgebra:BPPas a Boolean subalgebra ofSet α.
Main results #
Cslib.Complexity.errorExponentAt_true_iff,Cslib.Complexity.errorExponentAt_false_iff: per-instance error-exponent bounds as bounds onCslib.Complexity.acceptCount.Cslib.Complexity.ErrorExponentAt.congr: extensionality for per-instance error-exponent bounds.Cslib.Complexity.BoundedErrorAt.repeatMajority,Cslib.Complexity.PromiseProblem.SolvesWithBoundedError.repeatMajority:12 q(n)majority votes reduce the error to2 ^ (-q(n)).Cslib.Complexity.ErrorExponentAt.boundedErrorAt,Cslib.Complexity.PromiseProblem.SolvesWithErrorExponent.solvesWithBoundedError: error at most2 ^ (-q(n)) ≤ 1 / 4is bounded error.Cslib.Complexity.mem_PromiseBPP_iff_forall_solvesWithErrorExponent,Cslib.Complexity.mem_BPP_iff_forall_decidesWithErrorExponent: error reduction forPromiseBPPandBPP.Cslib.Complexity.inter_mem_BPP,Cslib.Complexity.union_mem_BPP,Cslib.Complexity.diff_mem_BPP,Cslib.Complexity.symmDiff_mem_BPP: Boolean closure ofBPP.
References #
V gives the answer b with error at most 2 ^ (-q(n)) on the instance a, using random
strings whose length is p evaluated at the length n of the encoded instance: the random strings
r of length p n with V (a, r) = !b make up at most a 2 ^ (-q n) fraction.
Instances For
Error at most 2 ^ (-q(n)) from true is rejection of at most a 2 ^ (-q(n)) fraction of the
random strings.
Error at most 2 ^ (-q(n)) from false is acceptance of at most a 2 ^ (-q(n)) fraction of
the random strings.
An error-exponent bound at an instance depends only on the verifier's values on strings of
length p(|a|).
Per-instance error reduction for bounded error: the strict majority of 12 q(n) runs of a
verifier on independent blocks of random bits errs from b on at most a 2 ^ (-q(n)) fraction of
the random strings whenever a single run produces b on at least two thirds of them.
Error at most 2 ^ (-q(n)) ≤ 1 / 4 on an instance is bounded error on that instance.
V solves the promise problem Q with error at most 2 ^ (-q(n)), using random strings whose
length is p evaluated at the length n of the encoded instance: for every yes-instance the
rejected random strings, and for every no-instance the accepted ones, make up at most a
2 ^ (-q(n)) fraction. Nothing is required on instances outside the promise.
Instances For
Error reduction for bounded error: the majority-vote argument of
Arora and Barak, Section 7.4.1, which the book states for languages, applied to
promise problems. The strict majority of 12 q(n) runs of a bounded-error solver, on independent
blocks of random bits, errs on at most a 2 ^ (-q(n)) fraction of the random strings.
Error at most 2 ^ (-q(n)) ≤ 1 / 4 is bounded error.
V decides A with error at most 2 ^ (-q(n)), using random strings whose length is p
evaluated at the length n of the encoded instance: it solves ofSet A with that error. For every
instance a, the random strings r giving the wrong answer, V (a, r) = false for members of A
and V (a, r) = true for the others, make up at most a 2 ^ (-q(n)) fraction.
Instances For
Error reduction for PromiseBPP, the promise-problem form of the BPP error reduction of
Arora and Barak, Section 7.4.1: a promise problem is in PromiseBPP exactly when,
for every polynomial q, it is solved in polynomial time with error at most 2 ^ (-q(n)).
Error reduction for BPP Arora and Barak, Section 7.4.1: a problem is in
BPP exactly when, for every polynomial q, it is decided in polynomial time with error at most
2 ^ (-q(n)).
Boolean closure of BPP #
BPP as a Boolean subalgebra of Set α.