qiskit.circuit.library.qaoa_ansatz
qiskit.circuit.library.qaoa_ansatz(cost_operator, reps=1, initial_state=None, mixer_operator=None, insert_barriers=False, name='QAOA', flatten=True)
Un circuit quantique QAOA généralisé avec un support d'états initiaux et de mélangeurs personnalisés.
Exemples :
Pour définir l'ansatz QAOA, nous avons besoin d'un hamiltonien de coût, codant le problème d'optimisation classique :
from qiskit.quantum_info import SparsePauliOp
from qiskit.circuit.library import qaoa_ansatz
cost_operator = SparsePauliOp(["ZZII", "IIZZ", "ZIIZ"])
ansatz = qaoa_ansatz(cost_operator, reps=3, insert_barriers=True)
ansatz.draw("mpl")
Paramètres
- cost_operator (BaseOperator) – L'opérateur représentant le coût du problème d'optimisation, noté dans [1].
- reps (int) – Le nombre entier déterminant la profondeur du circuit, appelé en [1].
- initial_state (QuantumCircuit | None) – Un état initial facultatif à utiliser, dont la valeur par défaut est une couche de portes de Hadamard préparant l'état « ». Si l'on opte pour un mélangeur personnalisé, ce circuit doit être configuré de manière à établir son état de base, afin de respecter correctement les conditions de recuit.
- mixer_operator (BaseOperator | None) – Un mélangeur personnalisé facultatif, qui utilise par défaut les rotations globales de Pauli- . Elle est désignée par en [1]. Si ce paramètre est défini, il se peut que le site
initial_statedoive également être modifié. - insert_barriers (bool) – L'insertion ou non de barrières entre les opérateurs de coût et de mélange.
- name (str) – Le nom du circuit.
- flatten (bool) – Si
True, un circuit plat est renvoyé au lieu d'être imbriqué dans plusieurs couches d'objets de porte. La valeurFalseest nettement moins performante, en particulier pour la liaison des paramètres, mais peut être souhaitable pour une visualisation plus propre.
Type de retour
Références :
[1] Farhi et al, Un algorithme d'optimisation approximative quantique. arXiv:1411.4028
Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.