Skip to main content
IBM Quantum Platform

SwitchCaseOp

class qiskit.circuit.SwitchCaseOp(target, cases, *, label=None)

GitHub

Basen: ControlFlowOp

valuesEin Schaltungsvorgang, bei dem ein bestimmter Schaltungsblock ausgeführt wird, je nachdem, ob ein gegebenes target Element mit einer geordneten Liste von Elementen übereinstimmt. Der Sonderwert CASE_DEFAULT kann verwendet werden, um einen Standardzustand darzustellen.

Parameter

  • target (Clbit |ClassicalRegister |expr.Expr) – der Echtzeitwert, der zum Einschalten verwendet werden soll.
  • cases (Iterable[tuple[Any, QuantumCircuit]]) – eine geordnete Iterable, die den entsprechenden Wert von und den target Schaltkreisblock enthält, der ausgeführt werden soll, wenn eine Übereinstimmung vorliegt. Es gibt keinen „Fall-Through“ zwischen den Blöcken, und die Reihenfolge ist entscheidend.
  • label (str | None) – Eine optionale Bezeichnung zur Identifizierung der Anweisung.

Attribute

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, wie z. B. eine alternative Messstrategie oder eine Version eines parametrisierten Gatters mit einem bestimmten Satz von Parametern, um es in einer 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 sollten Sie sich nicht auf die genaue Klasse einer Anweisung verlassen; innerhalb einer bestimmten Schaltung ist zu erwarten, dass Instruction.name in den meisten Situationen ein geeigneteres Unterscheidungsmerkmal sein sollte.

blocks

decompositions

Holen Sie sich die Zerlegungen der Anweisung von SessionEquivalenceLibrary.

definition

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

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 dieser Instruction. Im Idealfall sind dies Torwinkel.


Methoden

add_decomposition

add_decomposition(decomposition)

GitHub

Fügen Sie eine Dekomposition der Anweisung in die SessionEquivalenceLibrary ein.

broadcast_arguments

broadcast_arguments(qargs, cargs)

GitHub

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. Beispielsweise stimmt die Anzahl der Argumente nicht mit der vom Gatter erwarteten Anzahl überein.

cases

cases()

GitHub

Gibt eine Nachschlagetabelle von Fallbezeichnungen zu den Schaltkreisen zurück, die in diesem Fall ausgeführt werden würden. Dieses Objekt eignet sich im Allgemeinen nicht für die Erstellung eines neuen SwitchCaseOp zu erstellen, da alle Schlüssel, die auf dasselbe Objekt verweisen, nicht gruppiert werden.

Siehe auch

SwitchCaseOp.cases_specifier()

Eine alternative Methode, die ihre Ausgabe in einem geeigneten Format für die Erstellung neuer SwitchCaseOp instanzen.

cases_specifier

cases_specifier()

GitHub

Gibt eine Iterable zurück, bei der jedes Element ein 2-Tupel ist, dessen erstes Element ein Tupel von Sprungwerten ist und dessen zweites Element der einzelne Schaltkreisblock ist, der mit diesen Werten verbunden ist.

Dies ist eine abstrakte Spezifikation der Sprungtabelle, die für die Erstellung neuer SwitchCaseOp instanzen.

Siehe auch

SwitchCaseOp.cases()

Erstellen Sie eine Nachschlagetabelle, die Sie für Ihre eigenen Zwecke verwenden können, um von den Werten zu der Schaltung zu springen, die ausgeführt werden soll.

Rückgabetyp

Iterable[ tuple [ tuple, QuantumCircuit ]]

copy

copy(name=None)

GitHub

Kopie der Anweisung.

Parameter

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

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)

GitHub

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 implementiert als AnnotatedOperationund entspricht der gegebenen Anweisung, die mit dem "inversen Modifikator" versehen 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) – auf True gesetzt, wird die Ausgabe des inversen Gatters wie folgt zurückgegeben AnnotatedOperation.

Rückgabe

Die umgekehrte Operation.

Erhöht

CircuitError – wenn es sich nicht um eine zusammengesetzte Anweisung handelt und für diese keine Umkehrung implementiert wurde.

is_parameterized

is_parameterized()

GitHub

Gibt zurück, ob das Instruction Kompilierungszeitparameter enthält.

iter_captured_stretches

iter_captured_stretches()

GitHub

Ermittelt einen Iterator über die eindeutig erfassten Stretch-Variablen in allen Blöcken dieses Konstrukts.

Rückgabetyp

Iterable [ expr.Stretch ]

iter_captured_vars

iter_captured_vars()

GitHub

Ermittelt einen Iterator über die eindeutig erfassten Variablen in allen Blöcken dieses Konstrukts.

Rückgabetyp

Iterable [ expr.Var ]

repeat

repeat(n)

GitHub

Erstellt eine Anweisung, die selfnn -mal wiederholt wird.

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 ist.

replace_blocks

replace_blocks(blocks)

GitHub

Gibt eine neue Version dieser Kontrollflussoperationen zurück, wobei die blocks auf die angegebenen neuen Operationen abgebildet sind.

Normalerweise wird dies in einem Arbeitsablauf wie dem folgenden verwendet:

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
)

Es liegt in der Verantwortung des Aufrufers sicherzustellen, dass die gemappten Blöcke über einen einheitlichen Satz von Schaltkreisressourcen definiert sind, ähnlich wie bei der Konstruktion eines ControlFlowOp mit seinem Standardkonstruktor.

Parameter

blocks (Iterable[QuantumCircuit]) – die neuen Teilschaltungsblöcke, die verwendet werden sollen.

Rückgabe

Neue ControlFlowOp mit ersetzten Blöcken.

Rückgabetyp

SwitchCaseOp

reverse_ops

reverse_ops()

GitHub

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)

GitHub

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

GitHub

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, ist dies 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)

GitHub

Befehlsparameter hat keine Validierung oder Normalisierung.

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