AnnotatedOperation
class qiskit.circuit.AnnotatedOperation(base_op, modifiers)
Bases : Operation
Opération annotée.
Créer un nouveau AnnotatedOperation.
Une « opération annotée » permet d'ajouter une liste de modificateurs à l'opération « de base ». Pour l'instant, les seuls modificateurs pris en charge sont de types InverseModifier, ControlModifier et PowerModifier.
Une opération annotée peut être considérée comme une extension de ControlledGate (qui permet également d'ajouter un contrôle à l'opération de base). Toutefois, une différence importante réside dans le fait que la définition du circuit d'une opération annotée n'est pas construite lors de la déclaration de l'opération, mais lors de la transpilation, plus précisément lors de la HighLevelSynthesis passage du transpileur.
Une opération annotée peut également être considérée comme un objet "de niveau supérieur" ou "plus abstrait" qui peut être ajouté à un circuit quantique. Cela permet d'écrire des passes d'optimisation du transpondeur qui utilisent cette représentation de niveau supérieur, par exemple en supprimant une porte qui est immédiatement suivie de son inverse.
Paramètres
- base_op (Operation) – opération de base en cours de modification
- modifiers (Modifier | list[Modifier]) – liste ordonnée de modificateurs. Les modificateurs pris en charge sont
InverseModifier,ControlModifieretPowerModifier.
Exemples :
op1 = AnnotatedOperation(SGate(), [InverseModifier(), ControlModifier(2)])
op2_inner = AnnotatedGate(SGate(), InverseModifier())
op2 = AnnotatedGate(op2_inner, ControlModifier(2))Les deux op1 et op2 sont sémantiquement équivalents à un SGate() qui est d'abord inversé et ensuite contrôlé par 2 qubits.
Attributs
name
Identifiant unique sous forme de chaîne de caractères pour le type d'opération.
num_clbits
Nombre de bits classiques.
num_qubits
Nombre de qubits.
params
Les paramètres de l'opération de base sous-jacente.
base_op
L'opération de base à laquelle s'appliquent les modificateurs de cette opération annotée.
modifiers
Séquence ordonnée des modificateurs à appliquer à base_op. Les modificateurs sont appliqués dans l'ordre de l'indice le plus faible à l'indice le plus élevé.
Méthodes
control
control(num_ctrl_qubits=1, label=None, ctrl_state=None, annotated=None)
Renvoie la version contrôlée de lui-même.
Implémenté comme AnnotatedOperation, quelle que soit la valeur de annotated.
Paramètres
- num_ctrl_qubits (int) – Nombre de contrôles à ajouter. Prend par défaut la valeur
1. - label (str | None) – Ignoré.
- ctrl_state (int |str | None) – État de contrôle de la porte, spécifié soit sous forme d'entier, soit sous forme de chaîne de bits (par exemple
"110"). SiNone, la valeur par défaut est l'état «2**num_ctrl_qubits - 1tous à 1 ». - annotated (bool | None) – Ignoré.
Retours
Une version contrôlée de l'opération donnée.
Type de retour
copy
inverse
inverse(annotated=True)
Retourne la version inverse de lui-même.
Mise en œuvre sous la forme d'une opération annotée, voir AnnotatedOperation.
Paramètres
annotated (bool) – ignoré (utilisé pour des raisons de cohérence avec d'autres méthodes inverses)
Retours
Version inversée de l'opération donnée.
power
power(exponent, annotated=False)
Élevez cette porte au pouvoir de exponent.
Mise en œuvre sous la forme d'une opération annotée, voir AnnotatedOperation.
Paramètres
- exponent (float) – le pouvoir d'élever la porte à
- annotated (bool) – ignoré (utilisé pour des raisons de cohérence avec d'autres méthodes de puissance)
Retours
Une opération mettant en œuvre gate^exponent
to_matrix
validate_parameter
validate_parameter(parameter)
Valider un paramètre de l'opération de base sous-jacente.
Paramètres
parameter (ParameterExpression |float)
Type de retour