Implementação do oráculo do algoritmo de Grover no IBM Q usando três qubits

10

Estou tentando me acostumar com o IBM Q implementando o algoritmo de Grover de três qubits, mas tendo dificuldade em implementar o oráculo.

Você poderia mostrar como fazer isso ou sugerir alguns bons recursos para se acostumar à programação de circuitos IBM Q?

O que eu quero fazer é marcar um estado arbitrário, lançando seu sinal como o oráculo deveria fazer.

Por exemplo, eu tenho

.1/8(|000+|001+|010+|011+|100+|101+|110+|111)

e eu quero marcar lançando seu sinal para - | 111 . De alguma forma, entendo que o gate CCZ resolveria o problema, mas não temos o gate CCZ no IBM Q. A combinação de alguns portões funcionará da mesma forma que o CCZ, mas ainda não tenho certeza de como fazer isso. E também estou lutando pelos outros casos, não apenas por | 111 .|111|111|111

O caso de dois qubits é bastante simples para eu implementar, mas o cuidado com três qubits ainda é confuso para mim.

Bick
fonte
11
A documentação deles inclui alguns exemplos do algoritmo de Grover, embora eu não me lembre de quão grande era o espaço de pesquisa.
Norrius
Obrigado pelo comentário. Sim, esta página ( quantumexperience.ng.bluemix.net/proxy/tutorial/full-user-guide/… ) explica dois qubits da implementação do algoritmo de Grover.
Bick

Respostas:

4

Eu estou respondendo minha pergunta. Após algumas pesquisas no google, encontrei esta imagem mostrando o portão CCZ do CNOT, do punhal T e do portão T. Eu tentei isso no IBM Q e funcionou. Quero explorar por que funciona, mas isso é outra história.

Para alguém que está interessado, aqui está o meu circuito quântico da descoberta do algoritmo de Grover com uma iteração.

Localização do algoritmo de Grover | 111> com uma iteração

Bick
fonte
11
Você deseja procurar circuitos padrão para o portão NÃO controlado controlado (também chamado de Toffoli). É a Figura 4.9 da minha versão da Nielsen & Chuang. Para converter em um portão de fase controlada-controlada, basta colar um Hadamard no qubit alvo antes e depois (ou, se já houver Hadamards em cada extremidade, remova-os).
DaftWullie
0

Eu implementei o mesmo problema para vários qubits usando o qiskit aqui .

...|111

Em geral, a idéia é simular um portão CCZ usando Hadamard no bit de destino, seguido por um portão CCX e outro Hadamard no bit de destino.

tigerjack89
fonte