Skip to main content
IBM Quantum Platform

Versetzen

class Move(label=None)

GitHub

Basen: Instruction

Ein Zwei-Qubit-Befehl, der eine Rücksetzung des zweiten Qubits gefolgt von einer Vertauschung darstellt.

Schaltkreis-Symbol:

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

Der gewünschte Effekt dieser Anweisung besteht normalerweise darin, den Zustand des ersten Qubits auf das zweite Qubit zu übertragen. Damit dies wie erwartet funktioniert, darf das zweite eingehende Qubit keine Verschränkung mit dem Rest des Systems haben. Wenn dieses Qubit verschränkt ist, wird die Durchführung der Rücksetzoperation wiederum einen Quantenkanal auf das/die andere(n) Qubit(s) ausüben, mit dem/denen es verschränkt ist, was zu einem teilweisen Zusammenbruch dieser Qubits führt.

Der einfachste Weg, um sicherzustellen, dass das zweite Qubit (d. h. das Ziel-Qubit) keine Verschränkung mit dem Rest des Systems teilt, ist die Verwendung eines frischen Qubits, das seit der Initialisierung nicht mehr benutzt wurde.

Eine andere Möglichkeit besteht darin, als Ziel-Qubit ein Qubit zu verwenden, das unmittelbar zuvor als Quell-Qubit (d. h. als erstes Qubit) einer vorangegangenen Move operation war.

Die folgende Schaltung enthält zwei Move operationen, die jedem der oben genannten Fälle entsprechen:

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")
Ausgabe des vorherigen Codes.

Eine vollständige Demonstration der Move anweisung finden Sie im einführenden Lernprogramm zum Drahtschneiden.

Erstellen Sie eine Move anweisung.


Attribute

Parameter

label (str | None)

base_class

Ermittelt die Basisklasse dieser Instruktion. Dies ist garantiert im Vererbungsbaum von self zu finden.

Die "Basisklasse" einer Anweisung ist die niedrigste Klasse in ihrem Vererbungsbaum, mit der das Objekt für _all_ Schaltkreisanwendungen als vollständig kompatibel angesehen werden sollte. Dies bedeutet in der Regel, dass die Unterklasse nur definiert ist, um dem Programmierer eine gewisse Bequemlichkeit gegenüber der Basisklasse zu bieten, und die Basisklasse ist die "wahre" Klasse für eine Verhaltensperspektive. Insbesondere sollten Sie Folgendes nicht außer Kraft setzen base_class nicht überschreiben, wenn Sie eine benutzerdefinierte Version einer Anweisung definieren, die von der Hardware anders implementiert wird, z. B. eine alternative Messstrategie oder eine Version eines parametrisierten Gatters mit einem bestimmten Satz von Parametern, um es in Target von dem vollständig parametrisierten Gatter zu unterscheiden.

Dies ist oft genau gleichwertig mit type(obj), außer im Fall von Singleton-Instanzen von Standard-Bibliotheksanweisungen. Diese Singleton-Instanzen sind spezielle Unterklassen ihrer Basisklasse, und diese Eigenschaft gibt die Basisklasse zurück. Zum Beispiel:

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

Im Allgemeinen sollte man sich nicht auf die genaue Klasse eines Befehls verlassen; innerhalb einer bestimmten Schaltung sollte Instruction.name in den meisten Situationen ein geeigneteres Unterscheidungsmerkmal sein.

condition

Die klassische Bedingung für die Anweisung.

Veraltet seit Version 1.3.0

Die Eigenschaft qiskit.circuit.instruction.Instruction.condition ist ab qiskit 1.3.0 veraltet. Sie wird auf 2.0.0 entfernt.

condition_bits

Clbits in Zustand bringen.

Veraltet seit Version 1.3.0

Die Eigenschaft qiskit.circuit.instruction.Instruction.condition_bits ist ab qiskit 1.3.0 veraltet. Sie wird auf 2.0.0 entfernt.

decompositions

Holen Sie sich die Zerlegungen der Anweisung von SessionEquivalenceLibrary.

definition

Definition der Rückgabe in Bezug auf andere grundlegende Gates.

duration

Holen Sie sich die Dauer.

Veraltet seit Version 1.3.0

Die Eigenschaft qiskit.circuit.instruction.Instruction.duration ist ab qiskit 1.3.0 veraltet. Sie wird in Qiskit 2.0.0 entfernt.

label

Etikett mit Rücksendeanweisungen

mutable

Ist diese Instanz eine veränderbare eindeutige Instanz oder nicht.

Wenn dieses Attribut False lautet, ist die Gate-Instanz ein gemeinsam genutztes Singleton und nicht veränderbar.

name

Geben Sie den Namen zurück.

num_clbits

Gibt die Anzahl der Clbits zurück.

num_qubits

Gibt die Anzahl der Qubits zurück.

params

Die Parameter dieses Instruction. Im Idealfall sind dies Torwinkel.

unit

Ermittelt die Zeiteinheit der Dauer.

Veraltet seit Version 1.3.0

Die Eigenschaft qiskit.circuit.instruction.Instruction.unit ist ab qiskit 1.3.0 veraltet. Sie wird in Qiskit 2.0.0 entfernt.


Methoden

add_decomposition

add_decomposition(decomposition)

Fügen Sie eine Dekomposition der Anweisung auf der SessionEquivalenceLibrary hinzu.

assemble

assemble()

Montieren Sie eine QasmQobjInstruction

Veraltet seit Version 1.2

