Por que um orbit qubit é necessário no algoritmo de Grover?

10

Estou um pouco confuso sobre a necessidade de um orbit qubit no algoritmo de Grover.

Minha pergunta é: depende de como você implementa seu oráculo, se você precisa ou não de um qubit? Ou existe alguma razão para um orbit qubit? (como, existem alguns problemas que não podem ser resolvidos sem um orbit qubit, ou é mais fácil pensar sobre o problema com um oracle qubit, ou é uma convenção etc.)

Muitos recursos introduzem o algoritmo de Grover com um orbit qubit, mas descobri que há alguns casos em que você não precisa de um orbit qubit.

Por exemplo, aqui estão duas implementações do algoritmo de Grover no IBM Q simulator. Um está usando um orbit qubit e o outro não. Nos dois casos, eu gostaria de encontrar | 11> de um espaço de | 00>, | 01>, | 10> e | 11>. Nos dois casos, o oracle vira com sucesso | 11> para - | 11>.

・ Com um qubit da Oracle ( link para o IBM Q simulator ) insira a descrição da imagem aqui

・ Sem um qubit da Oracle ( link para o IBM Q simulator ) insira a descrição da imagem aqui

Bick
fonte

Respostas:

5

você|x|y=|x|yf(x),
f(x)x(|0 0-|1 1)/2
você~|x=(-1 1)f(x)|x

xvocê~você

DaftWullie
fonte
Na verdade, é muito fácil evitar o qubit extra, supondo que ele não seja usado como espaço de trabalho durante o cálculo do oracle. Encontre quaisquer CNOTs no qubit extra e substitua-os por uma porta Z no controle do CNOT. Da mesma forma, substitua os CCNOTs no qubit extra por uma CZ entre os dois controles do CCNOT. Etc.
Craig Gidney
@CraigGidney É um argumento justo, embora eu ache que há mais suposições embutidas em sua declaração (tornando-a não genérica, mesmo que a maioria dos casos que conhecemos satisfazê-las): (1) não deve haver ancillas intermediárias usadas durante a avaliação da função; (2) o circuito do oráculo deve ser decomposto em um conjunto de portas em que os únicos portões de múltiplos qubit que atuam no orbit do orbit são (não) multi-controlados que visam o orbit do orbit; (3) nenhum outro portão pode atuar no qubit do oracle (ou seja, você não pode simplesmente inverter c-nots agindo da maneira errada usando Hadamards em entradas e saídas).
DaftWullie
Está correto.
Craig Gidney