Como criar circuitos quânticos do zero

9

Atualmente, estou estudando sozinho, usando principalmente o livro: Computação Quântica, uma introdução suave de Eleanor Rieffel e Wolfgang Polak.

Percorrer os capítulos e exercícios anteriores correu muito bem (felizmente os capítulos anteriores tiveram muitos exemplos), mas fiquei preso no quinto capítulo sobre circuitos quânticos. Embora eu compreenda os conceitos apresentados pelos autores, talvez devido à falta de exemplos, tenho dificuldade em aplicar esses conceitos nos exercícios.

Os exercícios com os quais tenho problemas (e onde não consigo encontrar uma solução ou explicação completa / introdutória para) são os seguintes:

Questões:

Projete um circuito para criar: |Wn=1n(|0001+|0010+|0100)++|1000)a partir|0000

E crie um circuito para criar "o estado Hardy": 112(3|00+|01+|10+|11)

Alguém pode me apontar na direção certa ou me referir a alguma literatura / tutoriais para que eu possa entender melhor esse tipo de exercício?

Talvez uma pergunta relacionada: dicas e truques para construir circuitos para gerar estados quânticos arbitrários

Joery
fonte
11
Não estou familiarizado com o estado Hardy, mas você pode verificar o que escreveu? Não é normalizado (e meio trivial), então acho que não é o que você pretendia. Para o estado W, você provavelmente deseja verificar esta pergunta .
DaftWullie
Você está certo, eu fiz alguns erros de digitação. Eu os editei, agora eles estão corretos / normalizados. E obrigada!
22419 Joery
11
A propósito, este artigo arxiv.org/abs/quant-ph/0104030 fornece uma técnica geral para construir estados quânticos arbitrários.
Paradox

Respostas:

7

Como DaftWullie apontou, a pergunta sobre Wn tem uma excelente coleção de respostas aqui .

Para a questão do estado Hardy (e muitas outras tarefas como essa), você pode abordá-la da seguinte maneira.

  • Comece com o |0...0 estado.
  • Comece por colocar o primeiro qubit "no estado certo", que é um estado (α|0+β|1)|0...0 , onde α e β são os pesos relativos de todos os estados base que começam com 0 e com 1, respectivamente. Para o estado Hardy especificamente, dois estados básicos começam com 0: 112(3|00+|01)e dois estados da base começam com 1:112(|10+|11); seus pesos relativos são apenas as somas de quadrados de suas amplitudes:912+112=1012 e112+112=212 , respectivamente. Então você precisará colocar o primeiro qubit no estado(1012|0+212|1)usandoRyportão.
  • Continuar colocando o segundo qbit no estado direito, aplicando controladas Ry portões com o primeiro qbit como o controle. Para acertar os dois primeiros termos, você precisa converter o termo 1012|0|0para o termo112(3|00+|01), que é o mesmo que o estado normal convertido|0|0em110(3|00+|01)sem afetar o estado|1|0(note a renormalization quando se muda de termos de uma expressão maior de estados independentes!) Para fazer isso, você pode fazer um controlado por 0Rycom o primeiro qubit como controle e o segundo qubit como alvo.
  • Se você tiver mais qubits, continuará fazendo isso, usando mais qubits de controle para tornar suas rotações cada vez mais específicas.

Você pode ver este artigo de Shende, Bullock e Markov se você quiser uma explicação mais formal e menos ad-hoc.

Mariia Mykhailova
fonte
Sua resposta é ótima! Eu acho que fiquei preso porque tentei fazer isso de uma maneira descendente, ou seja, começando do estado final e tentando encontrar uma decomposição e portas para o estado base. Este e o artigo são de grande ajuda, obrigado!
Joery 23/07/19
4

Você pode simplificar os problemas "produzir um estado" dividindo-os em três partes:

  1. Prepare a coleção de magnitudes que você precisará, sem se preocupar com a fase ou com qual estado tem qual magnitude.
  2. Corrija as fases.
  3. Corrija a encomenda.

3/121/12

0|1000...000=13/12Ry(θ0)θ3/12|1000...00+1|1100...00. We then CNOT the second qubit back onto the first qubit to get to 1|1000...00+3/12|0100...00. Next we want to pull off 1/12. We perform another Ry controlled by the leftmost qubit followed by a backwards CNOT, but this time with the target is the qubit third from the left. By picking the perfect θ1 we will produce the state 2|1000...00+3/12|0100...00+1/122|0010...00. And you just keep doing this until you've got all the amplitudes you need, conveniently addressed by individual qubits being excited.

Now you want to fix any incorrect phases produced by the Y rotations. For the Hardy state this is easy, because all the phases are positive. In general you target each qubit position k with an Rz(ϕk) operation with appropriately chosen ϕk values, and that will get the phases right.

Now we want to get the ordering right. The easiest way to do this is to have some extra qubits that are your output qubits and, for each of the qubits we've prepared so far and each of the output qubits, either add a CNOT between the two or don't. For example, if the state with amplitude 3/12 is supposed to be a |11, then we need to CNOT from our leftmost qubit onto both of the output qubits. Then we need to uncompute the leftmost qubit by using a many-controlled NOT operation. There should be one control for each output qubit, and the control's type (qubit-must-be-on vs qubit-must-be-off) is determined by whether or not you toggled the qubit.

Applying these steps produces an inefficient, but correct, circuit for creating a Hardy state. You can open the circuit in Quirk:

Simple preparation

If you want to produce a state without using so much workspace, the task gets harder. But you can still follow the magnitudes then phases then ordering pattern. Also, there are cleverer ways to prepare magnitude sets that have nice patterns. For example, when only one amplitude is different from the others, one round of partial amplitude amplification may be enough to prepare the state.

Craig Gidney
fonte