Quiero crear una puerta Toffoli controlada por n qubits e implementarla en QISKit. Se puede hacer esto? ¿Si es así, cómo?
quantum-gate
programming
qiskit
Ali Javadi
fuente
fuente
Respuestas:
Una forma simple de hacer esto se ilustra en la Figura 4.10 de Nielsen & Chuang.
Donde U puede ser cualquier rotación de un solo qubit (en este caso, una puerta X).
Este circuito funciona así: queremos aplicar U al qubit objetivo solo si el AND de todos los qubits de control es 1. Un Toffoli normal nos da el AND de 2 qubits. Entonces, al encadenar algunos Toffolis, podemos obtener c1.c2.c3.c4.c5, con la trampa de que se han introducido algunos qubits de "trabajo" (o ancilla) para almacenar resultados intermedios. Después de aplicar la CU final, obtenemos el resultado final en el objetivo. Ahora podemos limpiar los qubits de trabajo intermedios deshaciendo sus cálculos, devolviéndolos al estado | 0>. Este modelo de computación reversible se conoce como el método "computar-copiar-no computar", y fue propuesto por primera vez por Charlie Bennett en 1973 .
Aquí está el código QISKit para construir el circuito y visualizarlo:
Rendimientos:
fuente
Quiero agregar un método que no use qubits ancilla, pero sí requiere puertas más complicadas que simplemente no controladas. Creo que este método fue presentado por primera vez por Barenco et. Alabama. en este artículo , Lema 7.5:
Esta es una definición recursiva, por lo que la puerta de control n qubit se define en términos de la puerta de control n-1 qubit. Esto continuaría hasta llegar a la puerta CNOT de dos qubits.
Esta implementación es un poco difícil, sin embargo, existe una más simple si no le importa recolectar una fase relativa (vea el Lema 7.9 del mismo documento).
fuente
QuantumCircuit de Qiskit tiene un método mct para construir una puerta Toffoli de control múltiple con varios modos: básico, básico-sucio-ancilla, avanzado, noancilla. Por ejemplo, la puerta Toffoli con 3 qubits de control:
Salida:
fuente