Die Methode qiskit.circuit.instruction.Instruction.assemble() ist ab qiskit 1.2 veraltet. Sie wird in der Version 2.0 entfernt werden. Die Qobj-Klasse und die damit verbundenen Funktionen sind Teil des veralteten BackendV1 Workflows und für BackendV2 nicht mehr erforderlich. Wenn ein Benutzer-Workflow Qobj benötigt, beruht er wahrscheinlich auf einer veralteten Funktionalität und sollte auf BackendV2 aktualisiert werden.

broadcast_arguments

broadcast_arguments(qargs, cargs)

Validierung der Argumente.

Parameter

  • qargs (List) – Liste der Quantenbit-Argumente.
  • cargs (List) – Liste der klassischen Bit-Argumente.

Ergiebigkeit

Tupel(Liste, Liste) - Ein Tupel mit einzelnen Argumenten.

Erhöht

CircuitError - Wenn die Eingabe ungültig ist. Zum Beispiel entspricht die Anzahl der Argumente nicht der Erwartung des Gates.

c_if

c_if(classical, val)

Legen Sie bei dieser Anweisung eine klassische Gleichheitsbedingung zwischen dem Register oder cbit classical und dem Wert val fest.

Anmerkung

Es handelt sich hierbei um eine Setter-Methode, nicht um eine additive Methode. Ein mehrfacher Aufruf dieser Funktion setzt alle zuvor gesetzten Bedingungen außer Kraft; sie ist nicht stapelbar.

Veraltet seit Version 1.3.0

Die Methode qiskit.circuit.instruction.Instruction.c_if() ist ab qiskit 1.3.0 veraltet. Sie wird auf 2.0.0 entfernt.

copy

copy(name=None)

Kopie der Anweisung.

Parameter

name (str) – name, der dem kopierten Stromkreis gegeben werden soll, wenn None , dann bleibt der Name gleich.

Rückgabe

eine Kopie der aktuellen Anweisung, wobei der Name aktualisiert wird, wenn er angegeben wurde

Rückgabetyp

qiskit.circuit.Instruction

inverse

inverse(annotated=False)

Kehren Sie diese Anweisung um.

Wenn annotated auf False steht, wird die inverse Anweisung als neue Anweisung mit der rekursiv invertierten Definition implementiert.

Wenn annotated True ist, wird die inverse Anweisung als AnnotatedOperation implementiert und entspricht der gegebenen Anweisung, die mit dem "inverse modifier" kommentiert ist.

Spezielle Befehle, die von Instruction erben, können ihre eigene Umkehrung implementieren (z. B. T und Tdg, Barrier, usw.) Insbesondere können sie wählen, wie sie das Argument annotated behandeln wollen, z. B. indem sie es ignorieren und immer eine konkrete Gatterklasse zurückgeben, wenn die Umkehrung als Standardgatter definiert ist.

Parameter

annotated (bool) – wenn auf True gesetzt, wird der Ausgang inverses Tor als AnnotatedOperation zurückgegeben.

Rückgabe

Die umgekehrte Operation.

Erhöht

CircuitError - wenn es sich nicht um eine zusammengesetzte Anweisung handelt, für die keine Umkehrung implementiert wurde.

is_parameterized

is_parameterized()

Gibt zurück, ob Instruction Kompilierzeitparameter enthält.

repeat

repeat(n)

Erzeugt eine Anweisung mit self , die :math`n` Mal wiederholt wird.

Wenn diese Operation eine Bedingung hat, hat die Ausgabeanweisung die gleiche Bedingung und die inneren wiederholten Operationen sind nicht bedingt; Anweisungen innerhalb einer zusammengesetzten Definition können nicht auf Register innerhalb des Datenmodells von Qiskit bedingt werden. Das bedeutet, dass es nicht zulässig ist, einen wiederholten Befehl auf ein Bit anzuwenden, auf das er in seiner Bedingung sowohl schreibt als auch von dem er liest.

Parameter

n (int) – Anzahl der Wiederholungen des Befehls

Rückgabe

Enthält die Definition.

Rückgabetyp

qiskit.circuit.Instruction

Erhöht

CircuitError - Wenn n < 1.

reverse_ops

reverse_ops()

Bei einer zusammengesetzten Anweisung kehren Sie die Reihenfolge der Unteranweisungen um.

Dies geschieht durch rekursive Umkehrung aller Unterbefehle. Es wird kein Gate invertiert.

Rückgabe

eine neue Anweisung mit

unteranweisungen umgedreht.

Rückgabetyp

qiskit.circuit.Instruction

soft_compare

soft_compare(other)

Weicher Vergleich zwischen Gates. Ihre Namen, die Anzahl der Qubits und die klassischen Bitnummern müssen übereinstimmen. Die Anzahl der Parameter muss übereinstimmen. Jeder Parameter wird verglichen. Wenn man eine ParameterExpression ist, wird sie nicht berücksichtigt.

Parameter

other (instruction) – sonstiger Unterricht.

Rückgabe

sind selbst und andere gleich bis hin zu Parameterausdrücken.

Rückgabetyp

bool

to_mutable

to_mutable()

Gibt eine veränderbare Kopie dieses Tores zurück.

Diese Methode gibt eine neue veränderbare Kopie dieser Gate-Instanz zurück. Wenn eine Singleton-Instanz verwendet wird, handelt es sich um eine neue, eindeutige Instanz, die verändert werden kann. Wenn die Instanz bereits veränderbar ist, handelt es sich um eine Deepcopy dieser Instanz.

validate_parameter

validate_parameter(parameter)

Befehlsparameter haben keine Validierung oder Normalisierung.

War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.