PhasedQubitSparsePauli
class qiskit.quantum_info.PhasedQubitSparsePauli(data, /, num_qubits=None)
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 , für und eine ganze Zahl , 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 entwederfrom_label()oder seinfrom_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 mitPauli). - 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 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_labelidentity
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.