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.mem_ZPP_iff_tidy: membership through a tidy verifier.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
Cslib.Complexity.mem_ZPP with a tidy verifier, for proofs that compose machines.
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.