J'essaie de m'habituer à IBM Q en implémentant l'algorithme de Grover à trois qubits mais j'ai du mal à implémenter l'oracle.
Pourriez-vous montrer comment faire cela ou suggérer de bonnes ressources pour vous habituer à la programmation de circuits IBM Q?
Ce que je veux faire, c'est marquer un état arbitraire en retournant son signe comme l'oracle censé le faire.
Par exemple, j'ai
.
et je veux marquer en renversant son signe - | 111 ⟩ . Je comprends en quelque sorte que la porte CCZ résoudrait le problème, mais nous n'avons pas de porte CCZ dans IBM Q. La combinaison de certaines portes agira de la même manière que CCZ, mais je ne sais pas encore comment le faire. Et je me bats aussi pour les autres cas non seulement pour | 111 ⟩ .
Le cas de deux qubits est assez simple pour moi à implémenter, mais le soin de trois qubits me prête toujours à confusion.
Réponses:
Je réponds à ma question. Après quelques recherches sur Google, j'ai trouvé cette image montrant la porte CCZ par CNOT, la dague T et la porte T. J'ai essayé cela sur IBM Q et cela a fonctionné. Je veux explorer pourquoi cela fonctionne, mais c'est une autre histoire.
Pour quelqu'un qui est intéressé, voici mon circuit quantique de l'algorithme de Grover trouvant | 111> avec une seule itération.
la source
J'ai implémenté le même problème pour plusieurs qubits en utilisant qiskit ici .
...
En général, l'idée est de simuler une porte CCZ en utilisant Hadamard sur le bit cible suivi d'une porte CCX puis d'un autre Hadamard sur le bit cible.
la source