Skip to main content
IBM Quantum Platform

Bediener

class qiskit.quantum_info.Operator(data, input_dims=None, output_dims=None)

GitHub

Basen: LinearOp

Matrix-Operator-Klasse

Dies stellt einen Matrixoperator MM dar, der evolve() a Statevector ∣ψ⟩|\psi\rangle durch Matrix-Vektor-Multiplikation

∣ψ⟩↦M∣ψ⟩,|\psi\rangle \mapsto M|\psi\rangle,

und wird evolve() a DensityMatrix ρ\rho durch Links- und Rechtsmultiplikation

ρ↦MρM†.\rho \mapsto M \rho M^\dagger.

Der folgende Operator M=XM = X, der auf den Null-Zustand ∣ψ⟩=∣0⟩(ρ=∣0⟩⟨0∣)|\psi\rangle=|0\rangle (\rho = |0\rangle\langle 0|) angewandt wird, verwandelt ihn beispielsweise in den Ein-Zustand ∣ψ⟩=∣1⟩(ρ=∣1⟩⟨1∣)|\psi\rangle=|1\rangle (\rho = |1\rangle\langle 1|) :

>>> import numpy as np
>>> from qiskit.quantum_info import Operator
>>> op = Operator(np.array([[0.0, 1.0], [1.0, 0.0]]))  # Represents Pauli X operator
>>> from qiskit.quantum_info import Statevector
>>> sv = Statevector(np.array([1.0, 0.0]))
>>> sv.evolve(op)
Statevector([0.+0.j, 1.+0.j],
            dims=(2,))
>>> from qiskit.quantum_info import DensityMatrix
>>> dm = DensityMatrix(np.array([[1.0, 0.0], [0.0, 0.0]]))
>>> dm.evolve(op)
DensityMatrix([[0.+0.j, 0.+0.j],
            [0.+0.j, 1.+0.j]],
            dims=(2,))

Initialisieren Sie ein Operator-Objekt.

Parameter

  • data (QuantumCircuit |Operation | BaseOperator | np.ndarray) – Daten zur Initialisierung des Operators.
  • input_dims (tuple | None) – die Abmessungen des Eingabesubsystems.
  • output_dims (tuple | None) – die Abmessungen des Ausgabesubsystems.

Erhöht

QiskitError – wenn Eingabedaten nicht als Operator initialisiert werden können.

Weitere Informationen:

Wenn die Eingabe- oder Ausgabeabmessungen Keine sind, werden sie automatisch aus den Eingabedaten ermittelt. Wenn die Eingabedaten ein Numpy-Array der Form ( 2**N, 2**N ) sind, werden Qubit-Systeme verwendet. Handelt es sich bei dem Eingabeoperator nicht um einen N-Qubit-Operator, so wird ein einzelnes Teilsystem zugewiesen, dessen Dimension durch die Form der Eingabe bestimmt wird. Man beachte, dass zwei mit dieser Methode initialisierte Operatoren nur dann als äquivalent gelten, wenn sie mit ihrer kanonischen Qubit-Reihenfolge (oder: Permutation) übereinstimmen. Siehe Operator.from_circuit() um eine andere Qubit-Permutation anzugeben.


Attribute

atol

Standardwert: 1e-08

data

Das zugrunde liegende Numpy-Array.

dim

Rückgabe Tupel (input_shape, output_shape).

num_qubits

Gibt die Anzahl der Qubits zurück, wenn es sich um einen N-Qubit-Operator handelt, andernfalls None.

qargs

Gibt die qargs für den Operator zurück.

rtol

Standardwert: 1e-05

settings

Bedienereinstellungen zurückgeben.


Methoden

adjoint

adjoint()

GitHub

Gibt den Adjungierten des Operators zurück.

Rückgabetyp

Selbst

apply_permutation

apply_permutation(perm, front=False)

GitHub

Ändert die Daten des Operators, indem er sie mit einer Permutation zusammensetzt.

Parameter

  • perm (list) – permutationsmuster, das beschreibt, welche Qubits nach Anwendung der Permutation die Positionen 0, 1, 2 usw. einnehmen.
  • front (bool) – Bei True wird die Permutation vor dem Operator angewendet, bei False nach dem Operator.

Rückgabe

Der geänderte Operator.

Rückgabetyp

Bediener

Erhöht

QiskitError – wenn die Größe des Permutationsmusters nicht mit den Dimensionen des Operators übereinstimmt.

compose

compose(other, qargs=None, front=False)

GitHub

Gibt die Operator-Komposition mit einem anderen Operator zurück.

