Skip to main content
IBM Quantum Platform

Déplacer

class Move(label=None)

GitHub

Bases : Instruction

Instruction à deux qubits représentant une réinitialisation du deuxième qubit suivie d'une permutation.

Symbole du circuit :

     ┌───────┐
q_0:0      ├       q_0: ──────X─
     │  Move │   =
q_1:1      ├       q_1:|0>──X─
     └───────┘

L'effet souhaité de cette instruction est typiquement de déplacer l'état du premier qubit vers le second qubit. Pour que cela fonctionne comme prévu, le deuxième qubit entrant ne doit pas partager d'intrication avec le reste du système. Si ce qubit est intriqué, l'opération de réinitialisation mettra en œuvre un canal quantique sur le ou les autres qubits avec lesquels il est intriqué, ce qui entraînera l'effondrement partiel de ces qubits.

La façon la plus simple de s'assurer que le deuxième qubit (c'est-à-dire le qubit de destination) ne partage aucune intrication avec le reste du système est d'utiliser un qubit neuf qui n'a pas été utilisé depuis l'initialisation.

Une autre méthode valable consiste à utiliser, comme qubit de destination, un qubit dont l'utilisation antérieure immédiate était le qubit source (c'est-à-dire le premier qubit) d'une opération précédente Move précédente.

Le circuit suivant contient deux opérations Move correspondant à chacun des cas susmentionnés :

import numpy as np
from qiskit import QuantumCircuit
from qiskit_addon_cutting.instructions import Move

qc = QuantumCircuit(4)
qc.ryy(np.pi / 4, 0, 1)
qc.rx(np.pi / 4, 3)
qc.append(Move(), [1, 2])
qc.rz(np.pi / 4, 0)
qc.ryy(np.pi / 4, 2, 3)
qc.append(Move(), [2, 1])
qc.ryy(np.pi / 4, 0, 1)
qc.rx(np.pi / 4, 3)
qc.draw("mpl")
Sortie du code précédent.

Une démonstration complète de l'instruction Move est disponible dans le didacticiel d'introduction à la coupe du fil.

Créer une Move instruction.


Attributs

Paramètres

label (str | None)

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 Instruction.name soit un discriminant plus approprié dans la plupart des situations.

condition

La condition classique de l'instruction.

Déclassé depuis la version 1.3.0

La propriété qiskit.circuit.instruction.Instruction.condition est obsolète depuis qiskit 1.3.0. Elle sera supprimée à l'adresse 2.0.0.

condition_bits

Obtenir des Clbits en condition.

Déclassé depuis la version 1.3.0

La propriété qiskit.circuit.instruction.Instruction.condition_bits est obsolète depuis qiskit 1.3.0. Elle sera supprimée à l'adresse 2.0.0.

decompositions

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

definition

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

duration

Obtenir la durée.

Déclassé depuis la version 1.3.0

La propriété qiskit.circuit.instruction.Instruction.duration est obsolète depuis qiskit 1.3.0. Elle sera supprimée à Qiskit 2.0.0.

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

Les paramètres de ce site Instruction. Idéalement, il s'agit d'angles de porte.

unit

Obtenir l'unité de temps de la durée.

Déclassé depuis la version 1.3.0

La propriété qiskit.circuit.instruction.Instruction.unit est obsolète depuis qiskit 1.3.0. Elle sera supprimée à Qiskit 2.0.0.


Méthodes

add_decomposition

add_decomposition(decomposition)

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

assemble

assemble()

Assembler un QasmQobjInstruction

Déclassé depuis la version 1.2

La méthode qiskit.circuit.instruction.Instruction.assemble() est obsolète depuis qiskit 1.2. Elle sera supprimée dans la version 2.0. La classe Qobj et les fonctionnalités associées font partie du flux de travail obsolète BackendV1 et ne sont plus nécessaires pour BackendV2. Si un flux de travail utilisateur nécessite Qobj, il repose probablement sur une fonctionnalité obsolète et doit être mis à jour pour utiliser BackendV2.

broadcast_arguments

broadcast_arguments(qargs, cargs)

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 l'entrée n'est pas valide. Par exemple, le nombre d'arguments ne correspond pas aux attentes de la porte.

c_if

c_if(classical, val)

Cette instruction pose une condition d'égalité classique entre le registre ou le cbit classical et la valeur val.

Remarque

Il s'agit d'une méthode de fixation et non d'une méthode additive. L'appel à cette fonction plusieurs fois annulera silencieusement toute condition précédemment définie; elle ne s'empile pas.

Déclassé depuis la version 1.3.0

La méthode qiskit.circuit.instruction.Instruction.c_if() est obsolète depuis qiskit 1.3.0. Elle sera supprimée à l'adresse 2.0.0.

copy

copy(name=None)

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)

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 AnnotatedOperation, et 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 elle est définie à True, la sortie de la porte inverse sera renvoyée à AnnotatedOperation.

Retours

L'opération inverse.

Augmentations

CircuitError - si l'instruction n'est pas composite et qu'un inverse n'a pas été mis en œuvre pour elle.

is_parameterized

is_parameterized()

Retourne si le site Instruction contient des paramètres de compilation.

repeat

repeat(n)

Crée une instruction avec self répétée :mathn\ fois.

Si cette opération a une condition, l'instruction de sortie aura la même condition et les opérations répétées internes seront inconditionnelles; les instructions dans une définition composée ne peuvent pas être conditionnées sur des registres dans le modèle de données de Qiskit. Cela signifie qu'il n'est pas valable d'appliquer une instruction répétée à un clbit sur lequel elle écrit et lit à la fois dans son état.

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.

reverse_ops

reverse_ops()

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)

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()

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)

Les paramètres d'instruction ne font l'objet d'aucune validation ou normalisation.

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