PhasedQubitSparsePauli
class qiskit.quantum_info.PhasedQubitSparsePauli(data, /, num_qubits=None)
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 , per e un intero 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 formatifrom_label()ofrom_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 conPauli). - 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 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_labelidentity
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.