Skip to main content
IBM Quantum Platform

ZXZ

class ZXZ(params)

GitHub

Basen: OneQubitAnsatzBlock

Ein-Qubit-Ansatzblock auf der Grundlage der ZXZ-Zerlegung.

Schaltplan, der durch den vorherigen Code ausgegeben wurde.

Der obige ZXZ-Block entspricht der folgenden Schaltung:

Schaltplan, der durch den vorherigen Code ausgegeben wurde.

Initialisieren Sie den Ansatzblock.

Parameter

params (Sequence[Parameter]) – Abfolge der Parameter.


Attribute

ansatz_name

Standardwert: 'ZXZ'

ansatz_num_params

Standardwert: 3

ansatz_num_qubits

Standardwert: 1

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.

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


Methoden

add_decomposition

add_decomposition(decomposition)

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

broadcast_arguments

broadcast_arguments(qargs, cargs)

Validierung und Handhabung der Argumente und ihrer Beziehung.

Zum Beispiel bedeutet cx([q[0],q[1]], q[2]) cx(q[0], q[2]); cx(q[1], q[2]). Diese Methode liefert die Argumente in der richtigen Gruppierung. Im gegebenen Beispiel:

in: [[q[0],q[1]], q[2]],[]
outs: [q[0], q[2]], []
      [q[1], q[2]], []

Es gelten die allgemeinen Übertragungsregeln:

  • Wenn len(qargs) == 1:

    [q[0], q[1]] -> [q[0]],[q[1]]
  • Wenn len(qargs) == 2:

    [[q[0], q[1]], [r[0], r[1]]] -> [q[0], r[0]], [q[1], r[1]]
    [[q[0]], [r[0], r[1]]]       -> [q[0], r[0]], [q[0], r[1]]
    [[q[0], q[1]], [r[0]]]       -> [q[0], r[0]], [q[1], r[0]]
  • Wenn len(qargs) >= 3:

    [q[0], q[1]], [r[0], r[1]],  ...] -> [q[0], r[0], ...], [q[1], r[1], ...]

Parameter

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

Rückgabetyp

Iterable[tuple[list, list]]

Rückgabe

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.

control

control(num_ctrl_qubits=1, label=None, ctrl_state=None, annotated=None)

Gibt die kontrollierte Version von sich selbst zurück.

True``FalseDas gesteuerte Gate wird als ControlledGate implementiert, wenn annotated ist, und als AnnotatedOperation , wenn annotated ist.

Seit Version 2.3 veraltet

qiskit.circuit.gate.Gate.control()Das Argument annotated ist ab Qiskit 2.3 veraltet. Es wird in Qiskit 3.0 entfernt. Die Methode „ Gate.control ()“ akzeptiert nicht mehr „annotated=None“. Der neue Standardwert ist „annotated=True“, wodurch das gesteuerte Gatter als „ AnnotatedOperation “ dargestellt wird (sofern nicht bereits eine eigene Klasse für gesteuerte Gatter vorhanden ist). Sie können „annotated=False“ explizit festlegen, um das bisherige Verhalten beizubehalten. Es wird jedoch empfohlen, „annotated=True“ zu verwenden, da dadurch die Erstellung der kontrollierten Schaltung auf den Transpiler verschoben wird und darüber hinaus zusätzliche Optimierungen der kontrollierten Gatter ermöglicht werden (was in der Regel zu Schaltungen höherer Qualität führt).

Parameter

  • num_ctrl_qubits (int) – Anzahl der hinzuzufügenden Steuerelemente. Der Standardwert ist 1.
  • label (str | None) – Optionale Beschriftung des Tors. Der Standardwert ist None. Wird ignoriert, wenn das gesteuerte Gate als annotierte Operation implementiert ist.
  • ctrl_state (int | str | None) – Der Steuerzustand des Gatters, angegeben entweder als Ganzzahl oder als Bitfolge (z. B. "110"). 2**num_ctrl_qubits - 1Wenn None, wird standardmäßig der Zustand „alles Einsen“ angenommen.
  • annotated (bool | None) – Gibt an, ob das gesteuerte Gatter als gesteuertes Gatter oder als kommentierte Operation implementiert werden soll. FalseWenn None, dann wird dies als behandelt.

Rückgabe

Eine gesteuerte Version dieses Gatters.

Erhöht

QiskitError – ungültig num_ctrl_qubits oder ctrl_state.

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.

power

power(exponent, annotated=False)

Erhöhen Sie dieses Tor auf die Macht von exponent.

Entweder als Einheitsgatter implementiert (Ref. UnitaryGate) oder als kommentierter Vorgang (vgl. AnnotatedOperation). Bei mehreren Standardtoren, wie z. B. RXGate, kann die Leistung eines Gatters durch ein anderes Standardtor ausgedrückt werden, das direkt zurückgegeben wird.

Parameter

  • exponent (float) – die Macht, das Tor zu heben
  • annotated (bool) – gibt an, ob das Leistungstor als kommentierte Operation implementiert werden kann. Bei mehreren Standardgattern, wie RXGate, wird dieses Argument ignoriert, wenn die Leistung eines Gatters in Form eines anderen Standardgatters ausgedrückt werden kann.

Rückgabe

Eine Operation zur Durchführung gate^exponent

Erhöht

CircuitError - Wenn das Tor nicht einheitlich ist

repeat

repeat(n)

Erstellt eine Anweisung, die self nn -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.

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_matrix

to_matrix()

Gibt eine Numpy.array für die unitäre Matrix des Gatters zurück.

Rückgabe

wenn die Gate-Unterklasse eine Matrixdefinition hat.

Rückgabetyp

np.ndarray

Erhöht

CircuitError - Wenn eine Gate-Unterklasse diese Methode nicht implementiert, wird eine Ausnahme ausgelöst, wenn diese Basisklassenmethode aufgerufen wird.

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

Gate-Parameter sollten int, float, oder ParameterExpression

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