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.