User:Jaydavidmartin/Circuit complexity
In computational complexity theory, a circuit family is an infinite list of Boolean circuits that represents a formal language. Each circuit in the circuit family has a different input size.
Background

Boolean circuits
Boolean circuits are simplified models of the digital circuits used in modern computers. Formally, a Boolean circuit is a directed acyclic graph in which edges represent wires (which carry the bit values 0 and 1), the input bits are represented by source vertices (vertices with no incoming edges), and all non-source vertices represent logic gates (generally the AND, OR, and NOT gates). One logic gate is designated the output gate, and represents the end of the computation. The input/output behavior of a circuit with input variables is represented by the Boolean function ; for example, on input bits , the output bit of the circuit is represented mathematically as . The circuit is said to compute the Boolean function .
Formal languages
Formal definition
A circuit family is an infinite list of circuits , where has input variables. This means that, for every input size, there is exactly one corresponding circuit in the circuit family.
A circuit family is said to decide a language if, for every string , if and only if , where is the length of . In other words, a language is the set of strings which, when applied to the circuit corresponding to their length, evaluate to 1.
Circuit complexity
Complexity measures
The size of a circuit is the number of vertices in it. The size complexity of a circuit family is the function , where is the circuit size of .[1] This enables the use of function classes to defined complexity classes over circuit families; for example, a circuit analogue to P can be defined as the class of circuits for which is a polynomial (indeed, this class is known as P/poly and is described in greater detail below).
Complexity classes
Relation to time complexity
It turns out that there is a natural connection between circuit size complexity and time complexity.[2] Intuitively, a language with small time complexity (that is, requires relatively few sequential operations on a Turing machine), also has a small circuit complexity (that is, requires relatively few Boolean operations). Formally, it can be shown that if a language is in , where is a function , then it has circuit complexity .
See also
Notes
- ^ Sipser, Michael (2006). Introduction to the Theory of Computation (2nd ed.). USA: Thomson Course Technology. p. 354. ISBN 978-0-534-95097-2.
- ^ Sipser, Michael (2006). Introduction to the Theory of Computation (2nd ed.). USA: Thomson Course Technology. p. 355. ISBN 978-0-534-95097-2.
References
- Arora, Sanjeev; Barak, Boaz (2009). Computational Complexity: A Modern Approach. Cambridge University Press. ISBN 978-0-521-42426-4.
- Sipser, Michael (2006). Introduction to the Theory of Computation (2nd ed.). USA: Thomson Course Technology. ISBN 978-0-534-95097-2.