Jump to content

User:Jaydavidmartin/Circuit complexity

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Jaydavidmartin (talk | contribs) at 06:13, 14 April 2020 (Circuit complexity: added structure). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

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

Example Boolean circuit computing the Boolean function , where , , and . The nodes are AND gates, the nodes are OR gates, and the nodes are NOT gates.

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 . The familiar function classes follow naturally from this; for example, a polynomial-size complexity is one such that the function is a polynomial.

Relation to time complexity

It turns out that there is a natural connection between circuit size complexity and time complexity.[1] 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 .

Complexity classes

See also

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.
  1. ^ Sipser, Michael (2006). Introduction to the Theory of Computation (2nd ed.). USA: Thomson Course Technology. p. 355. ISBN 978-0-534-95097-2.