Estoy tratando de acostumbrarme a IBM Q mediante la implementación de tres qubits del algoritmo de Grover, pero tengo dificultades para implementar el oráculo.
¿Podría mostrar cómo hacer eso o sugerir algunos buenos recursos para acostumbrarse a la programación del circuito IBM Q?
Lo que quiero hacer es marcar un estado arbitrario cambiando su signo como se supone que debe hacer el oráculo.
Por ejemplo, tengo
.
y quiero marcar por voltear a su signo - | 111 ⟩ . De alguna manera entiendo que la puerta CCZ resolvería el problema, pero no tenemos la puerta CCZ en IBM Q. La combinación de algunas puertas actuará igual que CCZ, pero todavía no estoy seguro de cómo hacerlo. Y también estoy luchando por los otros casos, no solo por | 111 ⟩ .
El caso de dos qubits es lo suficientemente simple para que lo implemente, pero el cuidado de tres qubits sigue siendo confuso para mí.
Respuestas:
Estoy respondiendo mi pregunta. Después de una búsqueda en Google, encontré esta imagen que muestra la puerta CCZ de CNOT, T dagger y T gate. Intenté esto en IBM Q y funcionó. Quiero explorar por qué funciona, pero esa es otra historia.
Para alguien que esté interesado, aquí está mi circuito cuántico del algoritmo de Grover que encuentra | 111> con una iteración.
fuente
Implementé el mismo problema para múltiples qubits usando qiskit aquí .
...
En general, la idea es simular una puerta CCZ utilizando Hadamard en el bit objetivo seguido de una puerta CCX y luego otra Hadamard en el bit objetivo.
fuente