Parameter

  • other (Operator) – ein Operator-Objekt.
  • qargs (list or None) – eine Liste von Subsystempositionen, auf die andere angewendet werden sollen. Wenn „None“ auf alle Teilsysteme angewendet wird (Standard: None).
  • front (bool) – Wenn True, wird mit der Multiplikation des Rechtsoperators anstelle der Linksmultiplikation komponiert, [Standard: False].

Rückgabe

Der komponierte Operator.

Rückgabetyp

Bediener

Erhöht

QiskitError – wenn andere nicht in einen Operator umgewandelt werden können oder für die angegebenen Teilsysteme nicht kompatible Dimensionen aufweisen.

Anmerkung

Die Komposition (&) ist standardmäßig als linke Matrixmultiplikation für Matrixoperatoren definiert, während @ (entspricht dot()) als rechte Matrixmultiplikation definiert ist. Das heißt, dass A & B == A.compose(B) gleichwertig mit B @ A == B.dot(A) ist, wenn A und B vom gleichen Typ sind.

Die Einstellung front=True kwarg ändert dies in eine rechte Matrixmultiplikation und ist äquivalent zu der dot() methode A.dot(B) == A.compose(B, front=True).

conjugate

conjugate()

GitHub

Gibt die Konjugierte des Operators zurück.

copy

copy()

GitHub

Erstellen Sie eine Tiefenkopie des aktuellen Operators.

dot

dot(other, qargs=None)

GitHub

Rückgabe des rechtsmultiplizierten Operators self * other.

Parameter

  • other (Operator) – ein Operator-Objekt.
  • qargs (list or None) – eine Liste von Subsystempositionen, auf die andere angewendet werden sollen. Wenn „None“ auf alle Teilsysteme angewendet wird (Standard: None).

Rückgabe

Die rechte Matrix multipliziert Operator.

Rückgabetyp

Bediener

Anmerkung

Das Punktprodukt kann mit dem binären Operator @ ermittelt werden. Daher ist a.dot(b) gleichbedeutend mit a @ b.

draw

draw(output=None, **drawer_args)

GitHub

Gibt eine Visualisierung des Operators zurück.

repr : String of the state's __repr__.

text : ASCII TextMatrix, der in der Konsole ausgedruckt werden kann.

latex : Ein IPython-Latex-Objekt für die Anzeige in Jupyter-Notebooks.

latex_quelle : Roher, nicht kompilierter ASCII-Quelltext zur Erzeugung eines Arrays mit LaTeX.

Parameter

  • output (str) – Wählen Sie die Ausgabemethode, mit der der Zustand gezeichnet werden soll. Gültige Auswahlmöglichkeiten sind repr, text, latex, latex_source, Standard ist repr.
  • drawer_args - Argumente, die direkt an die entsprechende Zeichenfunktion oder den Konstruktor ( TextMatrix( ), array_to_latex()) übergeben werden. Siehe die entsprechende Funktion unter qiskit.visualization für die Dokumentation dieser Funktion.

Rückgabe

Zeichnung des Betreibers.

Rückgabetyp

str oder TextMatrix oder IPython.display.Latex

Erhöht

  • ValueError - wenn eine ungültige Ausgabemethode gewählt wird.
  • MissingOptionalLibrary - Wenn SymPy nicht installiert ist und 'latex' oder 'latex_source' für output ausgewählt wird.

equiv

equiv(other, rtol=None, atol=None)

GitHub

Gibt True zurück, wenn die Operatoren bis zur globalen Phase gleichwertig sind.

Parameter

  • other (Operator) – ein Operator-Objekt.
  • rtol (float) – relativer Toleranzwert zum Vergleich.
  • atol (float) – absoluter Toleranzwert zum Vergleich.

Rückgabe

Wahr, wenn die Operatoren bis zur globalen Phase gleichwertig sind.

Rückgabetyp

bool

expand

expand(other)

GitHub

Gibt das Tensorprodukt umgekehrter Ordnung mit einem anderen Operator zurück.

Parameter

other (Operator) – ein Operator-Objekt.

Rückgabe

das Tensorprodukt b⊗ab \otimes a, wobei aa

ist der aktuelle Operator, und bb ist der andere Operator.

Rückgabetyp

Bediener

from_circuit

classmethod from_circuit(circuit, ignore_set_layout=False, layout=None, final_layout=None)

GitHub

Erstelle ein neues Operator-Objekt aus einem QuantumCircuit

