Crear nots controladas más grandes a partir de puertas de qubit único, Toffoli y CNOT, sin espacio de trabajo

8

El ejercicio 4.29 de Computación cuántica e información cuántica de Nielsen y Chuang me tiene perplejo.

Encuentre un circuito que contenga Toffoli, CNOT y compuertas qubit simples que implemente una compuerta (para ), sin utilizar qubits de trabajo.O(norte2)Cnorte(X)norte>3

He descubierto que esto no se puede hacer de manera clásica .

He descubierto cómo hacerlo con compuertas exponencialmente precisas (anidan la construcción de doble control desde controles simples y raíz de operación cuadrada dentro de sí mismo veces).O(2norte)norte-2

He intentado generalizar la construcción anterior para acumular una combinación lineal de operaciones controladas. Por ejemplo, si tengo 3 controles llamados A y B y C y hago un vector de los diversos casos [0, A, B, C, AB, BC, AC, ABC] entonces:

  • La aplicación de una operación agrega incondicionalmente [1, 1, 1, 1, 1, 1, 1, 1]
  • Controlar una operación en A agrega [0, 1, 0, 0, 1, 1, 0, 1]
  • Xoring A en C y luego controlar una operación en C (luego deshacer el xor) agregaría [0, 1, 0, 1, 1, 1, 0, 0]
  • Xoring (A y B) en C a través de una puerta toffoli y luego controlar una operación en C agregaría [0, 0, 0, 1, 1, 1, 1, 0]

Entonces trataría de sumar (aplicar una raíz de X) y restar (aplicar raíz cuadrada inversa) los diversos vectores que puedo hacer hasta que el resultado salga como [0, 0, 0, 0, 0, 0, 0, N] .

Pero sigo golpeando varios muros, como las soluciones que terminan con grandes múltiplos (es decir, las puertas que estoy usando se vuelven exponencialmente precisas, lo que creo que es un no-no) o simplemente no puedo resolver el sistema debido a la interacción entre generando elementos con AND / XOR y luego resolviendo con + / * siendo no estándar o creando números exponenciales de puertas.

¿Cuáles son algunos otros enfoques para probar?

Craig Gidney
fuente

Respuestas:

5

Finalmente terminé resolviendo esto por O(norte)puertas Escribí una trilogía de publicaciones de blog sobre él.

  1. Construyendo Nots controladas grandes (clásicamente, con una ancilla)

  2. Construcción de grandes incrementos (clásicamente, con una ancilla)

  3. Usando puertas cuánticas en lugar de bits Ancilla

Por supuesto que sería una mierda si descubrieras esto dentro de veinte años y mi sitio web desapareciera hace mucho tiempo, por lo que los pasos básicos siguen una forma de imagen rápidamente descrita.

1. Bootstrap un bit Ancilla prestado

Use una raíz cuadrada y su inverso para reducir el número máximo de controles en uno, creando un cable no involucrado para cada operación. Luego, mueva los controles de forma iterativa fuera de las operaciones que no son No y reorganice el cruft que resulta en compuertas de gran incremento y compuertas de fase de un solo qubit.

Bootstrapping un Ancilla Bit

2. Use un solo bit Ancilla para cortar las operaciones por la mitad

Para cada operación grande, use el cable no involucrado como un bit ancilla prestado. Úselo para transformar el gran incremento y las puertas no controladas en operaciones más pequeñas en las que cada una tiene aproximadamente la mitad de los cables no involucrados. Repita dos veces, si es necesario, para que el siguiente paso tenga suficiente espacio de trabajo.

Reducir a la mitad el tamaño de controlado-no con Ancilla

Reducir a la mitad el tamaño del incrementador con Ancilla

3. Use muchos bits de Ancilla para terminar

Para cada operación aún demasiado grande, tome prestados los muchos cables no involucrados como bits ancilla. Úsalos para llegar hasta las puertas de Toffoli o más pequeñas.

Reducción controlada-no a Toffolis

Incrementador reductor a Toffolis

Esos tres pasos lo llevarán desde puertas totalmente controladas, no lineales, hasta Toffoli, CNOT y de un solo qubit. Hay algunas piezas implícitas, como cómo fusionar un control en una puerta de incremento, pero son bastante simples.

(Perdón por el estilo inconsistente de los diagramas).

Craig Gidney
fuente