Skip to main content
IBM Quantum Platform

PhasedQubitSparsePauli

class qiskit.quantum_info.PhasedQubitSparsePauli(data, /, num_qubits=None)

GitHub

Basen: object

Ein Pauli-Operator, der in einem Qubit-sparse-Format gespeichert ist.


Darstellung

Ein Pauli-Operator ist ein Tensorprodukt von Ein-Qubit-Pauli-Operatoren der Form P=(−i)m⨂nAi(n)P = (-i)^m \bigotimes_n A^{(n)}_i, für Ai(n)∈{I,X,Y,Z}A^{(n)}_i \in \{I, X, Y, Z\} und eine ganze Zahl mm, die als Phasenexponent bezeichnet wird. Die interne Darstellung von a PhasedQubitSparsePauli speichert nur die nicht-identischen Ein-Qubit-Pauli-Operatoren.

Intern wird jeder Pauli-Operator für ein einzelnes Qubit mit einem numerischen Wert gespeichert. Siehe die Dokumentation von QubitSparsePauli für eine Beschreibung der Formatierung des numerischen Wertes, der mit jedem Pauli assoziiert ist, sowie für eine Beschreibung der paulis und indices attributen, die jedes Pauli und seinen zugehörigen Qubit-Index speichern.

Zusätzlich kann die Phase des Operators über das Attribut phase attribut abgefragt werden, das den Exponenten der Gruppenphase zurückgibt, was dem Verhalten des gleichen Attributs in Pauli.


Bauwesen

PhasedQubitSparsePauli definiert mehrere Konstruktoren. Der Standardkonstruktor versucht, einen der spezifischeren Konstruktoren zu delegieren, der auf dem Typ der Eingabe basiert. Sie können jederzeit die spezifischen Konstruktoren verwenden, um mehr Kontrolle über die Konstruktion zu haben.

Methode
Zusammenfassung
from_label()Konvertiert eine dichte Zeichenkette in eine PhasedQubitSparsePauli.
from_sparse_label()Bauen Sie eine PhasedQubitSparsePauli aus einem Tupel aus einer Phase, einem spärlichen String-Label und den Qubits, auf die sie sich beziehen.
from_pauli()Heben Sie eine einzelne Pauli in eine PhasedQubitSparsePauli.
from_raw_parts()Erstellen Sie die Liste aus den Rohdaten-Arrays und der Phase.

__new__

__new__(data, /, num_qubits=None)

Der Standardkonstruktor von QubitSparsePauli.

Dies delegiert an eine der expliziten Konvertierungs-Konstruktor-Methoden, basierend auf dem Typ des data Arguments. Wenn num_qubits übergeben wird und der Konstruktor, der durch den Typ von data impliziert wird, keine Zahl akzeptiert, muss die angegebene Ganzzahl mit der Eingabe übereinstimmen.

Parameter

  • data - Der Datentyp der Eingabe. Dies kann ein anderes QubitSparsePaulisein, in welchem Fall die Eingabe kopiert wird, oder es kann ein gültiges Format für entweder from_label() oder sein from_sparse_label().
  • num_qubits (int|None) – Optionale Anzahl von Qubits für den Operator. Bei den meisten Dateneingaben kann dies abgeleitet werden und muss nicht angegeben werden. Sie ist nur für das Sparse-Label-Format erforderlich. Wenn sie unnötig angegeben wird, muss sie mit den eingegebenen Daten übereinstimmen.

Attribute

indices

Nur-Lese-Ansicht auf die Indizes jedes nicht-identischen Ein-Qubit-Terms.

Die Indizes werden immer in sortierter Reihenfolge angezeigt.

num_qubits

Die Anzahl der Qubits, für die der Begriff definiert ist.

paulis

Nur-Lese-Ansicht auf die einzelnen Ein-Qubit-Terme.

Die einzigen gültigen Werte im Array sind die mit einem entsprechenden Pauli.

phase

Nur-Lese-Ansicht auf die Phase.


Methoden

commutes

commutes(other)

