Skip to main content
IBM Quantum Platform

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)

GitHub

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()

GitHub

Retourne si la troncature est active, c'est-à-dire si le budget est non nul.

Type de retour

booléen

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

Type : list[float]

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)

GitHub

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_slice est fourni, sa valeur est convertie en liste et utilisée immédiatement pour TruncationErrorBudget.per_slice_budget
  • si ce n'est pas le cas, max_error_total doit être défini
  • si num_slices n'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_slices est fourni, alors TruncationErrorBudget.per_slice_budget suppose 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.

Remarque

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_total lorsque est num_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

TruncationErrorBudget

truncate_binary_search(observable, budget, *, p_norm=1, tol=1e-08)

GitHub

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.

Remarque

La limite de l'erreur de troncature encourue, EE, est calculée comme la valeur p-norm des amplitudes des coefficients des termes tronqués, cc, telle que E=cpE = \|c\|_p.

Type de retour

tuple [*SparsePauliOp*, float ]

Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.