Utilitaires de troncature
qiskit_addon_obp.utils.truncating
Fonctions de troncature des opérateurs de Pauli dans des limites d'erreur données.
TruncationErrorBudget
class TruncationErrorBudget(per_slice_budget=<factory>, max_error_total=0.0, p_norm=1, tol=1e-08)
Bases : object
Une classe pour stocker les constantes qui déterminent le budget de l'erreur de troncature.
Consultez le guide pratique pour obtenir des explications détaillées sur la troncature des termes des opérateurs lors de la rétropropagation et sur la limitation de l'erreur ainsi générée.
Paramètres
is_active
is_active()
Retourne si la troncature est active, c'est-à-dire si le budget est non nul.
Type de retour
max_error_total
Type : float
Valeur par défaut : 0.0
L'erreur de troncature totale maximale à autoriser pour chaque observable pendant toute la durée de la rétropropagation. Cette valeur peut être numpy.infpar exemple lorsque l'erreur maximale n'a pas été spécifiée à l'adresse setup_budget().
p_norm
Type : int
Valeur par défaut : 1
Indique la norme Lp utilisée pour le calcul des erreurs de troncature.
Consultez le guide pratique pour une explication détaillée sur la manière de limiter l'erreur de troncature à l'aide de normes Lp plus élevées.
per_slice_budget
La quantité maximale d'erreur de troncature à autoriser par tranche rétropropagée. Cette liste sera parcourue en boucle lors de la rétropropagation des tranches de circuit.
tol
Type : float
Valeur par défaut : 1e-08
Tolérance absolue utilisée lors de la troncature. Une fois qu'un seuil de troncature optimal, jusqu'à cette tolérance, a été trouvé, la recherche d'un seuil optimal s'arrête.
setup_budget
setup_budget(*, max_error_per_slice=None, max_error_total=None, num_slices=None, p_norm=1)
Calculer le budget disponible pour chaque tranche pour la troncature des termes observables.
Cette méthode facilite la création d'un pour l'utilisateur final TruncationErrorBudget . Cette marge d'erreur peut être fournie à la méthode backpropagate() afin de permettre la troncature des termes de Pauli de faible poids. Consultez le guide pratique pour obtenir des informations détaillées sur la troncature des termes issus de l'opérateur de sortie et sur la limitation de l'erreur ainsi générée.
La logique de construction est la suivante :
- si
max_error_per_sliceest fourni, sa valeur est convertie en liste et utilisée immédiatement pourTruncationErrorBudget.per_slice_budget - si ce n'est pas le cas,
max_error_totaldoit être défini - si
num_slicesn'est pas set,:attr:.TruncationErrorBudget.per_slice_budget est défini sur[max_error_total]ce qui fait que l'ensemble du budget est consommé avec avidité - cependant, si
num_slicesest fourni, alorsTruncationErrorBudget.per_slice_budgetsuppose une distribution uniforme de l'erreur totale maximale sur le nombre de tranches spécifié :[max_error_total / num_slices]
Enfin, si max_error_total est défini, il s'agit d'une limite stricte à l'erreur maximale totale qui peut être accumulée pendant toute la durée de la rétropropagation. Ainsi, les paramètres max_error_per_slice et max_error_total peuvent être utiles.
Le budget non dépensé lors d'une itération précédente sera reporté sur les itérations suivantes, ce qui signifie que le budget maximum pour toute tranche pendant la rétropropagation peut en fait excéder TruncationErrorBudget.per_slice_budget.
Paramètres
- max_error_per_slice (float |Sequence[float] | None) – Spécifie l'erreur maximale par tranche rétropropagée. Voir ci-dessus pour plus de détails.
- max_error_total (float | None) – Spécifie l'erreur maximale totale pour l'ensemble de la rétropropagation. Voir ci-dessus pour plus de détails.
- num_slices (int | None) – Le nombre de tranches sur lesquelles le budget doit être réparti. Voir ci-dessus pour plus de détails.
- p_norm (int) – La norme Lp de l'erreur. Cela a une incidence sur la distribution progressive de
max_error_totallorsque estnum_sliceségalement défini (voir ci-dessus). Consultez le guide pratique pour une explication détaillée sur la manière de limiter l'erreur de troncature à l'aide de normes Lp plus élevées.
Retours
Les résultats TruncationErrorBudget.
Augmentations
ValueError - si max_error_per_slice et max_error_total sont tous deux None.
Type de retour
truncate_binary_search
truncate_binary_search(observable, budget, *, p_norm=1, tol=1e-08)
Effectuer une recherche binaire pour trouver un seuil de troncature observable optimal.
Supprime les termes de Pauli d'un site SparsePauliOp dont la somme des valeurs de leurs coefficients absolus ne dépasse pas l'erreur fournie budget.
Paramètres
- observable (SparsePauliOp) – l'adresse
SparsePauliOpà partir de laquelle les termes doivent être tronqués. - budget (float) – l'erreur de troncature maximale admissible.
- p_norm (int) – un entier spécifiant la norme p à utiliser.
- tol (float) – lorsque les seuils de recherche binaire diffèrent d'une valeur inférieure à
tol, la recherche de seuil s'arrête.
Retours
L'observable tronqué et une limite sur l'erreur de troncature encourue.
La limite de l'erreur de troncature encourue, , est calculée comme la valeur p-norm des amplitudes des coefficients des termes tronqués, , telle que .
Type de retour
tuple [*SparsePauliOp*, float ]