Skip to main content
IBM Quantum Platform

PauliProductRotationGate

class qiskit.circuit.library.PauliProductRotationGate(pauli, angle, label=None)

GitHub

Grundlagen: Gate

Eine generische Pauli-Rotation.

Dies implementiert die Unitaroperation

RP(θ)=e−iθ/2PR_P(\theta) = e^{-i \theta / 2 P}

für eine Pauli- P∈{I,X,Y,Z}⊗nP \in \{I, X, Y, Z\}^{\otimes n} und einen Drehwinkel θ∈R\theta \in \mathbb R, der durch einen freien Parameter dargestellt werden könnte.

Beispiel:

from qiskit.circuit import QuantumCircuit
from qiskit.circuit.library import PauliProductRotationGate
from qiskit.quantum_info import Pauli

pauli = Pauli("XYZ")
ppr = PauliProductRotationGate(pauli, angle=0.2)
circuit = QuantumCircuit(10)
circuit.append(ppr, [1, 2, 6])

Parameter

  • pauli (qiskit.quantum_info.Pauli) – Die Pauli-Regel zur Bestimmung der Drehachse. Kann eine Phase von „ −1-1 “ beinhalten, jedoch nicht „ ii “ oder „ −i-i “.
  • angle (ParameterValueType) – Der Drehwinkel.
  • label (str | None) – Eine optionale Beschriftung für das Gatter, die in Schaltkreisdarstellungen angezeigt werden soll.

Attribute

base_class

Rufe die Basisklasse dieser Anweisung ab. Dies ist garantiert im Vererbungsbaum von enthalten self.

Die „Basisklasse“ einer Anweisung ist die unterste Klasse in ihrem Vererbungsbaum, mit der das Objekt für _alle_ Schaltungsanwendungen als vollständig kompatibel angesehen werden sollte. Das bedeutet in der Regel, dass die Unterklasse lediglich definiert wurde, um dem Programmierer gegenüber der Basisklasse gewisse Erleichterungen zu bieten, während die Basisklasse aus verhaltensbezogener Sicht die „wahre“ Klasse ist. Insbesondere sollten Sie override nicht verwenden base_class , wenn Sie eine benutzerdefinierte Version einer Anweisung definieren, die von der Hardware anders implementiert wird, wie beispielsweise eine alternative Messstrategie oder eine Version eines parametrisierten Gatters mit einem bestimmten Parametersatz, um diese in einem `` Target vom vollständig parametrisierten Gatter zu unterscheiden.

Dies entspricht oft genau type(obj), außer im Fall von Singleton-Instanzen von Befehlen aus der Standardbibliothek. Diese Singleton-Instanzen sind spezielle Unterklassen ihrer Basisklasse, und diese Eigenschaft gibt diese Basisklasse zurück. Zum Beispiel:

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

Generell sollte man sich nicht auf die genaue Klasse eines Befehls verlassen; innerhalb einer bestimmten Schaltung ist davon auszugehen, dass in den meisten Fällen ein Instruction.name geeigneteres Unterscheidungsmerkmal darstellt.

decompositions

Rufen Sie die Zerlegungen des Befehls aus dem „ SessionEquivalenceLibrary “ ab.

definition

Definition des Rücklaufs in Bezug auf andere Grundgatter.

label

Etikett mit Rücksendeanweisungen

mutable

Ist diese Instanz eine veränderbare, eindeutige Instanz oder nicht?

Wenn dieses Attribut gesetzt ist, handelt es False sich bei der Gate-Instanz um ein gemeinsames Singleton, das nicht veränderbar ist.

name

Gib 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. Idealerweise handelt es sich dabei um Torwinkel.


Methoden

add_decomposition

add_decomposition(decomposition)

GitHub

Füge eine Aufschlüsselung der Anweisung in die Datei „ SessionEquivalenceLibrary “ ein.

broadcast_arguments

broadcast_arguments(qargs, cargs)

GitHub

Validierung und Verarbeitung der Argumente sowie deren Beziehungen.

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

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

Die allgemeinen Regeln für die Ausstrahlung lauten:

  • 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 ist:

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

Parameter

  • qargs (list) – Liste der Argumente für Quantenbits.
  • cargs (list) – Liste klassischer Bit-Argumente.

Rückgabe

Ein Tupel mit einem einzigen Argument.

Erhöhungen

CircuitError – Wenn die Eingabe ungültig ist. Beispielsweise stimmt die Anzahl der Argumente nicht mit der vom Gatter erwarteten Anzahl überein.

Rückgabetyp

Iterable [ Tupel [ Liste, Liste ]]

control

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

GitHub

Gibt eine kontrollierte Version von sich selbst zurück.

