Skip to main content
IBM Quantum Platform

Utilitaires opérateur

qiskit_addon_obp.utils.operations

Fonctions d'utilité pour l'opérateur de rétropropagation.

apply_op_to

apply_op_to(op1, op1_qargs, op2, op2_qargs, *, apply_as_transform=False)

GitHub

Appliquer l'opérateur op2 à l'opérateur op1.

Ces opérateurs ne doivent pas nécessairement agir sur le même nombre de qubits, car ils sont supposés agir sur un système plus large. La position de chaque opérateur dans le système est définie par le site qargs correspondant. L'opérateur de sortie sera défini sur union(op1_qargs, op2_qargs).

Par défaut, cette fonction applique op1 à op2 de la manière suivante :

op2 @ op1

En réglant apply_as_transform=True, cette fonction appliquera op1 à op2 de la manière suivante :

op2.adjoint() @ op1 @ op2

Paramètres

  • op1 (SparsePauliOp) – L'opérateur sur lequel op2 sera appliqué.
  • op1_qargs (list[int]) – Les indices des qubits pour op1.
  • op2 (SparsePauliOp) – L'opérateur doit s'adresser à op1.
  • op2_qargs (list[int]) – Les indices des qubits pour op2.
  • apply_as_transform (bool) – S'il convient d'appliquer op2 à op1 en tant que transformation.

Retours

Le tuple (op, qargs)op est l'entrée op1 avec op2 appliqué à gauche et qargs est une liste d'indices de qubits pour le nouvel opérateur op. Les ID de qubit dans la sortie op correspondent à l'ID de qubit global dans le même index dans qargs.

Par exemple, si la sortie op est un SparsePauliOp("YX") et que qargs est [3, 4], le terme X sur le qubit 0 de l'opérateur correspond à l'ID du qubit global 3.

Augmentations

ValueError - Le nombre de qargs uniques de l'opérateur doit correspondre au nombre de qubits de l'opérateur correspondant.

Type de retour

tuple [*SparsePauliOp*, list[ int ]]

apply_reset_to

apply_reset_to(op, qubit_id, inplace=False)

GitHub

Appliquer une opération de réinitialisation à un opérateur de Pauli.

Cette fonction applique une opération de réinitialisation à op de la manière suivante :

<0|op|0>

Les termes contenant des termes de Pauli X ou Y sur le qubit-qubit_id verront leur poids réduit à 0.0. Les termes contenant Pauli Z sur qubit_id verront ce Pauli Z remplacé par une identité.

Paramètres

  • op (SparsePauliOp) – L'opérateur auquel la réinitialisation sera appliquée.
  • qubit_id (int) – L'indice du qubit sur lequel appliquer la réinitialisation.
  • inplace (bool) – Indique s'il faut modifier l'opérateur sur place.

Retours

L'opérateur transformé

Type de retour

SparsePauliOp

to_global_op

to_global_op(op, qargs, n_qubits)

GitHub

Convertir un opérateur local en un opérateur global en insérant des identités sur les qubits qui ne sont pas utilisés.

Paramètres

  • op (SparsePauliOp) – Opérateur local en expansion.
  • qargs (list[int]) – Indices Qubit pour l'opérateur local.
  • n_qubits (int) – Nombre de qubits dans le système global.

Retours

Un opérateur sur les qubits n_qubits

Augmentations

ValueError - Qubit ID hors de portée

Type de retour

SparsePauliOp

reduce_op

reduce_op(global_op)

GitHub

Créer une représentation allégée d'un opérateur de Pauli global.

Cette fonction renvoie une représentation allégée de l'opérateur d'entrée telle que tous les qubits associés uniquement aux termes de Pauli-I ont été supprimés. Une liste d'indices est également renvoyée, indiquant sur quels qubits l'opérateur maigre agit.

Par exemple :

>>> global_op = SparsePauliOp(["IXI", "IIZ"])
>>> reduced_op, qargs = reduce_op(global_op)
>>> reduced_op
SparsePauliOp(['XI', 'IZ'],
              coeffs=[1.+0.j, 1.+0.j])
>>> qargs
[0, 1]

Paramètres

global_op (SparsePauliOp) – L'opérateur global pour lequel il faut générer une représentation allégée

Retours

  • Une représentation allégée de l'opérateur d'entrée avec les qubits associés uniquement aux termes d'identité supprimés.
  • Une liste d'indices spécifiant les qubits sur lesquels l'opérateur maigre agit.

Augmentations

ValueError - L'opérateur d'entrée peut ne pas être l'opérateur d'identité.

Type de retour

tuple [*SparsePauliOp*, list[ int ]]

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