OperatorZwar kann ein QuantumCircuit Objekt direkt als Argument data an den Klassenkonstruktor übergeben werden, doch bietet dies keine Möglichkeiten, die Schaltung zur Erstellung eines Objekts zu nutzen. Mit dieser Konstruktormethode können Sie steuern, wie das Operator erstellt wird, sodass es an einen bestimmten Anwendungsfall angepasst werden kann.

Standardmäßig permutiert diese Konstruktormethode die Qubits auf der Grundlage eines konfigurierten Anfangslayouts (d.h. nachdem es transpiliert wurde). Es bietet auch die Möglichkeit, manuell ein Layout objekt direkt anzugeben.

Parameter

  • circuit (QuantumCircuit) – Das QuantumCircuit , aus dem ein Operator-Objekt erstellt werden soll.
  • ignore_set_layout (bool) – Bei True wird die Eingabe circuit ignoriert, wenn ein Layout festgelegt wurde
  • layout (Layout) – Falls angegeben, kann dieser kwarg verwendet werden, um ein bestimmtes Layout für die Permutation der Qubits in der erstellten Datei festzulegen Operator. Wenn dies angegeben wird, wird es anstelle eines in der Eingabe circuit enthaltenen Layouts verwendet. Falls angegeben, müssen die virtuellen Bits in der Layout müssen in der Eingabe circuit vorhanden sein.
  • final_layout (Layout) – Falls angegeben, kann dieser kwarg verwendet werden, um die durch Swap-Einfügungen während der Routing-Phase des Transpilers verursachte Ausgabe-Permutation darzustellen.

Rückgabe

Ein Operator, der die Eingangsschaltung darstellt

Rückgabetyp

Bediener

from_label

classmethod from_label(label)

GitHub

Rückgabe eines Tensorprodukts von Ein-Qubit-Operatoren.

Parameter

label (string) – ein-Qubit-Operator-String.

Rückgabe

Der N-Qubit-Operator.

Rückgabetyp

Bediener

Erhöht

QiskitError – wenn die Bezeichnung ungültige Zeichen enthält oder die Länge der Bezeichnung größer ist als eine explizit angegebene Anzahl von num_qubits.

Weitere Informationen:

Die Beschriftungen entsprechen den Einzel-Qubit-Matrizen: 'I': [ [1, 0], [0, 1] ] 'X': [ [0, 1], [1, 0] ] 'Y': [ [0, -1j], [1j, 0] ] 'Z': [ [1, 0], [0, -1] ] 'H': [ [1, 1], [1, -1] ] / sqrt(2) 'S': [ [1, 0], [0, 1j] ] 'T': [ [1, 0], [0, ( 1+1j ) / sqrt(2)] ] '0': [ [1, 0], [0, 0] ] '1': [ [0, 0], [0, 1] ] '+': [ [0.5, 0.5], [0.5, 0.5] ] '-': [ [0.5, -0.5], [-0.5, 0.5] ] 'r': [ [0.5, -0.5j], [0.5j, 0.5] ] 'l': [ [0.5, 0.5j], [-0.5j, 0.5] ]

input_dims

input_dims(qargs=None)

GitHub

Rückgabe eines Tupels der Eingabedimension für die angegebenen Teilsysteme.

is_unitary

is_unitary(atol=None, rtol=None)

GitHub

Gibt True zurück, wenn der Operator eine unitäre Matrix ist.

output_dims

output_dims(qargs=None)

GitHub

Rückgabe eines Tupels der Ausgabedimension für die angegebenen Teilsysteme.

power

power(n, branch_cut_rotation=3.141592653589793e-12, assume_unitary=False)

GitHub

Gibt die Matrixpotenz des Operators zurück.

Nicht-ganzzahlige Potenzen von Operatoren mit einem Eigenwert, dessen komplexe Phase π\pi ist, haben einen Verzweigungsschnitt in der komplexen Ebene, was die Berechnung der Hauptwurzel um diesen Schnitt herum von der Genauigkeit / den Unterschieden in der BLAS-Implementierung abhängig macht. Zum Beispiel kann die Quadratwurzel von Pauli Y die π/2\pi/2 oder −π/2-\pi/2 Y-Drehung ergeben, je nachdem, ob der Eigenwert -1 als complex(-1, tiny) oder complex(-1, -tiny) gefunden wird. Da solche Eigenwerte in der Quanteninformation sehr häufig vorkommen, dreht diese Funktion zunächst die Eingabematrix in der Phase, um den Schnittpunkt der Verzweigung auf einen weit weniger häufigen Punkt zu verschieben. Die zugrundeliegenden numerischen Präzisionsprobleme rund um den Verzweigungsschnittpunkt bleiben bestehen, wenn ein Operator einen Eigenwert in der Nähe dieser Phase hat. Das Ausmaß dieser Drehung kann mit dem Parameter branch_cut_rotation gesteuert werden.

