# Circuito Quântico

Na teoria da informação quântica, um circuito quântico é um modelo para a computação quântica em que uma computação é uma sequência de portas quânticas, que são transformações reversíveis em um registrador quântico de n-bits. Basicamente, os circuitos quânticos são coleções de portas quânticas interconectadas por fios quânticos. Eles são blocos de construção de computadores que usam efeitos mecânicos para executar tarefas. Esta estrutura análoga é referida como um registrador de n-qubit.

## Portas lógicas clássicas reversíveis

As portas lógicas de um computador clássico, fora a porta NOT, não são reversíveis. Assim, por exemplo, para uma porta AND não se pode recuperar os dois bits de entrada a partir do bit de saída; por exemplo, se o bit de saída é 0, não podemos dizer se os bits de entrada são 0,1 ou 1,0 ou 0,0.
No entanto, portas reversíveis nos computadores clássicos são facilmente construídos para cadeias de bits de qualquer comprimento; além disso, estes são, na verdade, de interesse prático, já que eles não aumentam entropia. Uma porta reversível é uma função reversível de n-bits de dados que retorna n-bits de dados, onde n-bits de dados é uma seqüência de bits de x$_1$,x$_2$, ...,x$_n$ de comprimento n. O conjunto de n-bits de dados é o espaço {0,1}$^n$, o qual consiste em uma cadeia de tamanho 2$^n$ de 0's e 1's.
Mais precisamente: uma porta reversível de n-bits é um mapeamento bijetor f a partir do conjunto {0,1}$^n$ de n-bits de dados para si próprio. Um exemplo de como uma porta reversível f é um mapeamento que aplica uma permutação fixa para suas entradas. Por motivos de prática de engenharia, normalmente estuda-se portas apenas para valores pequenos de n, ou seja n=1, n=2 ou n=3. Estas portas podem ser facilmente descritas por tabelas.

## Portas lógicas quânticas

Para definir portas quânticas, primeiro precisamos especificar o quantum de substituição de um n-bit de referência. A versão quantizada do clássico de n-bit espaço {0,1}$^n$ é o espaço de Hilbert
    $H_{\operatorname {QB} (n)}=\ell ^{2}(\{0,1\}^{n}).$
Este é, por definição, o espaço de funções de valores complexos sobre {0,1}$^n$ e é, naturalmente, um produto interno. Este espaço também pode ser considerado como consistindo de superposições lineares da clássica cadeias de bits. Note que H$_{QB(n)}$ é um espaço vetorial sobre os números complexos de dimensão 2$^n$. Os elementos deste espaço são chamados de n-qubits.
Usando a notação Dirac ket, se x$_1$,x$_2$, ...,x$_n$ é uma seqüência clássica de bits, então
    $|x_{1},x_{2},\cdots ,x_{n}\rangle \quad$
é um n-qubit especial correspondendo à função que mapeia esta clássica sequência de bits a 1 e mapeia todas as outras cadeias de bits a 0; estes 2$^n$ n-qubits especiais são chamados de estados da base computacional. Todos n-qubits são complexas combinações lineares dessa base computacional de estados.
Portas lógicas quânticas, em contraste com as portas lógicas clássicas, são sempre reversíveis. Um requer um tipo especial de função reversível, ou seja, um mapeamento unitário, isto é, uma transformação linear de um complexo produto interno que preserva o produto interno Hermitiano. Uma porta quântica n-qubit (reversível) é um mapeamento unitário U a partir do espaço H$_{QB(n)}$ de n-qubits para si mesma.
Normalmente, estamos interessados apenas em portões para valores pequenos de n.
Uma porta lógica clássica reversível de n-bits dá origem a uma porta quanântica reversível de n-bits da seguinte forma: para cada n-bits reversível da porta lógica f corresponde a uma porta quântica W$_f$ definida da seguinte forma:
    $W_{f}(|x_{1},x_{2},\cdots ,x_{n}\rangle )=|f(x_{1},x_{2},\cdots ,x_{n})\rangle .$
Note que W$_f$ permuta a base de estados computacional.
De particular importância é a porta NOT controlada (também chamada de porta CNOT) W$_{CNOT}$ definido em um 2 qubit quantizado. Outros exemplos de portas lógicas quânticas derivadas das clássicas são as portas Toffoli e a porta Fredkin.
No entanto, a estrutura do espaço de Hilbert dos qubits permite muitas portas quânticas que não são induzidas pelas clássicas. Por exemplo, uma relativa mudança de fase é uma porta de 1 qubit dado pela multiplicação pela matriz unitária:
    $U_{\theta }={\begin{bmatrix}e^{i\theta }&0\\0&1\end{bmatrix}},$
então
    $U_{\theta }|0\rangle =e^{i\theta }|0\rangle \quad U_{\theta }|1\rangle =|1\rangle .$

## Circuitos lógicos reversíveis

Novamente, podemos considerar a primeira computação clássica reversível. Conceitualmente, não há nenhuma diferença entre um circuito de n-bits reversível e uma porta lógica de n-bits reversível: qualquer uma é apenas uma função que pode ser invertida no espaço de n bits de dados. No entanto, como mencionado na seção anterior, para a engenharia nós gostaríamos de ter um pequeno número de portas reversíveis simples, que pode ser reunido para montar qualquer circuito reversível.
Para explicar esse processo de montagem, suponha que temos uma porta reversível de n-bits f e uma porta reversível de m-bits g. Colocá-los juntos significa a produção de um novo circuito através da ligação de um conjunto de k saídas de f para um conjunto de k entradas de g como na figura abaixo. Na figura n=5, k =3 e m = 7. O circuito resultante é também reversível e opera em n+m−k bits.
Vamos nos referir a este esquema como uma montagem clássica (Este conceito corresponde a uma definição técnica no artigo pioneiro de Kitaev citado abaixo). Na composição destas máquinas reversíveis, é importante garantir que as máquinas intermediárias também são reversíveis. Esta condição garante que o "lixo" intermediário não é criado (o efeito físico líquido seria de aumentar a entropia, que é uma das motivações para percorrer este exercício).
Agora é possível mostrar que a porta Toffoli é uma porta universal. Isto significa que, dado qualquer circuito h clássico reversível de n-bits, podemos construir uma montagem clássica de portas de Toffoli da maneira acima para produzir um circuito f de (n+m) bits tais que
    $f(x_{1},\ldots ,x_{n},\underbrace {0,\dots ,0} )=(y_{1},\ldots ,y_{n},\underbrace {0,\ldots ,0} )$
onde há m conjunto de zeros de entrada e
    $(y_{1},\ldots ,y_{n})=h(x_{1},\ldots ,x_{n})$.