Pauli
class qiskit.quantum_info.Pauli(data=None)
Basen: BasePauli
N-Qubit Pauli-Operator.
Diese Klasse repräsentiert einen Operator aus der vollständigen -qubit Pauli-Gruppe
wobei und Ein-Qubit-Pauli-Matrizen sind:
Initialisierung
Ein Pauli-Objekt kann auf verschiedene Weise initialisiert werden:
Pauli(obj)wobei
objeine Pauli-Kette ist,PaulioderScalarOpoperator oder ein Pauli-Tor oderQuantumCircuit, das nur Pauli-Tore enthält.
Pauli((z, x, phase))wobei
zundxbooleschenumpy.ndarrayssind undphaseeine ganze Zahl in[0, 1, 2, 3]ist.
Pauli((z, x))gleichwertig mit
Pauli((z, x, 0))mit trivialer Phase.
String-Darstellung
Ein -Qubit Pauli kann durch eine Zeichenkette dargestellt werden, die aus Zeichen von ['I', 'X', 'Y', 'Z'] und optional einem Phasenkoeffizienten in ['', '-i', '-', 'i'] besteht. Zum Beispiel: 'XYZ' oder '-iZIZ'.
In der Zeichenkettendarstellung entspricht qubit-0 dem äußersten rechten Pauli-Zeichen und qubit- dem äußersten linken Pauli-Zeichen. Zum Beispiel repräsentiert 'XYZ' mit 'Z' auf qubit-0, 'Y' auf qubit-1 und 'X' auf qubit-2.
Die String-Darstellung kann mit Hilfe der Klasseninitialisierung (Pauli('-iXYZ')) in eine Pauli konvertiert werden. Ein Pauli Objekt kann mit der Methode to_label() methode oder str(pauli) zurückgewandelt werden.
Die Verwendung von str zur Umwandlung von Pauli in eine Zeichenkette wird die zurückgegebene Zeichenkette bei einer großen Anzahl von Qubits abschneiden, während to_label() die vollständige Zeichenkette ohne Abschneiden zurückgibt. Die Standardlänge für die Trunkierung beträgt 50 Zeichen. Der Standardwert kann geändert werden, indem das Attribut der Klasse __truncate__ auf einen Integer-Wert gesetzt wird. Bei der Einstellung 0 wird keine Trunkierung vorgenommen.
Array-Darstellung
Die interne Datenstruktur eines -Qubits Pauli besteht aus zwei booleschen Vektoren der Länge , und einer ganzen Zahl , die den Pauli-Operator definiert
Das -te Qubit entspricht dem -ten Eintrag in den Arrays und
wobei z[k] = P.z[k] bzw. x[k] = P.x[k] .
Auf die Arrays und kann mit den Befehlen z und x eigenschaften zugegriffen werden. Auf die Phasen-Ganzzahl kann mit der Eigenschaft phase eigenschaft.
Darstellung von Matrix-Operatoren
Pauli-Matrizen können in umgewandelt werden Operator mit der Methode to_operator() oder in eine dichte oder dünnbesetzte komplexe Matrix mit der Methode to_matrix() methode.
Datenzugriff
Auf die einzelnen Paulis der Qubits kann mit dem Operator [] zugegriffen werden, der Ganzzahlen, Listen oder Slices zur Auswahl von Teilmengen von Paulis akzeptiert. Beachten Sie, dass bei der Auswahl von Teilmengen von Pauli die Phase des aktuellen Pauli verworfen wird.
Zum Beispiel
from qiskit.quantum_info import Pauli
P = Pauli('-iXYZ')
print('P[0] =', repr(P[0]))
print('P[1] =', repr(P[1]))
print('P[2] =', repr(P[2]))
print('P[:] =', repr(P[:]))
print('P[::-1] =', repr(P[::-1]))Initialisieren Sie den Pauli.
Bei Verwendung der Eingabedaten des symplektischen Arrays müssen sowohl z- als auch x-Argumente angegeben werden; das erste (z-)Argument kann jedoch auch allein für String-Label, Pauli-Operator oder ScalarOp eingabedaten verwendet werden.
Parameter
data (str ortuple orPauli orScalarOp) – eingabedaten für Pauli. Handelt es sich bei der Eingabe um ein Tupel, muss es die Form (z, x) oder (z, x, phase) haben, wobei z und x boolesche Numpy-Arrays sind und phase eine ganze Zahl aus ist. Handelt es sich bei der Eingabe um eine Zeichenkette, muss es sich um eine Verkettung von phase und einer Pauli-Zeichenkette handeln (z. B. 'XYZ', '-iZIZ') wobei eine Phasenfolge eine Kombination aus höchstens drei Zeichen aus ['+', '-', ''], ['1', ''] und ['i', 'j', ''] in dieser Reihenfolge ist, z. B. '', '-1j' während eine Pauli-Zeichenkette aus 1 oder mehreren Zeichen von 'I', 'X', 'Y' oder 'Z' besteht, z. B. 'Z', 'XIYY'.
Erhöht
QiskitError – wenn das Eingabe-Array eine ungültige Form hat.
Attribute
dim
Rückgabe Tupel (input_shape, output_shape).
name
Eindeutiger String-Bezeichner für die Vorgangsart.
num_clbits
Anzahl der klassischen Bits.
num_qubits
Gibt die Anzahl der Qubits zurück, wenn es sich um einen N-Qubit-Operator handelt, andernfalls None.
phase
Gibt den Gruppenphasenexponenten für die Pauli-Gruppe zurück.
qargs
Gibt die qargs für den Operator zurück.
settings
Einstellungen zurückgeben.
x
Der x-Vektor für den Pauli.
z
Der z-Vektor für den Pauli.
Methoden
adjoint
anticommutes
anticommutes(other, qargs=None)
Gibt True zurück, wenn andere Pauli mit self anticommutes.
Parameter
- other (Pauli) – ein weiterer Pauli-Operator.
- qargs (list) – qubits, auf die das Punktprodukt angewendet werden soll (Voreinstellung: Keine).
Rückgabe
Wahr, wenn Pauli's anticommute, Falsch, wenn sie pendeln.
Rückgabetyp
apply_layout
apply_layout(layout, num_qubits=None)
Wenden Sie ein Transpiler-Layout auf diese Pauli
Parameter
- layout (TranspileLayout |list[int] | None) – Entweder ein
TranspileLayout, eine Liste von Ganzzahlen oder None. Wenn sowohl layout als auch num_qubits keine sind, wird eine Kopie des Operators zurückgegeben. - num_qubits (int | None) – Die Anzahl der Qubits, auf die der Operator erweitert werden soll. Wenn nicht angegeben, wird, wenn
layouteinTranspileLayoutist, wird standardmäßig die Anzahl der Qubits der Transpiler-Ausgangsschaltung verwendet. Wennlayouteine Liste von ganzen Zahlen ist, wird die angegebene Permutation ohne Expansion angewendet. Ist Layout gleich Null, wird der Operator auf die angegebene Anzahl von Qubits erweitert.
Rückgabe
Eine neue Pauli mit dem angegebenen Layout
Rückgabetyp
commutes
commutes(other, qargs=None)
Gibt True zurück, wenn der Pauli mit anderen pendelt.
Parameter
- other (Pauli orPauliList) – ein weiterer Pauli-Operator.
- qargs (list) – qubits, auf die das Punktprodukt angewendet werden soll (Voreinstellung: Keine).
Rückgabe
Richtig, wenn die Paulis pendeln, falsch, wenn sie nicht pendeln.
Rückgabetyp
compose
compose(other, qargs=None, front=False, inplace=False)
Rückgabe der Operator-Komposition mit einem anderen Pauli.
Parameter
- other (Pauli) – ein Pauli-Objekt.
- qargs (list or None) – Qubits, auf die das Skalarprodukt angewendet werden soll (Standard: None).
- front (bool) – Wenn True, wird mit der Multiplikation des Rechtsoperators anstelle der Linksmultiplikation komponiert, [Standard: False].
- inplace (bool) – Bei True wird die Aktualisierung an Ort und Stelle durchgeführt (Standard: False).
Rückgabe
Der komponierte Pauli.
Rückgabetyp
Erhöht
QiskitError – wenn andere nicht in einen Operator umgewandelt werden können oder für die angegebenen Teilsysteme nicht kompatible Dimensionen aufweisen.
Die Komposition (&) ist standardmäßig als linke Matrixmultiplikation für Matrixoperatoren definiert, während dot() als rechte Matrixmultiplikation definiert ist. Das heißt, dass A & B == A.compose(B) gleichwertig mit 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
copy
delete
delete(qubits)
Gibt einen Pauli mit gelöschten Qubits zurück.
Parameter
qubits (int orlist) – qubits aus Pauli zu löschen.
Rückgabe
das resultierende Pauli, bei dem die angegebenen Qubits entfernt wurden.
Rückgabetyp
Erhöht
QiskitError – wenn „ind“ außerhalb des zulässigen Bereichs für die Array-Größe oder die Anzahl der Qubits liegt.
dot
dot(other, qargs=None, inplace=False)
Rückgabe des rechtsmultiplizierten Operators self * other.
Parameter
- other (Pauli) – ein Operator-Objekt.
- qargs (list or None) – Qubits, auf die das Skalarprodukt angewendet werden soll (Standard: None).
- inplace (bool) – Bei True wird die Aktualisierung an Ort und Stelle durchgeführt (Standard: False).
Rückgabe
Der Betreiber selbst * andere.
Rückgabetyp
equiv
equiv(other)
Gibt True zurück, wenn die Pauli's bis zur Gruppenphase äquivalent sind.
Parameter
other (Pauli) – ein Operator-Objekt.
Rückgabe
Richtig, wenn die Pauli-Sätze bis zur Gruppenphase äquivalent sind.
Rückgabetyp
evolve
evolve(other, qargs=None, frame='h')
Führt entweder die Heisenberg- (Standard) oder die Schrödinger-Bildentwicklung des Pauli-Bildes durch ein Clifford-Bild durch und gibt das entwickelte Pauli-Bild zurück.
Die Entwicklung des Schrödinger-Bildes kann durch Übergabe des Parameters frame='s' gewählt werden. Diese Option führt zu einer schnelleren Berechnung.
Das Heisenberg-Bild entwickelt das Pauli-Bild als .
Schrödingers Bild entfaltet das Pauli-Bild als .
Parameter
- other (Pauli orClifford orQuantumCircuit) – Der Clifford-Operator, nach dem die Entwicklung erfolgen soll.
- qargs (list) – eine Liste von Qubits, auf die das Clifford-Verfahren angewendet werden soll.
- frame (string) –
'h'für Heisenberg (Standard) oder's'für das Schrödinger-System.
Rückgabe
das Pauli (Heisenberg-Bild) oder das Pauli (Schrödinger-Bild).
Rückgabetyp
Erhöht
QiskitError – wenn die Clifford-Zahl der Qubits und die der Qargs nicht übereinstimmen.
expand
expand(other)
Gibt das Tensorprodukt umgekehrter Ordnung mit einem anderen Pauli zurück.
Parameter
other (Pauli) – ein Pauli-Objekt.
Rückgabe
das Tensorprodukt , wobei
ist der aktuelle Pauli, und ist der andere Pauli.
Rückgabetyp
input_dims
input_dims(qargs=None)
Rückgabe eines Tupels der Eingabedimension für die angegebenen Teilsysteme.
insert
insert(qubits, value)
Einfügen eines Pauli bei einem bestimmten Qubit-Wert.
Parameter
Rückgabe
das resultierende Pauli mit den eingefügten Einträgen.
Rückgabetyp
Erhöht
QiskitError – wenn die Einfüge-Qubits ungültig sind.
inverse
output_dims
output_dims(qargs=None)
Rückgabe eines Tupels der Ausgabedimension für die angegebenen Teilsysteme.
power
power(n)
Gibt das Ergebnis der n-maligen Anwendung eines Operators auf sich selbst zurück.
Parameter
n (int) – die Anzahl der Kompositionen mit sich selbst ( n>0 ).
Rückgabe
der n-fach zusammengesetzte Operator.
Rückgabetyp
Erhöht
QiskitError – wenn die Eingabe- und Ausgabedimensionen des Operators nicht gleich sind oder die Potenz keine positive ganze Zahl ist.
reshape
reshape(input_dims=None, output_dims=None, num_qubits=None)
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.
set_truncation
classmethod set_truncation(val)
Legen Sie die maximale Anzahl an Pauli-Zeichen fest, die vor dem Abschneiden angezeigt werden sollen.
Parameter
val (int) – die Anzahl der Zeichen.
Die Trunkierung wird deaktiviert, wenn der Trunkierungswert auf 0 gesetzt wird.
tensor
tensor(other)
Geben Sie das Tensorprodukt mit einem anderen Pauli zurück.
Parameter
other (Pauli) – ein Pauli-Objekt.
Rückgabe
** das Tensorprodukt , wobei **
ist der aktuelle Pauli, und ist der andere Pauli.
Rückgabetyp
Das Tensorprodukt kann mit dem binären Operator ^ erhalten werden. Daher ist a.tensor(b) gleichbedeutend mit a ^ b.
to_instruction
to_label
to_label()
Konvertiert einen Pauli in einen String-Label.
Der Unterschied zwischen to_label und __str__() besteht darin, dass Letzteres die Ausgabe bei einer großen Anzahl von Qubits abschneidet.
Rückgabe
das Pauli String Label.
Rückgabetyp
to_matrix
to_matrix(sparse=False)
Umwandlung in ein Numpy-Array oder eine dünnbesetzte CSR-Matrix.
Parameter
sparse (bool) – bei True werden dünn besetzte CSR-Matrizen zurückgegeben, andernfalls werden dichte Numpy-Arrays zurückgegeben (Standard: False).
Rückgabe
Die Pauli-Matrix.
Rückgabetyp