## Thursday, 5 September 2013

### The Circuit Model of Computation

The purpose of introducing the various Turing machines in these previous sections was largely for the sake of theoretical completeness. Turing machine's provide a formal and technical way of thinking about computation, but for evident reasons they are not the most practical and intuitive means to describe computation. Regardless, Turing machines are used in referring to other notions of computation and to rigorously define other concepts which will be relevant for our purposes of understanding quantum computation later.

The following sections will describe the circuit model of computation,which offers a more intuitive way to express and think about computation. However, the circuit model of computation still remains equivalent to the Turing machine model in the sense that Turing machines can perform the same computations allowed by the circuit model and no more. Some attention to detail is invested in describing the circuit model here,because the relevant model of quantum computation for the purpose of this paper will be modeled analogously.

The circuit model of computation essentially offers an explicit schematic way of describing a computation. Here, a computational circuit will be synonymous with a Boolean circuit, which is a directed acyclic graph. With the exception of $n+m$ nodes, which are designated to specify and label the input bitstring of length $n$ and output bitstring of length $m$, the rest of the nodes of the graph are called logic gates. Each logic gate computes some elementary Boolean function. The directed edges of the graph designate which bits are the input/output of a logic gate. Edges that are directed towards a logic gate are considered to be the input bits of that gate, and edges leaving a logic gate are the output bits of that particular gate. We say that a circuit $C$, upon input $x\in\{0,1\}^n$, computes a Boolean function $f: \{0,1\}^n\rightarrow\{0,1\}^m$ if for every input string $x\in\{0,1\}^n$ the final output nodes of the circuit $C$ represented by the bitstring $C(x)\in\{0,1\}^m$ are such that $C(x)=f(x)$.

The Boolean function that a certain Boolean circuit computes generally corresponds to an algorithm for solving a certain problem. Sometimes the various input for a certain problem need not be of the same length. Thus, there will be different circuits that are used for different sized inputs. These circuits usually differ in size but are still designed to solve the same kind of problem. Such a circuit family consists of a set of circuits, $\{C_n\}$, where each circuit is indexed by the parameter $n$ which represents the size of the largest input allowed for that circuit. In this way, a given circuit $C_n$ is only defined to take as input any bitstring $x$ of length at most $n$. Let $C_n(x)$ denote the output given by the circuit $C_n$ with input $x$. We demand the circuits in $\{C_n\}$ to satisfy the following consistency property. If $m\leq n$, and $x$ is a bitstring of length at most $m$, then $C_m(x)=C_n(x)$. Let the general function that a circuit family $\{C_n\}$ computes on any finite length input $x$ be given by $C$ and its output be denoted by $C(x)$. Then for all $n$, if $x\in\{0,1\}^n$, a consistent circuit family satisfies $C(x)=C_n(x)$.

There is another subtle property called uniformity that a circuit family $\{C_n\}$ (randomized or not) must satisfy in order to guarantee a proper equivalence with Turing machines.Given $n$,there must exist some algorithm for a Turing machine which gives as output some suitable description of the circuit $C_n$. Think of this criterion as ensuring that some engineer could in principle construct the circuit $C_n$ for any $n$. A circuit family that satisfies this uniformity constraint can be shown to compute the same class of functions as Turing machines and no more. Hence, results in either model can be translated from one model to the other.