P/poly

The class of decision problems solvable by polynomial-size Boolean circuits — equivalently, by a polynomial-time Turing machine with access to a polynomial-length advice string that depends only on the input length (not on the particular input). Formally, a language if there exist polynomials and a polynomial-time algorithm such that for every input length , there is an advice string with

P/poly is a non-uniform class: the “algorithm” (circuit) can be different for each input length, and is not required to be uniformly generated.

See the complexity zoo entry here.

Known relationships

  • : any uniform polynomial-time algorithm is also a polynomial-size circuit family.
  • : under the standard derandomization assumption (that requires exponential-size circuits), . Unconditionally, by a probabilistic argument, BPP P/poly — the advice string encodes a fixed set of random coins that works for all inputs of a given length — TODO citation.
  • Karp-Lipton theorem: if , then the polynomial hierarchy collapses to — TODO citation. Informally, if NP problems had polynomial-size circuits, Arthur-Merlin protocols would collapse, pulling PH down with them.
  • contains undecidable languages: since circuit families need not be uniformly generated, a circuit family can solve the halting problem for all inputs up to length .

Relevance to cryptography

Non-uniform security is the standard model in modern cryptography. When we say a scheme is secure against all polynomial-time adversaries, we typically mean against all polynomial-size circuits (P/poly adversaries), not just uniform PPT algorithms. This matters because:

  • Security reductions are often stated in the non-uniform setting.
  • The existence of one-way functions implies in a certain oracle-relativized sense (one-way functions separate uniform and non-uniform worlds).
  • PRG constructions that fool are strictly stronger than those that fool only uniform algorithms.