Premiers pas avec OBP
Versions des packages
Le code de cette page a été développé avec les dépendances suivantes. Nous recommandons d'utiliser ces versions ou des versions plus récentes.
qiskit[all]~=2.3.0
qiskit-ibm-runtime~=0.43.1
qiskit-addon-utils~=0.3.0
qiskit-addon-obp~=0.3.0
Lorsque tu prépares une charge de travail quantique avec la rétropropagation d'opérateurs (OBP), tu dois d'abord sélectionner des « tranches de circuit » (circuit slices), puis définir un seuil de troncature ou « budget d'erreur » pour éliminer les termes à petits coefficients dans l'opérateur rétropropagé, tout en fixant une borne supérieure à la taille globale de cet opérateur. Lors de la rétropropagation, le nombre de termes dans l'opérateur d'un circuit à qubits peut rapidement tendre vers dans le pire des cas. Ce guide présente les étapes nécessaires pour appliquer OBP à une charge de travail quantique.
Le composant principal du package qiskit-addons-obp est la fonction backpropagate(). Elle prend en entrée l'observable final à reconstruire, un ensemble de tranches de circuit à calculer classiquement, et, optionnellement, un TruncationErrorBudget ou un OperatorBudget pour contraindre la troncature effectuée. Une fois ces paramètres définis, l'opérateur rétropropagé calculé classiquement est obtenu de manière itérative en appliquant les portes de chaque tranche de la façon suivante :
où est le nombre total de tranches et représente une seule tranche du circuit. Cet exemple utilise le package qiskit-addons-utils pour préparer les tranches de circuit et générer le circuit d'exemple.
Pour commencer, considère l'évolution temporelle d'une chaîne de Heisenberg XYZ. Ce hamiltonien a la forme
et la valeur d'espérance à mesurer sera .
Le code suivant génère le hamiltonien sous la forme d'un SparsePauliOp en utilisant le module qiskit_addons_utils.problem_generators et une CouplingMap. Fixe les constantes de couplage à ,