Skip to main content
IBM Quantum Platform

ForLoopOp

class qiskit.circuit.ForLoopOp(indexset, loop_parameter, body, label=None)

GitHub

Bases : ControlFlowOp

Opération de circuit qui exécute de manière répétée un sous-circuit (body) paramétré par un paramètre loop_parameter à travers l'ensemble des valeurs entières fournies dans indexset.


Modèle de données

Une instruction de boucle « for » ne contient qu'un seul « bloc », à savoir le corps de la boucle. Le bloc de circuit peut prendre exactement zéro ou une input variable (voir QuantumCircuit.add_input_var()). Si le corps prend une variable d'entrée, alors loop_parameter doit être égal à cette variable, et il représente la variable de boucle. Si le corps ne prend aucune variable d'entrée, loop_parameter il peut s'agir soit de None (pour indiquer l'absence de liaison), soit d'un Parameter. Ce Parameter formulaire est un ancien modèle qu'il convient d'éviter.

paramètre indexset

Une collection d'entiers à parcourir en boucle.

param boucle_paramètre

Le paramètre de remplacement auquel seront attribuées les valeurs provenant indexset de. Peut être un Parameter, expr.Var de type Uint, ou None.

corps du paramètre

Le corps de la boucle à exécuter de manière répétée.

étiquette de paramètre

Une étiquette facultative permettant d'identifier l'instruction.


Attributs

base_class

Obtenir la classe de base de cette instruction. Il est assuré de figurer dans l'arbre généalogique de self.

La "classe de base" d'une instruction est la classe la plus basse de son arbre d'héritage avec laquelle l'objet doit être considéré comme entièrement compatible pour les applications de circuit. Cela signifie généralement que la sous-classe est définie uniquement pour offrir une certaine commodité au programmeur par rapport à la classe de base, et que la classe de base est la "vraie" classe d'un point de vue comportemental. En particulier, vous ne devez pas outrepasser base_class si vous définissez une version personnalisée d'une instruction qui sera implémentée différemment par le matériel, comme une stratégie de mesure alternative, ou une version d'une porte paramétrée avec un ensemble particulier de paramètres dans le but de la distinguer dans un Target à partir de la porte entièrement paramétrée.

Ceci est souvent exactement équivalent à type(obj), sauf dans le cas d'instances uniques d'instructions de la bibliothèque standard. Ces instances singleton sont des sous-classes spéciales de leur classe de base, et cette propriété renverra cette base. Par exemple :

>>> isinstance(XGate(), XGate)
True
>>> type(XGate()) is XGate
False
>>> XGate().base_class is XGate
True

En général, il ne faut pas se fier à la classe précise d'une instruction; dans un circuit donné, on s'attend à ce que l'instruction Instruction.name devrait être un discriminant plus approprié dans la plupart des situations.

blocks

decompositions

Obtenir les décompositions de l'instruction à partir de SessionEquivalenceLibrary.

definition

Définition du retour en termes d'autres portes de base.

label

Étiquette d'instruction de retour

mutable

Cette instance est-elle une instance unique mutable ou non?

Si cet attribut est False , l'instance du portail est un singleton partagé et n'est pas mutable.

name

Renvoyer le nom.

num_clbits

Retourne le nombre de clbits.

num_qubits

Renvoie le nombre de qubits.

params


Méthodes

add_decomposition

add_decomposition(decomposition)

GitHub

Ajouter une décomposition de l'instruction à l'adresse SessionEquivalenceLibrary.

broadcast_arguments

broadcast_arguments(qargs, cargs)

GitHub

Validation des arguments.

Paramètres

  • qargs (List) – Liste des arguments des bits quantiques.
  • cargs (List) – Liste des arguments classiques en matière de bits.

Rendements

Tuple (List, List) - Un tuple avec des arguments simples.

Augmentations

CircuitError – Si la saisie n'est pas valide. Par exemple, le nombre d'arguments ne correspond pas à ce qu'on attend de la porte logique.

copy

copy(name=None)

GitHub

Copie de l'instruction.

Paramètres

name (str) – nom à donner au circuit copié, si None le nom reste le même.

Retours

une copie de l'instruction en cours, avec le nom mis à jour s'il a été fourni

Type de retour

qiskit.circuit.Instruction

inverse

inverse(annotated=False)

GitHub

Inverser cette instruction.

Si l'annotation est False, l'instruction inverse est implémentée comme une nouvelle instruction avec la définition inversée récursivement.

Si annoté est Vrai, l'instruction inverse est implémentée comme AnnotatedOperationet correspond à l'instruction donnée annotée avec le "modificateur inverse".

Les instructions spéciales héritant de l'instruction peuvent implémenter leur propre inverse (par exemple T et Tdg, Barrière, etc.) En particulier, ils peuvent choisir comment gérer l'argument annotated , ce qui peut inclure de l'ignorer et de toujours renvoyer une classe de porte concrète si l'inverse est défini comme une porte standard.

Paramètres

annotated (bool) – si la valeur est True, la sortie de la porte inverse sera renvoyée sous forme de AnnotatedOperation.

Retours

L'opération inverse.

Augmentations

CircuitError – si l'instruction n'est pas composite et qu'aucune inverse n'a été implémentée pour celle-ci.

is_parameterized

is_parameterized()

GitHub

Indique si la fonction Instruction contient des paramètres définis à la compilation.

iter_captured_stretches

iter_captured_stretches()

GitHub

Obtenir un itérateur sur les variables d'étirement capturées uniques dans tous les blocs de cette construction.

Type de retour

Iterable [ expr.Stretch ]

iter_captured_vars

iter_captured_vars()

GitHub

Obtenir un itérateur sur les variables uniques capturées dans tous les blocs de cette construction.

Type de retour

Iterable [ expr.Var ]

repeat

repeat(n)

GitHub

Crée une instruction self répétée nn fois.

Paramètres

n (int) – Nombre de répétitions de l'instruction

Retours

Contenant la définition.

Type de retour

qiskit.circuit.Instruction

Augmentations

CircuitError – Si n < 1.

replace_blocks

replace_blocks(blocks)

GitHub

Renvoyer une nouvelle version de ces opérations de flux de contrôle avec les blocks sont remplacées par les nouvelles.

Cette fonction est généralement utilisée dans le cadre d'un flux de travail tel que :

existing_op = ...

def map_block(block: QuantumCircuit) -> QuantumCircuit:
    new_block = block.copy_empty_like()
    # ... do something to `new_block` ...
    return new_block

new_op = existing_op.replace_blocks(
    map_block(block) for block in existing_op.blocks
)

Il incombe à l'appelant de s'assurer que les blocs mappés sont définis sur un ensemble unifié de ressources de circuit, de la même manière que l'on construit un circuit ControlFlowOp en utilisant son constructeur par défaut.

Paramètres

blocs - les nouveaux blocs de sous-circuits à utiliser.

Retours

Nouveau ControlFlowOp avec blocs remplacés.

reverse_ops

reverse_ops()

GitHub

Pour une instruction composite, inverser l'ordre des sous-instructions.

Pour ce faire, toutes les sous-instructions sont inversées de manière récursive. Il n'inverse aucune porte.

Retours

une nouvelle instruction avec

les sous-instructions sont inversées.

Type de retour

qiskit.circuit.Instruction

soft_compare

soft_compare(other)

GitHub

Comparaison en douceur entre les portes. Leurs noms, le nombre de qubits et les numéros de bits classiques doivent correspondre. Le nombre de paramètres doit correspondre. Chaque paramètre est comparé. Si l'on est sur ParameterExpression, cela n'est pas pris en compte.

Paramètres

other (instruction) – d'autres instructions.

Retours

sont égaux à soi et à l'autre jusqu'à l'expression des paramètres.

Type de retour

booléen

to_mutable

to_mutable()

GitHub

Renvoie une copie mutable de cette porte.

Cette méthode renvoie une nouvelle copie mutable de cette instance de porte. Si une instance singleton est utilisée, il s'agit d'une nouvelle instance unique qui peut être modifiée. Si l'instance est déjà mutable, il s'agira d'une copie profonde de cette instance.

validate_parameter

validate_parameter(parameter)

GitHub

Le paramètre d'instruction ne fait l'objet d'aucune validation ou normalisation.

Paramètres

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