Como evitar loops futuros usando um qubit de controle?

8

Estou tentando construir um multiplicador quântico usando o método descrito aqui: https://arxiv.org/abs/quant-ph/0403048 . No entanto, parece que o qubit de controle desativaria apenas os seguintes portões para uma iteração. Posteriormente, o ainda estaria no fundamental, então ativaria novamente e permitiria a próxima iteração de portas. Como evito todas as iterações futuras (essencialmente rompendo o loop) usando um qubit de controle?|yD

nikojpapa
fonte

Respostas:

8

Você está correto, há um erro no algoritmo descrito pelo artigo. D deve ser decrementado incondicionalmente em cada iteração, e o controle (que eu chamaria de acumulador ... exceto que parece que ele realmente pretende controlá-lo?) Deve ser alternado se D = 0. O autor cometeu o erro de condicionar o decréscimo no acumulador, o que impedirá que se torne na iteração relevante e resultará na alternância do acumulador na próxima iteração.D=0 0D=2N-1

figura de papel

De qualquer forma, este é um multiplicador extremamente ineficiente. Custou vez do obtido pela multiplicação ingênua de livros escolares. Basta fazer isso:O(N2N)O(N2)

for index, qubit in enumerate(input1):
  if qubit:
    output += input2 << index

multiplicação

Craig Gidney
fonte