¿Cómo evitar futuros bucles utilizando un qubit de control?

8

Estoy tratando de construir un multiplicador cuántico usando el método descrito aquí: https://arxiv.org/abs/quant-ph/0403048 . Sin embargo, parece que el qubit de control solo deshabilitaría las siguientes puertas para una iteración. Después, el todavía estaría en el fundamental, por lo que voltearía nuevamente y habilitaría la próxima iteración de puertas. ¿Cómo evito todas las iteraciones futuras (esencialmente salir del ciclo) usando un qubit de control?|yD

nikojpapa
fuente

Respuestas:

8

Tienes razón, hay un error en el algoritmo descrito por el artículo. D debería reducirse incondicionalmente en cada iteración, y el control (que en su lugar llamaría el acumulador ... ¿excepto que parece que en realidad está destinado a controlarlo?) Debe activarse si D = 0. El autor ha cometido el error de condicionar la disminución en el acumulador, lo que evitará que convierta en en la iteración relevante y que el acumulador se vuelva a alternar en la próxima iteración.D=0D=2N1

figura de papel

En cualquier caso, este es un multiplicador extremadamente ineficiente. Tiene un costo lugar del que obtienes de la multiplicación ingenua del libro escolar. Solo haz esto en su lugar:O(N2N)O(N2)

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

multiplicación

Craig Gidney
fuente