# Complexity Zoo:P

*Back to the Main Zoo* -
*Complexity Garden* -
*Zoo Glossary* -
*Zoo References*

*Complexity classes by letter:*
Symbols -
A -
B -
C -
D -
E -
F -
G -
H -
I -
J -
K -
L -
M -
N -
O -
**P** -
Q -
R -
S -
T -
U -
V -
W -
X -
Y -
Z

*Lists of related classes:*
Communication Complexity -
Hierarchies -
Nonuniform

P -
P/log -
P/poly -
P^{#P} -
P^{#P[1]} -
P_{CTC} -
PAC^{0} -
PBP -
k-PBP -
P_{C} -
P^{cc} -
P_{}^{cc} -
PCD(r(n),q(n)) -
P-Close -
PCP(r(n),q(n)) -
PermUP -
PEXP -
PF -
PFCHK(t(n)) -
PH -
PH^{cc} -
Φ_{2}P -
PhP -
Π_{2}P -
PINC -
PIO -
P^{K} -
PKC -
PL -
PL_{1} -
PL_{∞} -
PLF -
PLL -
PLS -
P^{NP} -
P^{||NP} -
P^{NP[k]} -
P^{NP[log]} -
P^{NP[log^2]} -
P-OBDD -
PODN -
polyL -
PostBQP -
PP -
PP^{cc} -
PP/poly -
PPA -
PPAD -
PPADS -
P^{PP} -
PPP -
PPSPACE -
PQUERY -
PR -
P_{R} -
Pr_{H}SPACE(f(n)) -
PromiseBPP -
PromiseBQP -
PromiseP -
PromiseRP -
PromiseUP -
PrSPACE(f(n)) -
P-Sel -
PSK -
PSPACE -
PSPACE/poly -
PT_{1} -
PTAPE -
PTAS -
PT/WK(f(n),g(n)) -
PZK

##### P: Polynomial-Time

The class that started it all.

The class of decision problems solvable in polynomial time by a Turing machine. (See also FP, for function problems.)

Defined in [Edm65], [Cob64], [Rab60], and other seminal early papers.

Contains some highly nontrivial problems, including linear programming [Kha79] and finding a maximum matching in a general graph [Edm65].

Contains the problem of testing whether an integer is prime [AKS02], an important result that improved on a proof requiring an assumption of the generalized Riemann hypothesis [Mil76].

A decision problem is P-complete if it is in P, and if every problem in P can be reduced to it in L (logarithmic space). The canonical P-complete problem is *circuit evaluation*: given a Boolean circuit and an input, decide what the circuit outputs when given the input.

Important subclasses of P include L, NL, NC, and SC.

P is contained in NP, but whether they're equal seemed to be an open problem when I last checked.

Efforts to generalize P resulted in BPP and BQP.

The nonuniform version is P/poly, the monotone version is mP, and versions over the real and complex number fields are P_{R} and P_{C} respectively.

In descriptive complexity, P can be defined by three different kind of formulae, FO(lfp) which is also FO()], and also as SO(Horn)

P queries are exactly the one that can be written in the While^{/cons} languages.

##### P/log: P With Logarithmic Advice

Same as P/poly, except that the advice string for input size n can have length at most logarithmic in n, rather than polynomial.

Strictly contained in IC[log,poly].

If NP is contained in P/log then P = NP.

##### P/poly: Nonuniform Polynomial-Time

The class of decision problems solvable by a family of polynomial-size Boolean circuits. The family can be *nonuniform*; that is, there could be a completely different circuit for each input length.

Equivalently, P/poly is the class of decision problems solvable by a polynomial-time Turing machine that receives an 'advice string,' that depends only on the size n of the input, and that itself has size upper-bounded by a polynomial in n.

Contains BPP by the progenitor of derandomization arguments [Adl78] [KL82]. By extension, BPP/poly, BPP/mpoly, and BPP/rpoly all equal P/poly. (By contrast, there is an oracle relative to which BPP/log does not equal BPP/mlog, while BPP/mlog and BPP/rlog are not equal relative to any oracle.)

[KL82] showed that, if P/poly contains NP, then PH collapses to the second level, Σ_{2}P.

They also showed:

It was later shown that, if NP is contained in P/poly, then PH collapses to ZPP^{NP} [KW98] and indeed S_{2}P [Cai01]. This seems close to optimal, since there exists an oracle relative to which the collapse cannot be improved to Δ_{2}P [Wil85].

If NP is not contained in P/poly, then P does not equal NP. Much of the effort toward separating P from NP is based on this observation. However, a 'natural proof' as defined by [RR97] cannot be used to show NP is outside P/poly, if there is any pseudorandom generator in P/poly that has hardness 2^{Ω(n^ε)} for some ε>0.

If NP is contained in P/poly, then MA = AM [AKS+95]

The monotone version of P/poly is mP/poly.

P/poly has measure 0 in E with Σ_{2}P oracle [May94b].

Strictly contains IC[log,poly] and P/log.

##### P^{#P}: P With #P Oracle

I decided this class is so important that it deserves an entry of its own, apart from #P.

Contains PH [Tod89], and is contained in PSPACE.

Equals P^{PP} (exercise for the visitor).

##### P^{#P[1]}: P With Single Query To #P Oracle

##### P_{CTC}: P With Closed Time Curves

Same as P with access to bits along a closed time curve.

Implicitly defined in [Aar05c], where it was shown that PSPACE = P_{CTC}.

See also BQP_{CTC}.

##### PAC^{0}: Probabilistic AC^{0}

The Political Action Committee for computational complexity research.

The class of problems for which there exists a DiffAC^{0} function f such that the answer is "yes" on input x if and only if f(x)>0.

Equals TC^{0} and C_{=}AC^{0} under logspace uniformity [ABL98].

##### PBP: Polynomial-Size Branching Program

Same as k-PBP but with no width restriction.

##### k-PBP: Polynomial-Size Width-k Branching Program

A *branching program* is a directed acyclic graph with a designated start vertex. Each (non-sink) vertex is labeled by the name of an input bit, and has two outgoing edges, one of which is followed if that input bit is 0, the other if the bit is 1. A sink vertex can be either an 'accept' or a 'reject' vertex.

The *size* of the branching program is the number of vertices. The branching program has *width k* if the vertices can be sorted into levels, each with at most k vertices, such that each edge goes from a level to the one immediately after it.

Then k-PBP is the class of decision problems solvable by a family of polynomial-size, width-k branching programs. (A uniformity condition may also be imposed.)

k-PBP equals (nonuniform) NC^{1} for constant k at least 5 [Bar89]. On the other hand, 4-PBP is in ACC^{0} [BT88].

Contained in k-EQBP, as well as PBP.

See also BP_{d}(P).

##### P_{C}: Polynomial-Time Over The Complex Numbers

An analog of P for Turing machines over a complex number field.

Defined in [BCS+97].

See also P_{R}, NP_{C}, NP_{R}, VP_{k}.

##### P^{cc}: Communication Complexity P

In a two-party communication complexity problem, Alice and Bob have n-bit strings x and y respectively, and they wish to evaluate some Boolean function f(x,y) using as few bits of communication as possible. P^{cc} is the class of (infinite families of) f's, such that the amount of communication needed is only O(polylog(n)), even if Alice and Bob are restricted to a deterministic protocol.

Note that all functions of the form above are solvable given bits of communication, since no bounds are placed on the computational abilities of Alice and Bob. Thus, when discussing this class, "polynomially" is sometimes used in place of "polylogarithmically."

Is strictly contained in NP^{cc} and in BPP^{cc} because of the EQUALITY problem.

Defined in [BFS86].

##### P_{}^{cc}: P^{cc} in NOF model, players

Like P^{cc}, but with players, where each player can see all of the other player's bits, but not their own. Intuitively, each player has their bits written on their forehead.

More formally, P_{}^{cc} is the class of functions where for all , , such that is solvable in a deterministic sense by players, each of which is aware of all inputs other than his own, and such that bits of communication are used.

P_{}^{cc} is trivially contained in BPP_{}^{cc}, RP_{}^{cc} and NP_{}^{cc}.

##### PCD(r(n),q(n)): Probabilistically Checkable Debate

The class of decision problems decidable by a *probabilistically checkable debate system*, as follows.

Two debaters B and C alternate writing strings on a "debate tape," with B arguing that the answer is "yes" and C arguing the answer is "no." Then a polynomial-time verifier flips O(r(n)) random coins and makes O(q(n)) *nonadaptive* queries to the debate tape (meaning that they depend only on the input and the random coins, not the results of previous queries). The verifier then outputs an answer, which should be correct with high probability.

Defined in [CFL+93], who also showed that PCD(log n, 1) = PSPACE. This result was used to show that certain problems are PSPACE-hard even to approximate.

Contained in GPCD(r(n),q(n)).

##### P-Close: Problems Close to P

The class of decision problems solvable by a polynomial-time algorithm that outputs the wrong answer on only a sparse (that is, polynomially-bounded) set of instances.

Defined in [Yes83].

Contains Almost-P and is contained in P/poly [Sch86].

##### PCP(r(n),q(n)): Probabilistically Checkable Proof

The class of decision problems such that a "yes" answer can be verified by a *probabilistically checkable proof*, as follows.

The verifier is a polynomial-time Turing machine with access to O(r(n)) uniformly random bits. It has random access to a *proof* (which might be exponentially long), but can query only O(q(n)) bits of the proof.

Then we require the following:

- If the answer is "yes," there exists a proof such that the verifier accepts with certainty.
- If the answer is "no," then for all proofs the verifier rejects with probability at least 1/2 (over the choice of the O(r(n)) random bits).

Defined in [AS98].

By definition NP = PCP(0,poly(n)).

MIP = PCP(poly(n),poly(n)).

PCP(r(n),q(n)) is contained in NTIME(2^{O(r(n))}q(n) + poly(n)).

NP = PCP(log n, log n) [AS98].

In fact, NP = PCP(log n, 1) [ALM+98]!

On the other hand, if NP is contained in PCP(o(log n), o(log n)), then P = NP [FGL+91].

Also, even though there exists an oracle relative to which NP = EXP [Hel84], if we could show there exists an oracle relative to which PCP(log n, 1) = EXP, then we'd have proved P not equal to NP [For94].

Another weird oracle fact: since NP does not equal NEXP [SFM78], PCP(log n, log n) does not equal PCP(poly(n), poly(n)). However, there exist oracles relative to which the latter inequality is false [HCC+92].

##### PermUP: Self-Permuting UP

The class of languages L in UP such that the mapping from an input x to the unique witness for x is a permutation of L.

Contains P.

Defined in [HT03], where it was also shown that the closure of PermUP under polynomial-time one-to-one reductions is UP.

On the other hand, they show that if PermUP = UP then E = UE.

See also: SelfNP.

##### PEXP: Probabilistic Exponential-Time

Has the same relation to EXP as PP does to P.

Is not contained in P/poly [BFT98].

##### PF: Alternate Name for FP

##### PFCHK(t(n)): Proof-Checker

The class of decision problems solvable in time O(t(n)) by a nondeterministic Turing machine, as follows. The machine is given oracle access to a *proof string* of unbounded length.

- If the answer is "yes," then there exists a value of the proof string such that all computation paths accept.
- If the answer is "no," then for all values of the proof string, there exists a computation path that rejects.

Credited in [For94] to S. Arora, R. Impagliazzo, and U. Vazirani.

An interesting question is whether NP = PFCHK(log n) relative to all possible oracles. Fortnow [For94] observes that the answer depends on what oracle access mechanism is used.

##### PH: Polynomial-Time Hierarchy

Let Δ_{0}P = Σ_{0}P = Π_{0}P = P. Then for i>0, let

- Δ
_{i}P = P with Σ_{i-1}P oracle. - Σ
_{i}P = NP with Σ_{i-1}P oracle. - Π
_{i}P = coNP with Σ_{i-1}P oracle.

Then PH is the union of these classes for all nonnegative constant i.

PH can also be defined using alternating quantifiers: it's the class of problems of the form, "given an input x, does there exist a y such that for all z, there exists a w ... such that φ(x,y,z,w,...)," where y,z,w,... are polynomial-size strings and φ is a polynomial-time computable predicate. It's not totally obvious that this is equivalent to the first definition, since the first one involves adaptive NP oracle queries and the second one doesn't, but it is.

Defined in [Sto76].

Contained in P with a PP oracle [Tod89].

Relative to a random oracle, PH is strictly contained in PSPACE with probability 1 [Cai86].

Furthermore, there exist oracles separating any Σ_{i}P from Σ_{i+1}P. On the other hand, it is unknown whether Σ_{i}P is strictly contained in Σ_{i+1}P relative to a *random* oracle with probability 1 (see [Has87]). Book [Boo94] shows that if PH collapses relative to a random oracle with probability 1, then it collapses unrelativized.

It was shown in [CPO7] that if the NP Machine Hypothesis holds, then .

For a compendium of problems complete for different classes of the Polynomial Hierarchy see [Sch02a] and [Sch02b].

PH is equal to the set of boolean queries recognizable by a concurent random acess machine using exponentially many processors and constant time[Imm89].

Since NP is the class of query expressible in second-order existantial logic, PH can also be defined as the query expressible in second-order logic.

##### PH^{cc}: Communication Complexity PH

The obvious generalization of NP^{cc} and coNP^{cc} to a nondeterministic hierarchy.

It is unknown whether Σ_{2}^{cc} equals Π_{2}^{cc}.

Defined in [BFS86], where it was also shown (among other things) that BPP^{cc} is contained in Σ_{2}^{cc} ∩ Π_{2}^{cc}.

##### Φ_{2}P: Second Level of the Symmetric Hierarchy, Alternative Definition

The class of problems for which there exists a polynomial-time predicate P(x,y,z) such that for all x, if the answer on input x is "yes," then

- For all y, there exists a z for which P(x,y,z).
- For all z, there exists a y for which P(x,y,z).

Contained in Σ_{2}P and Π_{2}P.

Defined in [Can96], where it was also observed that Φ_{2}P = S_{2}P.

##### PhP: Physical Polynomial-Time

Defined by Valiant [Val03] to be "the class of physically constructible polynomial resource computers" (characterizing what "can be computed in the physical world in practice"). There he says that PhP contains P and BPP, but that it is open whether PhP contains BQP, since no scalable quantum computing proposal has been demonstrated beyond reasonable doubt.

For what it's worth, the present zookeeper has more qualms about admitting DTIME(n^{1000}) into PhP than BQTIME(n^{2}). It is very possible that the total number of bits or bit tranisitions that can be witnessed by any one observer in the universe is finite. (Recent observations of the cosmological constant combined with plausible fundamental physics yields a bound of 10^{k} with k in the low hundreds.) In practice, less than 10^{50} bits and less than 10^{80} bit transitions are available for human use. (This is combining the number of atoms in the Earth with the number of signals that they can exchange in a millenium.)

The present veterinarian concurs that PhP is an unhealthy animal, although it is valid to ask whether BQP is a realistic class.

##### Π_{2}P: coNP With NP Oracle

Complement of Σ_{2}P.

Along with Σ_{2}P, comprises the second level of PH, the polynomial hierarchy. For any fixed k, there is a problem in Π_{2}P ∩ Σ_{2}P that cannot be solved by circuits of size n^{k} [Kan82].

##### PINC: Polynomial Ignorance of Names of Classes

(Actually, I've since been informed that PINC means "Incremental Polynomial-Time.")

The class of function problems, f:{0,1}^{n}->{0,1}^{m}, such that the k^{th} output bit is computable in time polynomial in n and k.

Defined in [JY88].

Contained in PIO. This containment is strict, since if m=2^{n} (say), then computing the first bit of f(x) might be EXP-complete.

##### PIO: Polynomial Input Output

The class of function problems, f:{0,1}^{n}->{0,1}^{m}, such that f(x) is computable in time polynomial in n and m. Allows us to discuss whether a function is "efficiently computable" or not, even if the output is too long to write down in polynomial time.

Defined in [Yan81].

Strictly contains PINC.

##### P^{K}: P With Kolmogorov-Complexity Oracle

P equipped with an oracle that, given a string x, returns the length of the shortest program that outputs x.

A similar class was defined in [ABK+02], where it was also shown that P^{K} contains PSPACE. It is not known whether P^{K} contains all of R, or even any recursive problem not in PSPACE.

See also: BPP^{KT}.

##### PKC: Perfect Knowledge Complexity

Has the same relation to PZK as SKC does to SZK.

Defined in [GP91].

##### PL: Probabilistic L

Has the same relation to L that PP has to P.

Contains BPL.

PL^{PL} = PL (see [HO02]).

##### PL_{1}: Polynomially-Bounded L_{1} Spectral Norm

The class of Boolean functions f:{-1,1}^{n}->{-1,1} such that the sum of absolute values of Fourier coefficients of f is bounded by a polynomial in n.

Defined in [BS90], where it was also shown that PL_{1} is contained in PT_{1} (and this inclusion is strict).

##### PL_{∞}: Polynomially-Bounded L_{∞}^{-1} Spectral Norm

The class of Boolean functions f:{-1,1}^{n}->{-1,1} such that the maximum of |α|^{-1}, over all Fourier coefficients α of f, is upper-bounded by a polynomial in n.

Defined in [BS90], where it was also shown that PL_{∞} contains PT_{1} (and this inclusion is strict).

##### PLF: Polynomial Leaf

Defined in [Pap90].

I believe it's the same as PPA.

##### PLL: Polynomial Local Lemma

The class of TFNP function problems that are guaranteed to have a solution because of the Lovász Local Lemma. Defined in [Pap94b].

##### PLS: Polynomial Local Search

The subclass of TFNP function problems that are guaranteed to have a solution because of the lemma that "every finite directed acyclic graph has a sink."

More precisely, for each input, there's a finite set of *solutions* (i.e. strings), and a polynomial-time algorithm that computes a *cost* for each solution, and a *neighboring solution* of lower cost provided that one exists. Then the problem is to return any solution that has cost less than or equal to all of its neighbors. (In other words, a local optimum.)

(*Note:* In the Zookeeper's humble opinion, PLS *should* have been defined as follows: there exist polynomial-time algorithms that compute the cost of a solution, and the set of *all* neighbors of a given solution, not just a single solution of lower cost. Of course we'd require that every solution has only polynomially many neighbors. The two definitions are not obviously equivalent, and it's conceivable that knowing all the neighbors would be helpful -- for example, in simulated annealing one sometimes makes uphill moves.)

(*Note to Note:* The equivalance of these classes was shown (though not stated explicitly) in Theorem 1 of [JPY88].)

There exists an oracle relative to which PLS is not contained in FBQP [Aar03].

Also, there exist oracles relative to which PLS is not contained in PPA [BM04], and PPA and PPP are not contained in PLS [Mor01].

Whether PLS is not in PPP relative to some oracle remains open.

[CT07] conjecture that if PPAD is in P, then PLS is in P.

##### P^{NP}: P With Oracle Access To NP

See Δ_{2}P.

##### P^{||NP}: P With Parallel Queries To NP

Equals P^{NP[log]} ([BH91] and [Hem89] independently).

##### P^{NP[k]}: P With k NP Queries(for constant k)

Equals P with 2^{k}-1 parallel queries to NP (i.e. queries that do not depend on the outcomes of previous queries) ([BH91] and [Hem89] independently).

If P^{NP[1]} = P^{NP[2]}, then P^{NP[1]} = P^{NP[log]} and indeed PH collapses to Δ_{3}P (attributed in [Har87b] to J. Kadin).

##### P^{NP[log]}: P With Log NP Queries

The class of decision problems solvable by a P machine, that can make O(log n) queries to an NP oracle (where n is the length of the input).

Equals P^{||NP}, the class of decision problems solvable by a P machine that can make polynomially many *nonadaptive* queries to an NP oracle (i.e. queries that do not depend on the outcomes of previous queries) ([BH91] and [Hem89] independently).

P^{NP[log]} is contained in PP [BHW89].

Determining the winner in an election system proposed in 1876 by Charles Dodgson (a.k.a. Lewis Carroll) has been shown to be complete for P^{NP[log]} [HHR97].

Contains P^{NP[k]} for all constants k.

##### P^{NP[log^2]}: P With Log^{2} NP Queries

Same as P^{NP[log]}, except that now log^{2} queries can be made.

The model-checking problem for a certain temporal logic is P^{NP[log^2]}-complete [Sch03].

For all k, P with log^{k} adaptive queries to NP coincides with P with log^{k+1} nonadaptive queries [CS92].

##### P-OBDD: Polynomial-Size Ordered Binary Decision Diagram

An *ordered binary decision diagram (OBDD)* is a branching program (see k-PBP), with the additional constraint that if x_{i} is queried before x_{j} on any path, then i<j.

Then P-OBDD is the class of decision problems solvable by polynomial-size OBDD's.

Contained in PBP, as well as BPP-OBDD.

##### PODN: Polynomial Odd Degree Node

The subclass of TFNP function problems that are guaranteed to have a solution because of the lemma that "every finite graph has an even number of odd-degree nodes."

##### polyL: Polylogarithmic Space

Equals DSPACE((log n)^{c}).

In contrast to L, which is contained in P, it is not known if polyL is contained in P or vice versa. On the other hand, we do know that polyL does not equal P, since (for example) polyL does not have complete problems under many-to-one logspace reductions.

##### PostBQP: BQP With Postselection

A class inspired by the proverb, "if at first you don't succeed, try, try again."

Formally, the class of decision problems solvable by a BQP machine such that

- If the answer is 'yes' then the second qubit has at least 2/3 probability of being measured 1,
*conditioned*on the first qubit having been measured 1. - If the answer is 'no' then the second qubit has at most 1/3 probability of being measured 1, conditioned on the first qubit having been measured 1.
- On any input, the first qubit has a nonzero probability of being measured 1.

Defined in [Aar05b], where it is also shown that PostBQP equals PP.

[Aar05b] also gives the following alternate characterizations of PostBQP (and therefore of PP):

- The quantum analogue of BPP
_{path}. - The class of problems solvable in quantum polynomial time if we allow arbitrary linear operations (not just unitary ones). Before measuring, we divide all amplitudes by a normalizing factor to make the probabilities sum to 1.
- The class of problems solvable in quantum polynomial time if we take the probability of measuring a basis state with amplitude α to be not |α|
^{2}but |α|^{p}, where p is an even integer greater than 2. (Again we need to divide all amplitudes by a normalizing factor to make the probabilities sum to 1.)

##### PP: Probabilistic Polynomial-Time

The class of decision problems solvable by an NP machine such that

- If the answer is 'yes' then at least 1/2 of computation paths accept.
- If the answer is 'no' then less than 1/2 of computation paths accept.

Defined in [Gil77].

PP is closed under union and intersection [BRS91] (this was an open problem for 14 years).

Contains P^{NP[log]} [BHW89].

Equals PP^{BPP} [KST+89b] as well as PostBQP [Aar05b].

However, there exists an oracle relative to which PP does not contain Δ_{2}P [Bei94].

BQP is low for PP; i.e. PP^{BQP} = PP [FR98].

For a random oracle A, PP^{A} is strictly contained in PSPACE^{A} with probability 1 [ABF+94].

For any fixed k, there exists a language in PP that does not have circuits of size n^{k} [Vin04b]. Indeed, there exists a language in PP that does not even have quantum circuits of size n^{k} with quantum advice [Aar06].

By contrast, there exists an oracle relative to which PP has linear-size circuits [Aar06].

PP can be generalized to the counting hierarchy CH.

##### PP^{cc}: Analogue of PP for Communication Complexity

Defined in [BFS86], **PP ^{cc}** is one of two ways to define a communication complexity analogue of PP. In PP

^{cc}, we note that in an algorithm that uses an amount of random bits bounded by , the bias between the accept and reject probabilities can be no smaller than . Thus, in PP

^{cc}, the communication complexity is defined as the sum of the traditional communication complexity (the number of exchanged bits) and the log of the reciprocal of the worst-case (smallest) bias.

The difference between this class and UPP^{cc} is discussed further in [BVW07], where it is shown that PP^{cc} ⊂ UPP^{cc}.

*See Also:* UPP^{cc}.

##### PP/poly: Nonuniform PP

If PP/poly = P/poly then PP is contained in P/poly. Indeed this is true with any syntactically defined class in place of PP. An implication is that any unrelativized separation of BQP/qpoly from BQP/mpoly would imply that PP does not have polynomial-size circuits.

##### PPA: Polynomial Parity Argument

Defined in [Pap94b]; see also [BCE+95].

The subclass of TFNP function problems that are guaranteed to have a solution because of the lemma that "all graphs of maximum degree 2 have an even number of leaves."

More precisely, there's a polynomial-time algorithm that, given any string, computes its 'neighbor' strings (of which there are at most two). Then given a leaf string (i.e. one with only one neighbor), the problem is to output another leaf string.

As an example, suppose you're given a cubic graph (one where every vertex has degree 3), and a Hamiltonian cycle H on that graph. Then by making a sequence of modifications to H (albeit possibly exponentially many), it is always possible to find a second Hamilton cycle (see [Pap94]). So this problem is in PPA.

Another problem in PPA is finding an Arrow-Debreu equilibrium, given the goods and utility functions of traders in a marketplace.

Contained in TFNP.

Contains PPAD.

There exist oracles relative to which PPA does not contain PLS [BM04] and PPP [BCE+95]. There also exists an oracle relative to which PPA is not contained in PPP [BCE+95].

##### PPAD: Polynomial Parity Argument (Directed)

Defined in [Pap94b]; see also [BCE+95].

Same as PPA, except now the graph is directed, and we're asked to find either a source or a sink.

NASH, the problem of finding a Nash equilibrium in a normal form game of two or more players with specified utilities, is in PPAD [Pap94b], and proved to be complete for PPAD with four players in [DGP05], and shortly after extended to the case of three players [DP05] and independently [CD05].

There exists an oracle relative to which PPP is not contained in PPAD [BCE+95]. There exists an oracle relative to which PPAD is not contained in BQP [Li11].

##### PPADS: Polynomial Parity Argument (Directed, Sink)

Defined in [Pap94b]; see also [BCE+95].

Same as PPA, except now the graph is directed, and we're asked to find a sink.

Contained in PPP.

Contains PPAD.

##### PPP: Polynomial Pigeonhole Principle

Defined in [Pap94b]; see also [BCE+95].

The subclass of TFNP function problems that are guaranteed to have a solution because of the Pigeonhole Principle.

More precisely, we're given a Boolean circuit, that maps n-bit strings to n-bit strings. The problem is to return *either* an input that maps to 0^{n}, *or* two inputs that map to the same output.

Contained in TFNP.

Contains PPADS.

[BCE+95] give oracles relative to which PPP is not contained in PPA and PPAD, and PPA is not contained in PPP.

[Mor01] gives an oracle relative to which PPP is not contained in PLS.

Whether PLS is not contained in PPP relative to some oracle remains open.

##### P^{PP}: P With PP Oracle

A level of the counting hierarchy CH.

It is not known whether there exists an oracle relative to which P^{PP} does not equal PSPACE.

Equals P^{#P} (exercise for the visitor).

Since the permanent of a matrix is #P-complete [Val79], Toda's theorem implies that any problem in the polynomial hierarchy can be solved by computing a sequence of permanents.

##### PQUERY: PSPACE With Polynomial Queries

The class of decision problems solvable in polynomial space using at most a polynomial number of queries to the oracle.

Thus, PQUERY = PSPACE, but PQUERY^{A} does not equal PSPACE^{A} for some oracles A.

Defined in [Kur83], where it was actually put forward as a serious argument (!!) against believing relativization results.

##### PPSPACE: Probabilistic PSPACE

Same as IPP, except that IPP uses private coins while PPSPACE uses public coins.

Can also be defined as a probabilistic version of PSPACE.

Equals PSPACE.

Defined in [Pap83].

##### PR: Primitive Recursive Functions

Basically, the class of functions definable by recursively building up arithmetic functions: addition, multiplication, exponentiation, tetration, etc. What's *not* allowed is to "diagonalize" a whole series of such functions to produce an even faster-growing one. Thus, the Ackermann function was proposed in 1928 as an example of a recursive function that's not primitive recursive, showing that PR is strictly contained in R.

Alternatively, the PR functions are exactly those functions that can be computed via programs in any reasonable, idealized ALGOL-like programming language where only *definite* loops are allowed, that is, loops where the number of iterations is specified before the loop starts (so FOR-loops are okay but not WHILE- or REPEAT-loops), and recursive calls are not allowed.

An interesting difference is that PR functions can be explicitly enumerated, whereas functions in R cannot be (since otherwise the halting problem would be decidable). That is, PR is a "syntactic" class whereas R is "semantic."

On the other hand, we can "enumerate" any RE set by a PR function in the following sense: given an input (M,k), where M is a Turing machine and k is an integer, if M halts within k steps then output M; otherwise output nothing. Then the union of the outputs, over all possible inputs (M,k), is exactly the set of M that halt.

PR strictly contains ELEMENTARY.

##### P_{R}: Polynomial-Time Over The Reals

An analog of P for Turing machines over a real number field.

Defined in [BCS+97].

See also P_{C}, NP_{C}, NP_{R}, VP_{k}.

##### Pr_{H}SPACE(f(n)): Unbounded-Error Halting Probabilistic f(n)-Space

Has the same relation to DSPACE(f(n)) as PP does to P. The Turing machine has to halt on every input *and* every setting of the random tape.

##### PromiseBPP: Promise-Problem BPP

Same as PromiseRP, but for BPP instead of RP.

Defined in [BF99].

##### PromiseBQP: Promise-Problem BQP

Same as PromiseBPP, but for BQP instead of BPP.

If PromiseBQP = PromiseP then BQP/mpoly = P/poly.

##### PromiseP: Promise-Problem P

The class of promise problems solvable by a P machine.

##### PromiseRP: Promise-Problem RP

The class of promise problems solvable by an RP machine. I.e., the machine must accept with probability at least 1/2 for "yes" inputs, and with probability 0 for "no" inputs, but could have acceptance probability between 0 and 1/2 for inputs that do not satisfy the promise.

Defined in [BF99], where it was also shown that BPP is in RP^{PromiseRP[1]} (i.e. with a single oracle query to PromiseRP).

Contained in PromiseBPP.

##### PromiseUP: Promise-Problem UP

The class of promise problems solvable by an UP machine. I.e., the nondeterministic machine must have a unique accepting path for "yes" inputs, and no accepting paths "no" inputs, but could have any number of accepting paths for inputs that do not satisfy the promise.

Although not originally stated with this notation, the main result of [VV86] is that NP is contained in RP^{PromiseUP}.

##### PrSPACE(f(n)): Unbounded-Error Probabilistic f(n)-Space

Has the same relation to DSPACE(f(n)) as PP does to P. The Turing machine has to halt with probability 1 on every input.

Contained in DSPACE(f(n)^{2}) [BCP83].

Equals Pr_{H}SPACE(f(n)) [Jun85].

##### P-Sel: P-Selective Sets

The class of decision problems for which there's a polynomial-time algorithm with the following property. Whenever it's given two instances, a "yes" and a "no" instance, the algorithm can always decide which is the "yes" instance.

Defined in [Sel79], where it was also shown that if NP is contained in P-Sel then P = NP.

There exist P-selective sets that are not recursive (i.e. not in R).

##### PSK: Polynomial Sink

Yeah, I'm told that's what the S and K stand for. Go figure.

The class of total function problems definable as follows: given a directed graph of indegree and outdegree at most 1, and given a source, find a sink.

Defined in [Pap90].

Equals PPADS.

##### PSPACE: Polynomial-Space

The class of decision problems solvable by a Turing machine in polynomial space.

Equals NPSPACE [Sav70], AP [CKS81], IP [Sha90], and, assuming the existence of one-way functions, CZK [BGG+90].

A canonical PSPACE-complete problem is QBF.

Relative to a random oracle, PSPACE strictly contains PH with probability 1 [Cai86].

PSPACE has a complete problem that is both downward self-reducible and random self-reducible [TV02]. It is the largest class with such a complete problem.

Contained in EXP. There exists an oracle relative to which this containment is proper [Dek76].

In descriptive complexity, PSPACE can be defined with 4 differents kind of formulae, FO() which is also FO(PFP) and SO() which is also SO(TC).

##### PSPACE/poly: PSPACE With Polynomial-Size Advice

##### PT_{1}: Polynomial Threshold Functions

The class of Boolean functions f:{-1,1}^{n}->{-1,1} such that f(x)=sgn(p(x)), where p is a polynomial having a number of terms polynomial in n.

Defined in [BS90], where it was also shown that PT_{1} contains PL_{1} (and this inclusion is strict), and that PT_{1} is contained in PL_{∞} (and this inclusion is strict).

##### PTAPE: Archaic for PSPACE

##### PTAS: Polynomial-Time Approximation Scheme

The subclass of NPO problems that admit an *approximation scheme* in the following sense. For any ε>0, there is a polynomial-time algorithm that is guaranteed to find a solution whose cost is within a 1+ε factor of the optimum cost. (However, the exponent of the polynomial might depend strongly on ε.)

Contains FPTAS, and is contained in APX.

As an example, the Traveling Salesman Problem in the Euclidean plane is in PTAS [Aro96].

Defined in [ACG+99].

##### PT/WK(f(n),g(n)): Parallel Time f(n) / Work g(n)

The class of decision problems solvable by a uniform family of Boolean circuits with depth upper-bounded by f(n) and size (number of gates) upper-bounded by g(n).

The union of PT/WK(log^{k}n, n^{k}) over all constants k equals NC.

##### PZK: Perfect Zero Knowledge

Same as SZK, but now the two distributions must be *identical*, not merely statistically close. (The "two distributions" are (1) the distribution over the verifier's view of his interaction with the prover, conditioned on the verifier's random coins, and (2) the distribution over views that the verifier can *simulate* without the prover's help.)

Contained in SZK.

See also: CZK.