Pauli
class qiskit.quantum_info.Pauli(data=None)
Basi: BasePauli
Operatore di Pauli a N-qubit.
Questa classe rappresenta un operatore del gruppo di Pauli completo -qubit
dove e sono matrici di Pauli a singolo qubit:
Inizializzazione
Un oggetto Pauli può essere inizializzato in diversi modi:
Pauli(obj)dove
objè una stringa di Pauli,Paulio unScalarOpo un operatore, o una porta Pauli oQuantumCircuitcontenente solo porte Pauli.
Pauli((z, x, phase))dove
zexsono booleaninumpy.ndarraysephaseè un intero in[0, 1, 2, 3].
Pauli((z, x))equivalente a
Pauli((z, x, 0))con fase banale.
Rappresentazione delle stringhe
Un -qubit Pauli può essere rappresentato da una stringa composta da caratteri di ['I', 'X', 'Y', 'Z'], ed eventualmente da un coefficiente di fase in ['', '-i', '-', 'i']. Ad esempio: 'XYZ' o '-iZIZ'.
Nella rappresentazione a stringa qubit-0 corrisponde al carattere di Pauli più a destra e qubit- al carattere di Pauli più a sinistra. Ad esempio 'XYZ' rappresenta con 'Z' su qubit-0, 'Y' su qubit-1 e 'X' su qubit-2.
La rappresentazione della stringa può essere convertita in un oggetto Pauli utilizzando l'inizializzazione della classe (Pauli('-iXYZ')). Un oggetto Pauli può essere riconvertito nella rappresentazione della stringa usando il metodo to_label() o str(pauli).
L'uso di str per convertire un Pauli in una stringa troncherà la stringa restituita per grandi numeri di qubit, mentre to_label() restituirà la stringa completa senza alcun troncamento. La lunghezza di troncamento predefinita è di 50 caratteri. Il valore predefinito può essere modificato impostando l'attributo di classe __truncate__ su un valore intero. Se impostato su 0 , non verrà eseguito alcun troncamento.
Rappresentazione della matrice
La struttura interna dei dati di un -qubit Pauli è costituita da due vettori booleani di lunghezza , , e da un intero che definisce l'operatore Pauli
Il qubit corrisponde alla -esima voce degli array e
dove z[k] = P.z[k], x[k] = P.x[k] rispettivamente.
Gli array e possono essere consultati e aggiornati utilizzando gli elementi z e x rispettivamente. L'intero di fase può essere consultato e aggiornato utilizzando la proprietà phase proprietà.
Rappresentazione dell'operatore di matrice
Le matrici di Pauli possono essere convertite in Operator utilizzando il metodo to_operator() , oppure in una matrice complessa densa o rada utilizzando il metodo to_matrix() metodo.
Accesso ai dati
È possibile accedere ai singoli qubit Paulis e aggiornarli utilizzando l'operatore [] , che accetta interi, liste o slices per selezionare sottoinsiemi di Paulis. Si noti che la selezione di sottoinsiemi di Pauli scarterà la fase del Pauli corrente.
Per esempio
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]))Inizializzare il Pauli.
Quando si utilizzano i dati di input della matrice simplectica è necessario fornire entrambi gli argomenti z e x, tuttavia il primo argomento (z) può essere utilizzato da solo per l'etichetta della stringa, l'operatore Pauli o i dati di input ScalarOp dati di input.
Parametri
data (str ortuple orPauli orScalarOp) – dati di input per Pauli. Se l'input è una tupla, deve essere della forma (z, x) o (z, x, phase) dove z e x sono array booleani di Numpy e la fase è un intero di . Se l'input è una stringa, deve essere una concatenazione di una fase e di una stringa di Pauli (ad esempio 'XYZ', '-iZIZ') dove una stringa di fase è una combinazione di almeno tre caratteri da ['+', '-', ''], ['1', ''], e ['i', 'j', ''] in questo ordine, ad esempio '', '-1j' mentre una stringa Pauli è costituita da 1 o più caratteri di 'I', 'X', 'Y', o 'Z', ad esempio 'Z', 'XIYY'.
Aumenti
QiskitError – se l'array di input ha una forma non valida.
Attributi
dim
Restituisce una tupla (forma_ingresso, forma_uscita).
name
Identificatore univoco del tipo di operazione.
num_clbits
Numero di bit classici.
num_qubits
Restituisce il numero di qubit se si tratta di un operatore a N qubit o altrimenti None.
phase
Restituisce l'esponente di fase del gruppo Pauli.
qargs
Restituisce i qarg per l'operatore.
settings
Impostazioni di ritorno.
x
Il vettore x per il Pauli.
z
Il vettore z per il Pauli.
Metodi
adjoint
anticommutes
anticommutes(other, qargs=None)
Restituisce True se l'altro Pauli anticommuta con self.
Parametri
- other (Pauli) – un altro operatore di Pauli.
- qargs (list) – qubit a cui applicare il prodotto di punti (valore predefinito: Nessuno).
Risultati
Vero se i Pauli sono anticommutativi, falso se sono commutativi.
Tipo di restituzione
apply_layout
apply_layout(layout, num_qubits=None)
Applicare un layout di transpiler a questo Pauli
Parametri
- layout (TranspileLayout |list[int] | None) – O un
TranspileLayout, un elenco di numeri interi o Nessuno. Se sia il layout che il numero di bit sono nulli, viene restituita una copia dell'operatore. - num_qubits (int | None) – Il numero di qubit a cui espandere l'operatore. Se non viene fornito, se
layoutè un valoreTranspileLayoutil numero di qubit del circuito di uscita del transpiler verrà utilizzato per impostazione predefinita. Selayoutè un elenco di numeri interi, la permutazione specificata verrà applicata senza alcuna espansione. Se il layout è None, l'operatore sarà espanso al numero di qubit indicato.
Risultati
Un nuovo Pauli con il layout fornito applicato
Tipo di restituzione
commutes
commutes(other, qargs=None)
Restituisce True se il Pauli commuta con altri.
Parametri
- other (Pauli orPauliList) – un altro operatore di Pauli.
- qargs (list) – qubit a cui applicare il prodotto di punti (valore predefinito: Nessuno).
Risultati
Vero se i Pauli sono pendolari, falso se sono anti-commutativi.
Tipo di restituzione
compose
compose(other, qargs=None, front=False, inplace=False)
Restituisce l'operatore composizione con un altro Pauli.
Parametri
- other (Pauli) – un oggetto Pauli.
- qargs (list or None) – qubit su cui applicare il prodotto scalare (impostazione predefinita: Nessuno).
- front (bool) – Se True, componi utilizzando la moltiplicazione dell'operatore a destra, invece della moltiplicazione a sinistra, [impostazione predefinita: False].
- inplace (bool) – Se True, aggiorna in-place (valore predefinito: False).
Risultati
Il composto Pauli.
Tipo di restituzione
Aumenti
QiskitError – se l’altro non può essere convertito in un operatore o presenta dimensioni incompatibili con i sottosistemi specificati.
La composizione (&) per impostazione predefinita è definita come moltiplicazione matriciale sinistra per gli operatori matriciali, mentre dot() è definita come moltiplicazione destra della matrice. Cioè A & B == A.compose(B) è equivalente a B.dot(A) quando A e B sono dello stesso tipo.
Impostando il kwarg front=True si passa alla moltiplicazione matriciale destra ed è equivalente al metodo dot()A.dot(B) == A.compose(B, front=True) .
conjugate
copy
delete
delete(qubits)
Restituisce un Pauli con i qubit cancellati.
Parametri
qubits (int orlist) – qubit da eliminare da Pauli.
Risultati
il Pauli risultante con la rimozione dei qubit specificati.
Tipo di restituzione
Aumenti
QiskitError – se ind è fuori dai limiti della dimensione dell'array o del numero di qubit.
dot
dot(other, qargs=None, inplace=False)
Restituisce l'operatore moltiplicato a destra self * altro.
Parametri
- other (Pauli) – un oggetto operatore.
- qargs (list or None) – qubit su cui applicare il prodotto scalare (impostazione predefinita: Nessuno).
- inplace (bool) – Se True, aggiorna in-place (valore predefinito: False).
Risultati
L'operatore self * altro.
Tipo di restituzione
equiv
equiv(other)
Restituisce True se i Pauli sono equivalenti fino alla fase di gruppo.
Parametri
other (Pauli) – un oggetto operatore.
Risultati
Vero se le Pauli sono equivalenti fino alla fase di gruppo.
Tipo di restituzione
evolve
evolve(other, qargs=None, frame='h')
Esegue l'evoluzione del quadro di Heisenberg (predefinito) o di Schrödinger del Pauli da parte di un Clifford e restituisce il Pauli evoluto.
L'evoluzione dell'immagine di Schrödinger può essere scelta passando il parametro frame='s'. Questa opzione consente di ottenere un calcolo più rapido.
Il quadro di Heisenberg evolve il Pauli come .
Il quadro di Schrödinger evolve il Pauli come .
Parametri
- other (Pauli orClifford orQuantumCircuit) – L'operatore di Clifford da utilizzare per l'evoluzione.
- qargs (list) – un elenco di qubit a cui applicare il Clifford.
- frame (string) –
'h'per Heisenberg (default) o's'per il quadro di Schrödinger.
Risultati
il Pauli (quadro di Heisenberg) o il Pauli (quadro di Schrödinger).
Tipo di restituzione
Aumenti
QiskitError – se il numero di Clifford dei qubit e dei qarg non coincide.
expand
expand(other)
Restituisce il prodotto tensoriale di ordine inverso con un altro Pauli.
Parametri
other (Pauli) – un oggetto Pauli.
Risultati
il prodotto tensoriale , dove
è il Pauli attuale e è l'altro Pauli.
Tipo di restituzione
input_dims
input_dims(qargs=None)
Restituisce una tupla di dimensioni di ingresso per i sottosistemi specificati.
insert
insert(qubits, value)
Inserire un Pauli in corrispondenza di un valore specifico del qubit.
Parametri
Risultati
il Pauli risultante con le voci inserite.
Tipo di restituzione
Aumenti
QiskitError – se i qubit di inserimento non sono validi.
inverse
output_dims
output_dims(qargs=None)
Restituisce una tupla di dimensioni di uscita per i sottosistemi specificati.
power
power(n)
Restituisce il risultato dell'applicazione di un operatore su se stesso per n volte.
Parametri
n (int) – il numero di volte che si compone con il sé ( n>0 ).
Risultati
l'operatore composto n volte.
Tipo di restituzione
Aumenti
QiskitError – se le dimensioni di ingresso e di uscita dell'operatore non sono uguali, oppure se la potenza non è un numero intero positivo.
reshape
reshape(input_dims=None, output_dims=None, num_qubits=None)
Restituisce una copia superficiale con le dimensioni dei sottosistemi di ingresso e di uscita rimodellate.
Parametri
- input_dims (None or tuple) – nuove dimensioni di input del sottosistema. Se Nessuno, le attenuazioni dell'input originale verranno mantenute. [Predefinito: Nessuno].
- output_dims (None or tuple) – nuove dimensioni di uscita del sottosistema. Se Nessuno, le gradazioni di output originali verranno mantenute. [Predefinito: Nessuno].
- num_qubits (None or int) – rimodella in un operatore N-qubit [Predefinito: Nessuno].
Risultati
restituisce self con le dimensioni di ingresso e di uscita rimodellate.
Tipo di restituzione
BaseOperator
Aumenti
QiskitError – se la somma delle dimensioni di ingresso o di uscita di tutti i sottosistemi non è costante.
set_truncation
classmethod set_truncation(val)
Imposta il numero massimo di caratteri Pauli da visualizzare prima del troncamento.
Parametri
val (int) – il numero di caratteri.
La troncatura sarà disabilitata se il valore di troncatura è impostato su 0.
tensor
tensor(other)
Restituisce il prodotto tensoriale con un altro Pauli.
Parametri
other (Pauli) – un oggetto Pauli.
Risultati
**il prodotto tensoriale , dove **
è il Pauli attuale e è l'altro Pauli.
Tipo di restituzione
Il prodotto tensoriale può essere ottenuto utilizzando l'operatore binario ^ . Quindi a.tensor(b) è equivalente a a ^ b.
to_instruction
to_label
to_label()
Converte un Pauli in un'etichetta di stringa.
La differenza tra to_label e to_label __str__() è che quest'ultimo tronca l'output quando il numero di qubit è elevato.
Risultati
l'etichetta della stringa di Pauli.
Tipo di restituzione
to_matrix
to_matrix(sparse=False)
Convertire in una matrice Numpy o in una matrice CSR rada.
Parametri
sparse (bool) – se True restituisce matrici CSR rade, altrimenti restituisce matrici Numpy dense (valore predefinito: False).
Risultati
La matrice di Pauli.
Tipo di restituzione