Das zurückgegebene Tor stellt „ e−iθ/2PCe^{-i \theta / 2 P_C} “ dar, wobei „ PCP_C “ das ursprüngliche Pauli- PP ist, das (je nach Steuerzustand) mit den Projektoren „ ∣0⟩⟨0∣|0\rangle\langle 0| “ und „ ∣1⟩⟨1∣|1\rangle\langle 1| “ tensorisiert wurde.

Parameter

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

Rückgabe

Eine gesteuerte Version dieses Gatters.

Erhöhungen

QiskitError – ungültig num_ctrl_qubits oder ctrl_state.

copy

copy(name=None)

GitHub

Kopie der Anleitung.

Parameter

name (str) – Name, der der kopierten Schaltung gegeben werden soll; wenn None dann bleibt der Name unverändert.

Rückgabe

eine Kopie der aktuellen Anleitung, wobei der Name aktualisiert wurde, sofern er angegeben wurde

Rückgabetyp

qiskit.circuit.Instruction

inverse

inverse(annotated=False)

GitHub

Gibt die Umkehrung zurück: eine Drehung um den negativen Winkel.

is_parameterized

is_parameterized()

GitHub

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

pauli

pauli()

GitHub

Gibt die Pauli-Rotationsachse zurück.

Beachten Sie, dass dies kein mögliches Vorzeichen des Pauli Objekts enthält, das zur Konstruktion dieses Gitters verwendet wurde, da das Vorzeichen im Rotationswinkel enthalten ist, auf den über das params Attribut zugegriffen werden kann.

Rückgabe

Die Pauli-Rotationsachse.

Rückgabetyp

qiskit.quantum_info.Pauli

power

power(exponent, annotated=False)

GitHub

Erhebe dieses Tor zur Potenz von exponent.

Entweder als einheitliches Gatter implementiert (siehe UnitaryGate) oder als kommentierte Operation (siehe AnnotatedOperation). Bei mehreren Standardgattern, wie z. B. RXGate, wenn die Leistung eines Gatters als Funktion eines anderen Standardgatters ausgedrückt werden kann, das direkt zurückgegeben wird.

Parameter

  • exponent (float) – die Kraft, das Tor zu öffnen
  • annotated (bool) – gibt an, ob das Power-Gate als annotierte Operation implementiert werden kann. Bei einigen Standardgattern, wie beispielsweise RXGate, wird dieses Argument ignoriert, wenn die Leistung eines Gatters durch ein anderes Standardgatter ausgedrückt werden kann.

Rückgabe

Eine Operation, die gate^exponent

Erhöhungen

CircuitError – Wenn das Gatter nicht unitär ist

repeat

repeat(n)

GitHub

Erstellt eine Anweisung, die selfnn -mal wiederholt wird.

Parameter

n (int) – Anzahl der Wiederholungen der Anweisung

Rückgabe

Enthält die Definition.

Rückgabetyp

qiskit.circuit.Instruction

Erhöhungen

CircuitError – Wenn n < 1 ist.

reverse_ops

reverse_ops()

GitHub

Bei einem zusammengesetzten Befehl kehren Sie die Reihenfolge der Teilbefehle um.

Dies geschieht durch rekursive Umkehrung aller Teilbefehle. Es kehrt kein Logikgatter um.

Rückgabe

eine neue Anweisung mit

Unterbefehle umgekehrt.

Rückgabetyp

qiskit.circuit.Instruction

soft_compare

soft_compare(other)

GitHub

Weicher Vergleich zwischen den Toren. Ihre Namen, die Anzahl der Qubits und die Anzahl der klassischen Bits müssen übereinstimmen. Die Anzahl der Parameter muss übereinstimmen. Jeder Parameter wird verglichen. Wenn man ein „ ParameterExpression “ ist, wird dies nicht berücksichtigt.

Parameter

other (instruction) – sonstige Anweisungen.

Rückgabe

sind „self“ und „other“ bis auf Parameterausdrücke gleich.

Rückgabetyp

bool

to_matrix

to_matrix()

GitHub

Gibt eine dichte Matrixdarstellung von PauliProductRotationGate… zurück.

Dies implementiert

e−iθ/2P=cos⁡(θ/2)I−isin⁡(θ/2)Pe^{-i \theta / 2 P} = \cos(\theta / 2) I - i \sin(\theta / 2) P

für einen Drehwinkel θ\theta und Pauli PP.

to_mutable

to_mutable()

GitHub

Gibt eine veränderbare Kopie dieses Gates 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, deren Zustand verändert werden kann. Wenn die Instanz bereits veränderbar ist, handelt es sich um eine vollständige Kopie dieser Instanz.

validate_parameter

validate_parameter(parameter)

GitHub

Die Gate-Parameter sollten vom Typ „int“, „float“ oder „ ParameterExpression “ sein

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