Skip to main content
IBM Quantum Platform

PhasedQubitSparsePauli

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

GitHub

Basi: object

Un operatore di Pauli memorizzato in un formato qubit-sparse.


Rappresentazione

Un operatore di Pauli è un prodotto tensoriale di operatori di Pauli a singolo qubit della forma P=(i)mnAi(n)P = (-i)^m \bigotimes_n A^{(n)}_i, per Ai(n){I,X,Y,Z}A^{(n)}_i \in \{I, X, Y, Z\} e un intero mm chiamato esponente di fase. La rappresentazione interna di a PhasedQubitSparsePauli memorizza solo gli operatori di Pauli non identitari a singolo qubit.

Internamente, ogni operatore di Pauli a singolo qubit è memorizzato con un valore numerico. Si veda la documentazione di QubitSparsePauli per una descrizione della formattazione del valore numerico associato a ciascun Pauli, nonché per le descrizioni dei parametri paulis e indices che memorizzano ogni Pauli e l'indice di qubit associato.

Inoltre, la fase dell'operatore può essere recuperata attraverso l'attributo phase che restituisce l'esponente della fase del gruppo, in linea con il comportamento dello stesso attributo in Pauli.


Costruzioni

PhasedQubitSparsePauli definisce diversi costruttori. Il costruttore predefinito tenterà di delegare a uno dei costruttori più specifici, in base al tipo di input. Si possono sempre usare i costruttori specifici per avere un maggiore controllo sulla costruzione.

Metodo
Riepilogo
from_label()Converte un'etichetta stringa densa in un elemento PhasedQubitSparsePauli.
from_sparse_label()Costruire un PhasedQubitSparsePauli da una tupla di una fase, un'etichetta di stringa sparsa e i qubit a cui si applicano.
from_pauli()Sollevare un singolo Pauli in un PhasedQubitSparsePauli.
from_raw_parts()Costruire l'elenco dagli array di dati grezzi e dalla fase.

__new__

__new__(data, /, num_qubits=None)

Il costruttore predefinito di QubitSparsePauli.

Delega a uno dei metodi espliciti del costruttore di conversione, in base al tipo dell'argomento data . Se viene fornito num_qubits e il costruttore implicito nel tipo di data non accetta un numero, il numero intero fornito deve corrispondere all'input.

Parametri

  • data - Il tipo di dati dell'ingresso. Può essere un altro formato QubitSparsePauli, nel qual caso l'input viene copiato, oppure può essere un formato valido per i formati from_label() o from_sparse_label().
  • num_qubits (int|None) – Numero opzionale di qubit per l'operatore. Per la maggior parte degli input di dati, questo può essere dedotto e non è necessario passarlo. È necessario solo per il formato sparse-label. Se viene dato inutilmente, deve corrispondere ai dati immessi.

Attributi

indices

Visualizzazione in sola lettura degli indici di ogni termine non identitario a singolo qubit.

Gli indici saranno sempre in ordine sparso.

num_qubits

Il numero di qubit su cui è definito il termine.

paulis

Visualizzazione in sola lettura dei singoli termini a singolo qubit.

Gli unici valori validi nell'array sono quelli con un corrispondente Pauli.

phase

Visualizzazione di sola lettura della fase.


Metodi

commutes

commutes(other)

Verificare se self´ commuta con un altro qubit sparse phased pauli.

Parametri

other (PhasedQubitSparsePauli) – il qubit sparse Pauli fasato con cui verificare la commutazione.

compose

compose(other)

Composizione con un altro PhasedQubitSparsePauli.

Parametri

other (PhasedQubitSparsePauli) – il qubit sparse Pauli da comporre.

copy

copy()

Ottenere una copia di questo termine.

from_label

static from_label(label, /)

Costruire da un'etichetta stringa densa.

L'etichetta deve essere una sequenza dell'alfabeto 'IXYZ'. L'etichetta viene interpretata in modo analogo a una stringa di bit. In altre parole, la lettera più a destra è associata al qubit 0 e così via. Questa è la stessa etichetta per Pauli e SparsePauliOp.

Parametri

label (str) – l'etichetta densa.

Esempi

>>> 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, /)

Costruire un PhasedQubitSparsePauli da una singola Pauli istanza.

Parametri

pauli (Pauli) – il singolo Pauli da convertire.

Esempi

>>> 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)

Costruire una classe PhasedQubitSparsePauli da array Numpy grezzi che corrispondono alla rappresentazione dei dati richiesta, descritta nella documentazione a livello di classe.

I dati di ogni array vengono copiati in allocazioni fresche e crescenti dello spazio Rust.

Parametri

  • num_qubit - numero di qubit su cui agisce l'operatore.
  • paulis - elenco dei termini single-qubit. Dovrebbe essere un array Numpy con dtype uint8 (che è compatibile con Pauli).
  • indici - elenco ordinato dei qubit a cui corrisponde ogni termine a singolo qubit. Dovrebbe essere un array Numpy con il tipo dtype uint32.
  • fase - L'esponente di fase dell'operatore.

Esempi

Costruire un operatore ZZ che agisce sul qubit 50 di 100 qubit.

>>> 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)

Costruisce un qubit sparse Pauli da un'etichetta sparsa, data come tupla di un int per l'esponente di fase, una stringa di Pauli e gli indici dei qubit corrispondenti.

Questo è analogo a SparsePauliOp.from_sparse_list().

Parametri

  • sparse_label (tuple[int, str, Sequence[int]]) – e i qubit a cui si applica ogni termine a singolo qubit.
  • num_qubits (int) – il numero di qubit su cui agisce l'operatore.

Esempi

Costruire un semplice Pauli:

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

Questo metodo può replicare il comportamento di from_label()se il campo qubit-arguments della tupla è impostato su numeri interi decrescenti:

>>> 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)

Ottiene l'operatore di identità per un dato numero di qubit.

Esempi

Ottenere l'identità su 100 qubit:

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

to_pauli

to_pauli()

Restituire un Pauli che rappresenta lo stesso Pauli.

to_phased_qubit_sparse_pauli_list

to_phased_qubit_sparse_pauli_list()

Convertire questo Pauli in un singolo elemento PhasedQubitSparsePauliList.

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.