circuit complexity: Nonlinear Function
Created:
Modified:

circuit complexity

This page is from my personal notes, and has not been specifically reviewed for public consumption. It might be incomplete, wrong, outdated, or stupid. Caveat lector.

Basic classes:

NC (Nick's class): Boolean circuits with fan-in 2

AC (alternating circuits): Boolean circuits with unlimited fan-in for AND/OR gates

TC (threshold circuits): adds 'threshold' gates, with unlimited fan-in, that test if a (weighted) majority of inputs are true. (models the behavior of neurons in artificial neural nets)

These are for decision problems, so all circuits have nn Boolean inputs and one output (the decision). Each class has variants TC0,TC1,TC^0, TC^1, \ldots where TC(k)TC^{(k)} allows circuits with depth (logn)k(\log n)^k, and the class TCTC is taken to be the union of all of these (polylogarithmic depth), and similarly for NC and AC.

For the constant-depth variants, we have NC0AC0TC0NC^0 \subset AC^0 \subset TC^0, where

  • NC0AC0NC^0 \subset AC^0 simply by considering any function that depends on all the bits of the input, and noting that NC0NC^0 can't express such functions.
  • AC0TC0AC^0 \subset TC^0 by considering the parity or majority functions, which are known to not be in AC0AC^0.

For the polylog-depth variants, we have NC=AC=TCNC = AC = TC since the more advanced 'features' can be simulated in the simpler classes by polylog-depth gadgets.

Uniformity: When we talk about circuits as a function of input length nn, we generally don't allow an arbitrarily different circuit for each nn - this could smuggle in noncomputable information. We usually require that there is some simple machine that can generate circuits for arbitrary nn. The standard assumption is DLOGTIME-Uniform, which requires a machine that runs in logarithmic time and can answer any local query about the circuit (the type of any given gate, and if/how any two gates are connected).It has to be local queries because just to even print the whole circuit would require polynomial time, which is too generous a restriction. Logarithmic time for a local query is just enough to read the indices of the gates (which are themselves logn\log n) and do simple lookup-like operations on them.