The class ZPP #
ZPP is defined like RP (Cslib.Complexity.RP), through deterministic polynomial-time machines
that read a random string, but with zero error: A ∈ ZPP enc when there are a polynomial p and
a function V : α × List Bool → Option Bool, computable in polynomial time on inputs
frame (enc a) ++ r, such that for every instance a an answer V (a, r) = some b is always
right, b = true exactly when a ∈ A, and at least half of the random strings r of length
p (enc a).length give an answer (Cslib.Complexity.DecidesWithZeroError). These are the
algorithms that never err and say "don't know" with probability at most 1 / 2
Arora and Barak, Section 7.3; the definition through expected polynomial running
time defines the same class, but expected running time is not modelled here.
ZPP = RP ∩ coRP Arora and Barak, Section 7.3
(Cslib.Complexity.ZPP_eq_RP_inter_coRP). Answering true only on the answer some true decides
a problem in ZPP with one-sided error, and so does answering false only on some false for its
complement. Conversely, for one-sided-error deciders of a problem and of its complement, which
read disjoint parts of the random string, the first accepting gives the answer some true, the
second the answer some false, and neither errs; on a member the first accepts on at least half of
the random strings, and on a non-member the second does.
Main definitions #
Cslib.Complexity.DecidesWithZeroError: the zero-error condition.Cslib.Complexity.ZPP.
Main results #
Cslib.Complexity.ZPP_subset_RP,Cslib.Complexity.ZPP_subset_coRP.Cslib.Complexity.RP_inter_coRP_subset_ZPP.Cslib.Complexity.ZPP_eq_RP_inter_coRP:ZPP = RP ∩ coRP.Cslib.Complexity.compl_mem_ZPP:ZPPis closed under complement.
References #
V decides A with zero error, using random strings whose length is p evaluated at the
length of the encoded instance: for every instance a, an answer V (a, r) = some b is right,
b = true exactly when a ∈ A, and at least half of the random strings give an answer.
Instances For
The problems decided with zero error by polynomial-time machines reading polynomially long
random strings, with respect to the encoding enc of instances Gill,
Arora and Barak, Section 7.3.
Instances For
Accepting exactly on the answer some true decides the problem with one-sided error.
Negating the answers decides the complement with zero error.
Splitting random strings #
RP ∩ coRP ⊆ ZPP: with one-sided-error deciders V₁ of A and V₂ of its complement,
reading the first and the last part of the random string, answer some true when V₁ accepts,
some false when V₂ does, and none otherwise.