Skip to main content
IBM Quantum Platform

Décomposition quasi-probabiliste (QPD)

qiskit_addon_cutting.qpd

Principale fonctionnalité de décomposition de la quasi-robabilité.

QPDBasisBase dans laquelle décomposer une opération.
BaseQPDGateClasse de base pour une porte à décomposer à l'aide de la décomposition par quasiprobabilité.
SingleQubitQPDGatePorte à qubit unique à décomposer en utilisant la décomposition de quasiprobabilité.
TwoQubitQPDGatePorte à deux qubits à décomposer à l'aide de la décomposition par quasiprobabilité.

WeightType

class WeightType(value)

GitHub

Bases : Enum

Type de poids associé à un échantillon QPD.

Exact

Valeur par défaut: 1

Un poids donné en proportion de son poids exact

données échantillonnées

Valeur par défaut: 2

Un poids déterminé par une procédure d'échantillonnage

generate_qpd_weights

generate_qpd_weights(qpd_bases, num_samples=1000)

GitHub

Générer des poids à partir de la distribution commune de quasiprobabilité.

Chaque poids dont la valeur absolue est supérieure à un seuil de 1 / num_samples sera évalué exactement. Les poids restants - ceux qui se trouvent dans la queue de la distribution - seront ensuite échantillonnés, ce qui permettra d'obtenir au maximum num_samples poids uniques.

Paramètres

  • qpd_bases (Sequence[QPDBasis]) – Les QPDBasis objets à partir desquels générer des poids
  • num_samples (float) – Contrôle le nombre de poids à générer

Type de retour

dict[tuple[int, ...], tuple[float, WeightType]]

Retours

Une correspondance entre une décomposition donnée et son poids. Les clés sont des tuples d'indices - un indice par entrée QPDBasis. Les indices correspondent à une carte de décomposition spécifique dans la base.

Les valeurs sont des tuples. Le premier élément est un nombre correspondant au poids de la contribution. Le deuxième élément est le WeightTypesoit EXACT ou SAMPLED.

decompose_qpd_instructions

decompose_qpd_instructions(circuit, instruction_ids, map_ids=None, *, inplace=False)

GitHub

Remplacer toutes les instructions QPD du circuit par des opérations et des mesures Qiskit locales.

Paramètres

  • circuit (QuantumCircuit) – Le circuit contenant les instructions QPD
  • instruction_ids (Sequence[Sequence[int]]) – Une séquence 2D, telle que chaque séquence intérieure correspond à des indices d'instructions comprenant une décomposition dans le circuit. Les éléments d'une séquence commune appartiennent à une décomposition commune et doivent être échantillonnés ensemble.
  • map_ids (Sequence[int] | None) – Indices d'une cartographie linéaire spécifique à appliquer aux décompositions du circuit. Si aucun ID de carte n'est fourni, le circuit sera décomposé de manière aléatoire selon la distribution de probabilité conjointe des décompositions.
  • inplace (bool) – Si True, le circuit sera modifié à sa place.

Type de retour

QuantumCircuit

Retours

Circuit dont toutes les instances ont été BaseQPDGate instances décomposées en opérations locales.

Le circuit contiendra un nouveau registre classique final qui contiendra les résultats de la mesure QPD (accessible à l'adresse retval.cregs[-1]).

Augmentations

  • ValueError - Un index dans instruction_ids correspond à une porte qui n'est pas une instance BaseQPDGate exemple.
  • ValueError - Une liste d'instructions n'est pas de longueur 1 ou 2.
  • ValueError - Le nombre total d'indices dans instruction_ids n'est pas égal au nombre d'instances dans le circuit BaseQPDGate instances dans le circuit.
  • ValueError - Les portes d'une même décomposition ont des bases QPD différentes.
  • ValueError - La longueur de map_ids n'est pas égale au nombre de décompositions dans le circuit.

qpdbasis_from_instruction

qpdbasis_from_instruction(gate, /)

GitHub

Générer un objet QPDBasis à partir d'une opération prise en charge.

Toutes les portes à deux qubits qui mettent en œuvre la méthode to_matrix() sont prises en charge. Cela devrait inclure la grande majorité des portes sans paramètres non liés, mais il y a quelques cas particuliers (voir, par exemple, qiskit issue #10396 ).

L'opération Move qui peut être utilisée pour spécifier une coupure de fil, est également prise en charge.

Type de retour

QPDBasis

Retours

L'objet nouvellement créé QPDBasis nouvellement

Augmentations

  • ValueError - Instruction non prise en charge.
  • ValueError - Impossible de décomposer l'instruction avec des paramètres non liés.
  • ValueError - to_matrix La conversion d'une porte à deux qubits a échoué.

Paramètres

gate (Instruction)

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