PH (complexity)

In computational complexity theory, the complexity class PH is the union of all complexity classes in the polynomial hierarchy:

PH was first defined by Larry Stockmeyer.[1] It is a special case of hierarchy of bounded alternating Turing machine. It is contained in P#P = PPP (by Toda's theorem; the class of problems that are decidable by a polynomial time Turing machine with access to a #P or equivalently PP oracle), and also in PSPACE.

PH has a simple logical characterization: it is the set of languages expressible by second-order logic.

PH contains almost all well-known complexity classes inside PSPACE; in particular, it contains P, NP, and co-NP. It even contains probabilistic classes such as BPP and RP. However, there is some evidence that BQP, the class of problems solvable in polynomial time by a quantum computer, is not contained in PH.[2][3]

P = NP if and only if P = PH.[4] This may simplify a potential proof of PNP, since it is only necessary to separate P from the more general class PH.


  1. ^ Stockmeyer, Larry J. (1977). "The polynomial-time hierarchy". Theor. Comput. Sci. 3: 1–22. doi:10.1016/0304-3975(76)90061-X. Zbl 0353.02024.
  2. ^ Aaronson, Scott (2009). "BQP and the Polynomial Hierarchy". Proc. 42nd Symposium on Theory of Computing (STOC 2009). Association for Computing Machinery. pp. 141–150. arXiv:0910.4698. doi:10.1145/1806689.1806711. ECCC TR09-104.
  3. ^
  4. ^ Hemaspaandra, Lane (2018). "17.5 Complexity classes". In Rosen, Kenneth H. (ed.). Handbook of Discrete and Combinatorial Mathematics. Discrete Mathematics and Its Applications (2nd ed.). CRC Press. pp. 1308–1314. ISBN 9781351644051.

General referencesEdit