Die Wahl von branch_cut_rotation beeinflusst die gefundene Hauptwurzel. Zum Beispiel wird die Quadratwurzel von ZGate wird entweder berechnet als SGate oder SdgGate berechnet, je nachdem, in welche Richtung die Drehung ausgeführt wird:

from qiskit.circuit import library
from qiskit.quantum_info import Operator

z_op = Operator(library.ZGate())
assert z_op.power(0.5, branch_cut_rotation=1e-3) == Operator(library.SGate())
assert z_op.power(0.5, branch_cut_rotation=-1e-3) == Operator(library.SdgGate())

Parameter

  • n (float) – die Macht, die Matrix zu erhöhen.
  • branch_cut_rotation (float) – Der Drehwinkel, der auf den Zweigschnitt in der komplexen Ebene angewendet werden soll. Dadurch wird der Schnitt des Zweigs vom gemeinsamen Punkt −1-1 weg verlagert, kann aber dazu führen, dass eine andere Wurzel als Hauptwurzel gewählt wird. Die Drehung erfolgt gegen den Uhrzeigersinn, entsprechend der Standardkonvention für komplexe Phasen.
  • assume_unitary (bool) – wenn True, wird angenommen, dass der Operator unitär ist. In diesem Fall verwenden wir für gebrochene Potenzen eine schnellere Implementierung auf der Grundlage der Schur-Zerlegung.

Rückgabe

der resultierende Operator O ** n.

Rückgabetyp

Bediener

Erhöht

QiskitError – wenn die Eingabe- und Ausgabedimensionen des Operators nicht gleich sind.

Anmerkung

Es ist nur dann sicher, das Argument assume_unitary auf True zu setzen, wenn der Operator unitär (oder, allgemeiner, normal) ist. Andernfalls wird die Funktion eine falsche Ausgabe liefern.

reshape

reshape(input_dims=None, output_dims=None, num_qubits=None)

GitHub

Rückgabe einer flachen Kopie mit umgestalteten Dimensionen des Eingangs- und Ausgangssubsystems.

Parameter

  • input_dims (None or tuple) – neue Subsystem-Eingangsmaße. Wenn Keine, werden die ursprünglichen Eingangsdimms beibehalten [Standard: Keine].
  • output_dims (None or tuple) – neue Dimensionen der Teilsystemleistung. Wenn Keine, werden die ursprünglichen Ausgangsdimms beibehalten [Standard: Keine].
  • num_qubits (None or int) – in einen N-Qubit-Operator umwandeln [Standard: Keine].

Rückgabe

gibt self mit umgestalteten Eingabe- und Ausgabeabmessungen zurück.

Rückgabetyp

BaseOperator

Erhöht

QiskitError – wenn die Summe aller Eingangs- oder Ausgangsabmessungen der Teilsysteme nicht konstant ist.

reverse_qargs

reverse_qargs()

GitHub

Gibt einen Operator mit umgekehrter Subsystemreihenfolge zurück.

Für einen Tensorproduktoperator ist dies gleichbedeutend mit der Umkehrung der Reihenfolge der Tensorproduktteilsysteme. Bei einem Operator A=An−1⊗...⊗A0A = A_{n-1} \otimes ... \otimes A_0 lautet der zurückgegebene Operator A0⊗...⊗An−1A_0 \otimes ... \otimes A_{n-1}.

Rückgabe

der Betreiber mit umgekehrter Reihenfolge der Teilsysteme.

Rückgabetyp

Bediener

tensor

tensor(other)

GitHub

Gibt das Tensorprodukt mit einem anderen Operator zurück.

Parameter

other (Operator) – ein Operator-Objekt.

Rückgabe

das Tensorprodukt a⊗ba \otimes b, wobei aa

ist der aktuelle Operator, und bb ist der andere Operator.

Rückgabetyp

Bediener

Anmerkung

Das Tensorprodukt kann mit dem binären Operator ^ erhalten werden. Daher ist a.tensor(b) gleichbedeutend mit a ^ b.

to_instruction

to_instruction()

GitHub

Umwandlung in eine UnitaryGate Anweisung.

to_matrix

to_matrix()

GitHub

Operator in NumPy Matrix umwandeln.

to_operator

to_operator()

GitHub

Operator in Matrix-Operator-Klasse umwandeln

Rückgabetyp

Operator

transpose

transpose()

GitHub

Gibt die Transponierung des Operators zurück.

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