Prüfen Sie, ob self` mit einem anderen phasenverschobenen Qubit sparse pauli pendelt.

Parameter

other (PhasedQubitSparsePauli) – das phasenweise Qubit sparse Pauli, mit dem die Kommutation zu prüfen ist.

compose

compose(other)

Komposition mit einem anderen PhasedQubitSparsePauli.

Parameter

other (PhasedQubitSparsePauli) – das Qubit sparse Pauli, mit dem man komponieren kann.

copy

copy()

Besorgen Sie sich eine Kopie dieses Begriffs.

from_label

static from_label(label, /)

Konstruieren Sie aus einer dichten Zeichenfolge label.

Die Bezeichnung muss eine Folge des Alphabets 'IXYZ' sein. Das Label wird analog zu einem Bitstring interpretiert. Mit anderen Worten: Der Buchstabe ganz rechts ist dem Qubit 0 zugeordnet usw. Dies ist dasselbe wie die Bezeichnungen für Pauli und SparsePauliOp.

Parameter

label (str) – das dichte Etikett.

Beispiele

>>> QubitSparsePauli.from_label("IIIIXZI")
<QubitSparsePauli on 7 qubits: X_2 Z_1>
>>> label = "IYXZI"
>>> pauli = Pauli(label)
>>> assert QubitSparsePauli.from_label(label) == QubitSparsePauli.from_pauli(pauli)

from_pauli

static from_pauli(pauli, /)

Konstruieren Sie eine PhasedQubitSparsePauli aus einer einzelnen Pauli instanz.

Parameter

pauli (Pauli) – den einzelnen Pauli zu konvertieren.

Beispiele

>>> label = "iIYXZI"
>>> pauli = Pauli(label)
>>> PhasedQubitSparsePauli.from_pauli(pauli)
<PhasedQubitSparsePauli on 5 qubits: iY_3 X_2 Z_1>
>>> assert PhasedQubitSparsePauli.from_label(label) == PhasedQubitSparsePauli.from_pauli(pauli)

from_raw_parts

static from_raw_parts(num_qubits, paulis, indices, phase=0)

Konstruieren Sie eine PhasedQubitSparsePauli aus rohen Numpy-Arrays, die der in der Dokumentation auf Klassenebene beschriebenen erforderlichen Datendarstellung entsprechen.

Die Daten aus jedem Array werden in neue, erweiterbare Rust-Space-Zuweisungen kopiert.

Parameter

  • num_qubits - Anzahl der Qubits, auf die der Operator wirkt.
  • paulis - Liste der Ein-Qubit-Terme. Dies sollte ein Numpy-Array mit dtype sein uint8 (der kompatibel ist mit Pauli).
  • indizes - sortierte Liste der Qubits, denen jeder Ein-Qubit-Term entspricht. Dies sollte ein Numpy-Array mit dtype sein uint32.
  • phase - Der Phasenexponent des Operators.

Beispiele

Konstruieren Sie einen ZZ Operator, der auf Qubit 50 von 100 Qubits wirkt.

>>> num_qubits = 100
>>> terms = np.array([PhasedQubitSparsePauli.Pauli.Z], dtype=np.uint8)
>>> indices = np.array([50], dtype=np.uint32)
>>> phase = 0
>>> PhasedQubitSparsePauli.from_raw_parts(num_qubits, terms, indices, phase)
<PhasedQubitSparsePauli on 100 qubits: Z_50>

from_sparse_label

static from_sparse_label(sparse_label, num_qubits)

Konstruieren Sie ein phasengesteuertes Sparse-Pauli-Bit aus einem Sparse-Label, das als Tupel aus einem int für den Phasenexponenten, einer Kette von Paulis und den Indizes der entsprechenden Qubits besteht.

Dies ist vergleichbar mit SparsePauliOp.from_sparse_list().

Parameter

  • sparse_label (tuple[int, str, Sequence[int]]) – bezeichnungen und die Qubits, auf die sich jeder Ein-Qubit-Term bezieht.
  • num_qubits (int) – die Anzahl der Qubits, auf die der Operator wirkt.

Beispiele

Konstruieren Sie ein einfaches Pauli:

>>> PhasedQubitSparsePauli.from_sparse_label(
...     (0, "ZX", (1, 4)),
...     num_qubits=5,
... )
<PhasedQubitSparsePauli on 5 qubits: X_4 Z_1>

Diese Methode kann das Verhalten von from_label()replizieren, wenn das Feld qubit-arguments des Tupels auf abnehmende Ganzzahlen gesetzt wird:

>>> label = "XYXZ"
>>> from_label = PhasedQubitSparsePauli.from_label(label)
>>> from_sparse_label = PhasedQubitSparsePauli.from_sparse_label(
...     (0, label, (3, 2, 1, 0)),
...     num_qubits=4
... )
>>> assert from_label == from_sparse_label

identity

static identity(num_qubits)

Ermittelt den Identitätsoperator für eine bestimmte Anzahl von Qubits.

Beispiele

Ermitteln Sie die Identität von 100 Qubits:

>>> QubitSparsePauli.identity(100)
<QubitSparsePauli on 100 qubits: >

to_pauli

to_pauli()

Rückgabe a Pauli zurück, das denselben Pauli repräsentiert.

to_phased_qubit_sparse_pauli_list

to_phased_qubit_sparse_pauli_list()

Dieses Pauli in ein einzelnes Element umwandeln PhasedQubitSparsePauliList.

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