Documentation

CslibFrontier.Computability.Complexity.Classes.PP

The class PP #

PP is defined like BPP (Cslib.Complexity.BPP), through deterministic polynomial-time machines that read a random string, but with unbounded error Gill: A ∈ PP enc when there are a polynomial p and a function V : α × List Bool → Bool, computable in polynomial time on inputs encPair enc encBits (a, r) = frame (enc a) ++ r, such that a ∈ A exactly when more than half of the random strings r of length p (enc a).length give V (a, r) = true. The probability is written as a count (Cslib.Complexity.acceptCount), as in BPP and #P, so PP consists of the problems decided by comparing a function in #P with half the number of certificates.

A bounded-error decider accepts the members of its problem with probability at least 2 / 3 and the others with probability at most 1 / 3, so it decides by majority: BPP ⊆ PP with the same verifier (BPP_subset_PP).

Gill requires a strict majority on members, as here; the variant with a non-strict majority defines the same class (Cslib.Complexity.mem_PP_iff_decidesByNonstrictMajority). The characterisation by fair-coin machines deciding by strict majority within polynomial time is Cslib.Complexity.mem_PP_iff_exists_mem_PPTIME, in CslibFrontier.Computability.Complexity.Classes.PP.Time.

Main definitions #

Main results #

References #

def Cslib.Complexity.DecidesByMajority {α : Type} (enc : α ↪ List Bool) (p : Polynomial ℕ) (V : α × List Bool → Bool) (A : Set α) :

V decides A by majority, using random strings whose length is p evaluated at the length of the encoded instance: a ∈ A exactly when more than half of the random strings r give V (a, r) = true.

Instances For
    def Cslib.Complexity.PP {α : Type} (enc : α ↪ List Bool) :
    Set (Set α)

    The problems decided by majority by polynomial-time machines reading polynomially long random strings, with respect to the encoding enc of instances Gill.

    Instances For

      A bounded-error verifier solves its promise problem by strict majority. Ties reject, and there is no error-margin requirement outside the promise.

      Bounded error gives a majority: a decider that is right on at least two thirds of the random strings accepts the members of its problem, and only them, on more than half.

      theorem Cslib.Complexity.BPP_subset_PP {α : Type} {enc : α ↪ List Bool} :
      BPP enc ⊆ PP enc

      BPP ⊆ PP.