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)
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
op2sera 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àop1en tant que transformation.
Retours
Le tuple (op, qargs) où 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)
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
to_global_op
to_global_op(op, qargs, n_qubits)
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
reduce_op
reduce_op(global_op)
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 ]]