Informazioni quantistiche
qiskit.quantum_info
Operatori
Operator(dati[, input_dims, output_dims] ) | Classe dell'operatore di matrice |
Pauli( [dati] ) | Operatore di Pauli a N-qubit. |
Clifford(dati[, verifica, copia] ) | Un operatore unitario a N-qubit del gruppo di Clifford. |
ScalarOp( [dimensioni, coefficienti] ) | Classe dell'operatore di identità scalare. |
SparseObservable(dati, /[, num_qubit] ) | Un'osservabile su basi di Pauli che memorizza i suoi dati in un formato qubit-sparse. |
SparsePauliOp(dati[, coefficienti,...] ) | Operatore N-qubit sparse in una rappresentazione in base Pauli. |
PauliLindbladMap(dati, /[, num_qubit] ) | Una mappa di Pauli Lindblad memorizzata in un formato qubit-sparse. |
QubitSparsePauli(dati, /[, num_qubit] ) | Un operatore di Pauli senza fase memorizzato in un formato qubit-sparse. |
QubitSparsePauliList(dati, /[, num_qubit] ) | Un elenco di operatori di Pauli senza fase memorizzati in un formato qubit-sparse. |
PhasedQubitSparsePauli(dati, /[, num_qubit] ) | Un operatore di Pauli memorizzato in un formato qubit-sparse. |
PhasedQubitSparsePauliList(dati, /[, num_qubit] ) | Un elenco di operatori di Pauli con fasi memorizzate in un formato qubit-sparse. |
CNOTDihedral( [dati, num_qubit, convalida] ) | Un operatore N-qubit del gruppo CNOT-Diedrale. |
PauliList(dati) | Elenco degli operatori di Pauli a N-qubit. |
pauli_basis(num_qubit[, peso] ) | Restituisce la PauliList ordinata per la base di Pauli a n-qubit. |
get_clifford_gate_names() | Restituisce l'elenco dei nomi delle porte di Clifford. |
Stati
Statevector(dati[, dimensioni] ) | Classe Statevector |
DensityMatrix(dati[, dimensioni] ) | DensityMatrix classe |
StabilizerState(dati[, convalida] ) | StabilizerState classe. |
Canali
Choi(dati[, input_dims, output_dims] ) | Rappresentazione della matrice di Choi di un canale quantistico. |
SuperOp(dati[, input_dims, output_dims] ) | Rappresentazione del superoperatore di un canale quantistico. |
Kraus(dati[, input_dims, output_dims] ) | Rappresentazione di Kraus di un canale quantistico. |
Stinespring(dati[, input_dims, output_dims] ) | Rappresentazione di Stinespring di un canale quantistico. |
Chi(dati[, input_dims, output_dims] ) | Rappresentazione della base di Pauli della matrice Chi di un canale quantistico. |
PTM(dati[, input_dims, output_dims] ) | Rappresentazione della matrice di trasferimento di Pauli (PTM) di un canale quantistico. |
Misure
average_gate_fidelity
qiskit.quantum_info.average_gate_fidelity(channel, target=None, require_cp=True, require_tp=False)
Restituisce la fedeltà media del gate di un canale quantistico rumoroso.
La fedeltà media del gate è data da
dove è la dimensione process_fidelity() del canale quantistico di ingresso con un target unitario , e è la dimensione del canale.
Parametri
- channel (QuantumChannel or Operator) – canale quantistico rumoroso.
- target (Operator or None) – operatore unitario di destinazione. Se target è None, viene utilizzato l'operatore identità[. Impostazione predefinita: None].
- require_cp (bool) – controlla se i canali di ingresso e di destinazione sono completamente positivi e se l'avviso di log non-CP contiene autovalori negativi della matrice di Choi [Predefinito: Vero].
- require_tp (bool) – controlla se i canali di ingresso e di destinazione sono conservativi della traccia e se l'avviso di registro non TP contiene autovalori negativi della matrice parziale di Choi [Predefinito: Vero].
Risultati
La fedeltà media del gate .
Tipo di restituzione
Aumenti
QiskitError - se il canale e la destinazione non hanno le stesse dimensioni o hanno dimensioni di ingresso e di uscita diverse.
process_fidelity
qiskit.quantum_info.process_fidelity(channel, target=None, require_cp=True, require_tp=True)
Restituire la fedeltà di processo di un canale quantistico rumoroso.
La fedeltà di processo tra due canali quantistici è data da
dove è la state_fidelity(), è la matrice normalizzata Choi per il canale , e è la dimensione di ingresso di .
Quando il canale di destinazione è unitario, ciò equivale a
dove sono rispettivamente le SuperOp matrici relative al canale quantistico di ingresso e all'unitario di destinazione , mentre è la dimensione di ingresso del canale.
Parametri
- channel (Operator or QuantumChannel) – canale quantistico di input.
- target (Operator or QuantumChannel or None) – canale quantistico di destinazione. Se target è None, viene utilizzato l'operatore identità[. Impostazione predefinita: None].
- require_cp (bool) – controlla se i canali di ingresso e di destinazione sono completamente positivi e se l'avviso di log non-CP contiene autovalori negativi della matrice di Choi [Predefinito: Vero].
- require_tp (bool) – controlla se i canali di ingresso e di destinazione sono conservativi della traccia e se l'avviso di registro non TP contiene autovalori negativi della matrice parziale di Choi [Predefinito: Vero].
Risultati
La fedeltà del processo .
Tipo di restituzione
Aumenti
QiskitError - se il canale e la destinazione non hanno le stesse dimensioni.
gate_error
qiskit.quantum_info.gate_error(channel, target=None, require_cp=True, require_tp=False)
Restituisce l'errore di gate di un canale quantistico rumoroso.
L'errore del gate è dato dall'infedeltà media del gate
dove è il canale quantistico di ingresso average_gate_fidelity() del canale quantistico di ingresso con un target unitario .
Parametri
- channel (QuantumChannel) – canale quantistico rumoroso.
- target (Operator or None) – operatore unitario di destinazione. Se target è None, viene utilizzato l'operatore identità[. Impostazione predefinita: None].
- require_cp (bool) – controlla se i canali di ingresso e di destinazione sono completamente positivi e se l'avviso di log non-CP contiene autovalori negativi della matrice di Choi [Predefinito: Vero].
- require_tp (bool) – controlla se i canali di ingresso e di destinazione sono conservativi della traccia e se l'avviso di registro non TP contiene autovalori negativi della matrice parziale di Choi [Predefinito: Vero].
Risultati
L'errore medio del gate .
Tipo di restituzione
Aumenti
QiskitError - se il canale e la destinazione non hanno le stesse dimensioni o hanno dimensioni di ingresso e di uscita diverse.
diamond_norm
qiskit.quantum_info.diamond_norm(choi, solver='SCS', **kwargs)
Restituisce la norma di diamante dell'oggetto canale quantistico in ingresso.
Questa funzione calcola la traccia-norma completamente vincolata (spesso chiamata diamond-norm) dell'oggetto canale quantistico in ingresso, utilizzando il programma semidefinito di riferimento [1].
Parametri
- choi (Choi or QuantumChannel) – un oggetto canale quantistico o un array di matrici di Choi.
- solver (str) – Il solutore da utilizzare.
- kwargs - argomenti opzionali da passare al solutore CVXPY.
Risultati
La norma di traccia completamente vincolata .
Tipo di restituzione
Aumenti
QiskitError - se il pacchetto CVXPY non può essere trovato.
Ulteriori informazioni:
L'ingresso di questa funzione non è tipicamente un canale quantistico CPTP, ma piuttosto la differenza tra due canali quantistici dove .
Riferimenti:
J. Watrous. "Simpler semidefinite programs for completely bounded norms", arXiv:1207.5726 [quant-ph] (2012).
Questa funzione richiede l'installazione del pacchetto opzionale CVXPY. Eventuali kwarg aggiuntivi saranno passati alla funzione cvxpy.solve . Per informazioni sui solutori SDP disponibili, consultare la documentazione di CVXPY.
state_fidelity
qiskit.quantum_info.state_fidelity(state1, state2, validate=True)
Restituisce la fedeltà di stato tra due stati quantistici.
La fedeltà di stato per gli stati di input della matrice di densità è data da
Se uno degli stati è uno stato puro questo si semplifica a , dove .
Parametri
- state1 (Statevector orDensityMatrix) – il primo stato quantistico.
- state2 (Statevector orDensityMatrix) – il secondo stato quantistico.
- validate (bool) – controlla se gli ingressi sono stati quantici validi [Predefinito: Vero]
Risultati
La fedeltà dello Stato .
Tipo di restituzione
Aumenti
QiskitError - se validate=True e gli ingressi sono stati quantici non validi.
purity
qiskit.quantum_info.purity(state, validate=True)
Calcolare la purezza di uno stato quantistico.
La purezza di una matrice di densità è
Parametri
- state (Statevector orDensityMatrix) – uno stato quantistico.
- validate (bool) – controlla se lo stato dell'ingresso è valido [Predefinito: Vero]
Risultati
la purezza .
Tipo di restituzione
Aumenti
QiskitError - se l'input non è uno stato quantico valido.
concurrence
qiskit.quantum_info.concurrence(state)
Calcolare la concomitanza di uno stato quantistico.
La concorrenza di un bipartito Statevector è data da
dove è lo stato ridotto ottenuto applicando la partial_trace() allo stato di ingresso.
Per le matrici di densità la concomitanza è definita solo per gli stati a 2 qubit, ed è data da:
dove sono gli autovalori ordinati della matrice .
Parametri
state (Statevector orDensityMatrix) – uno stato quantistico a 2 qubit.
Risultati
Il consenso.
Tipo di restituzione
Aumenti
- QiskitError - se lo stato di ingresso non è valido QuantumState.
- QiskitError - se l'input non è un bipartito QuantumState.
- QiskitError - se la matrice di densità in ingresso non è uno stato a 2 qubit.
entropy
qiskit.quantum_info.entropy(state, base=2)
Calcolare l'entropia di von-Neumann di uno stato quantistico.
L'entropia è data da
Parametri
- state (Statevector orDensityMatrix) – uno stato quantistico.
- base (int) – la base del logaritmo [Predefinito: 2].
Risultati
L'entropia di von-Neumann S(rho).
Tipo di restituzione
Aumenti
QiskitError - se lo stato di ingresso non è valido QuantumState.
entanglement_of_formation
qiskit.quantum_info.entanglement_of_formation(state)
Calcolare l'entanglement della formazione di uno stato quantistico.
Lo stato quantistico in ingresso deve essere un vettore di stato bipartito o una matrice di densità a 2 qubit.
Parametri
state (Statevector orDensityMatrix) – uno stato quantistico a 2 qubit.
Risultati
L'entanglement della formazione.
Tipo di restituzione
Aumenti
- QiskitError - se lo stato di ingresso non è valido QuantumState.
- QiskitError - se l'input non è un bipartito QuantumState.
- QiskitError - se la matrice di densità in ingresso non è uno stato a 2 qubit.
mutual_information
qiskit.quantum_info.mutual_information(state, base=2)
Calcolare l'informazione reciproca di uno stato bipartito.
La mutua informazione è data da:
dove , sono le matrici di densità ridotta dello stato bipartito .
Parametri
- state (Statevector orDensityMatrix) – uno stato bipartito.
- base (int) – la base del logaritmo [Predefinito: 2].
Risultati
L'informazione reciproca .
Tipo di restituzione
Aumenti
- QiskitError - se lo stato di ingresso non è valido QuantumState.
- QiskitError - se l'input non è un bipartito QuantumState.
Funzioni di utilità
Quaternion(dati) | Una classe che rappresenta un quaternione. |
partial_trace
qiskit.quantum_info.partial_trace(state, qargs)
Restituire la matrice di densità ridotta tracciando una parte dello stato quantico.
Se si esegue il tracciamento di tutti i sottosistemi, questa operazione restituisce lo trace() stato di ingresso.
Parametri
- state (Statevector orDensityMatrix) – lo stato di ingresso.
- qargs (list) – I sottosistemi da tracciare.
Risultati
La matrice di densità ridotta.
Tipo di restituzione
Aumenti
QiskitError - se lo stato dell'ingresso non è valido.
schmidt_decomposition
qiskit.quantum_info.schmidt_decomposition(state, qargs)
Restituisce la decomposizione di Schmidt di uno stato quantistico puro.
Per uno stato bipartito arbitrario:
la sua Decomposizione di Schmidt è data dalla somma a singolo indice su k:
dove e sono un insieme ortonormale di vettori nei rispettivi spazi e , e i coefficienti di Schmidt sono valori reali positivi.
Parametri
- state (Statevector orDensityMatrix) – lo stato di ingresso.
- qargs (list) – l'elenco delle posizioni dello stato di ingresso corrispondenti al sottosistema .
Risultati
elenco di tuple (s, u, v), dove s (float) sono i coefficienti di Schmidt , e u (Statevector), v (Statevector) sono i vettori di Schmidt , , rispettivamente.
Tipo di restituzione
Aumenti
- QiskitError - se Input qargs non è un elenco di posizioni dello stato Input.
- QiskitError - se Input qargs non è un sottoinsieme corretto di Input state.
In Qiskit, i qubit sono ordinati utilizzando la notazione little-endian, con i qubit meno significativi che hanno indici più piccoli. Ad esempio, un sistema a quattro qubit è rappresentato come . Utilizzando questa convenzione, impostando qargs=[0] si partizionerà lo stato come . Inoltre, i qubit saranno organizzati in questa notazione indipendentemente dall'ordine in cui vengono passati. Ad esempio, passando qargs=[1,2] o qargs=[2,1] si ottiene il partizionamento dello stato come .
shannon_entropy
qiskit.quantum_info.shannon_entropy(pvec, base=2)
Calcolare l'entropia di Shannon di un vettore di probabilità.
L'entropia di Shannon di un vettore di probabilità è definita come
dove è la base log e (default 2), e .
Parametri
- pvec (array_like) – un vettore di probabilità.
- base (int) – la base del logaritmo [Predefinito: 2].
Risultati
L'entropia di Shannon H(pvec).
Tipo di restituzione
commutator
qiskit.quantum_info.commutator(a, b)
Calcolare il commutatore di a e b.
Parametri
- a (OperatorTypeT) – Operatore a.
- b (OperatorTypeT) – Operatore b.
Risultati
Il commutatore
Tipo di restituzione
OperatorTypeT
anti_commutator
qiskit.quantum_info.anti_commutator(a, b)
Calcolare l'anticommutatore di a e b.
Parametri
- a (OperatorTypeT) – Operatore a.
- b (OperatorTypeT) – Operatore b.
Risultati
L'anticommutatore
Tipo di restituzione
OperatorTypeT
double_commutator
qiskit.quantum_info.double_commutator(a, b, c, *, commutator=True)
Calcolo del doppio commutatore simmetrico di a, b e c.
Si veda anche l'equazione ( 13.6.18 ) in [1].
Se il commutatore è Vero, restituisce
Se il commutatore è False, restituisce
Parametri
- a (OperatorTypeT) – Operatore a.
- b (OperatorTypeT) – Operatore b.
- c (OperatorTypeT) – Operatore c.
- commutator (bool) – Se
Truecalcolare il doppio commutatore, seFalseil doppio anticommutatore.
Risultati
Il doppio commutatore
Tipo di restituzione
OperatorTypeT
Riferimenti
[1] : R. McWeeny.
Metodi di meccanica quantistica molecolare. seconda edizione, Academic Press, 1992. ISBN 0-12-486552-6.
Casuale
random_statevector
qiskit.quantum_info.random_statevector(dims, seed=None)
Genera un vettore di stato casuale.
Il vettore di stato è campionato dalla distribuzione uniforme. È la misura indotta dalla misura di Haar sulle matrici unitarie.
Parametri
- dims (int ortuple) – le dimensioni dello Stato.
- seed (int or np.random.Generator) – Opzionale. Impostare un seme o un generatore fisso per l'RNG.
Risultati
il vettore di stato casuale.
Tipo di restituzione
Riferimenti:
K. Zyczkowski e H. Sommers (2001), "Induced measures in the space of mixed quantum states", J. Fisico. R: Matematica. Gen. 34 7111.
random_density_matrix
qiskit.quantum_info.random_density_matrix(dims, rank=None, method='Hilbert-Schmidt', seed=None)
Genera una matrice di densità casuale.
Parametri
- dims (int ortuple) – le dimensioni di DensityMatrix.
- rank (int or None) – il rango della matrice di densità. Il valore predefinito è "full-rank".
- method (string) – Opzionale. Il metodo da utilizzare. hilbert-Schmidt": (predefinito) campione dalla metrica Hilbert-Schmidt. bures": campione della metrica di Bures.
- seed (int or np.random.Generator) – Opzionale. Impostare un seme o un generatore fisso per l'RNG.
Risultati
la matrice di densità casuale.
Tipo di restituzione
Aumenti
QiskitError - se il metodo non è valido.
random_unitary
qiskit.quantum_info.random_unitary(dims, seed=None)
Restituisce un Operatore unitario casuale.
L'operatore è campionato dalla misura unitaria di Haar.
Parametri
- dims (int ortuple) – le dimensioni di ingresso dell'Operatore.
- seed (int or np.random.Generator) – Opzionale. Impostare un seme o un generatore fisso per l'RNG.
Risultati
un operatore unitario.
Tipo di restituzione
random_hermitian
qiskit.quantum_info.random_hermitian(dims, traceless=False, seed=None)
Restituisce un Operatore ermetico casuale.
L'operatore è campionato dall'insieme unitario gaussiano.
Parametri
- dims (int ortuple) – la dimensione di ingresso dell'Operatore.
- traceless (bool) – Opzionale. Se vero, sottrae le voci diagonali per restituire un operatore hermitiano senza tracce (predefinito: falso).
- seed (int or np.random.Generator) – Opzionale. Impostare un seme o un generatore fisso per l'RNG.
Risultati
un operatore hermitiano.
Tipo di restituzione
random_pauli
qiskit.quantum_info.random_pauli(num_qubits, group_phase=False, seed=None)
Restituisce un valore casuale Pauli.
Parametri
- num_qubits (int) – Il numero di qubit.
- group_phase (bool) – Facoltativo. Se si genera
Trueuna fase casuale. In caso contrario, la fase verrà impostata in modo tale che il coefficiente di Pauli sia pari a +1 (impostazione predefinita:False). - seed (int |Generator | None) – Facoltativo. Imposta un seme o un generatore fisso per l'RNG.
Risultati
Un Pauli a caso.
Tipo di restituzione
random_clifford
qiskit.quantum_info.random_clifford(num_qubits, seed=None)
Restituisce un operatore Clifford casuale.
La Clifford viene campionata secondo il metodo del riferimento [1].
Parametri
- num_qubits (int) – Il numero di qubit per l'operatore di Clifford.
- seed (int |Generator | None) – Facoltativo. Imposta un seme o un generatore fisso per l'RNG.
Risultati
Un operatore di Clifford casuale.
Tipo di restituzione
Riferimenti:
[1] S. Bravyi e D. Maslov (2020). I circuiti privi di Hadamard mettono in luce la struttura del gruppo di Clifford. arXiv:2003.09412
random_quantum_channel
qiskit.quantum_info.random_quantum_channel(input_dims=None, output_dims=None, rank=None, seed=None)
Restituisce un canale quantistico CPTP casuale.
In questo modo si costruisce l'operatore di Stinespring per il canale quantistico campionando un'isometria casuale dalla misura unitaria di Haar.
Parametri
- input_dims (int ortuple) – la dimensione di ingresso del canale.
- output_dims (int ortuple) – la dimensione di uscita del canale.
- rank (int) – Opzionale. Il rango della matrice Choi del canale quantistico.
- seed (int or np.random.Generator) – Opzionale. Impostare un seme o un generatore fisso per l'RNG.
Risultati
un operatore di canale quantistico.
Tipo di restituzione
Aumenti
QiskitError - se il rango o le dimensioni non sono validi.
random_cnotdihedral
qiskit.quantum_info.random_cnotdihedral(num_qubits, seed=None)
Restituisce un elemento CNOTDiedrale casuale.
Parametri
- num_qubits (int) – il numero di qubit per l'oggetto CNOTDihedral.
- seed (int or RandomState) – Opzionale. Impostare un seme o un generatore fisso per l'RNG.
Risultati
un elemento CNOTDiedrale casuale.
Tipo di restituzione
random_pauli_list
qiskit.quantum_info.random_pauli_list(num_qubits, size=1, seed=None, phase=True)
Restituisce un valore casuale PauliList.
Parametri
- num_qubits (int) – Il numero di qubit.
- size (int) – Opzionale. La lunghezza dell'elenco Pauli (predefinito: 1).
- seed (int |Generator | None) – Facoltativo. Imposta un seme o un generatore fisso per l'RNG.
- phase (bool) – Facoltativo. Se le
Truefasi di Pauli sono casuali, altrimenti le fasi sono fissate a 0 (impostazione predefinita:True).
Risultati
Una cosa a caso PauliList.
Tipo di restituzione
Analisi
hellinger_distance
qiskit.quantum_info.hellinger_distance(dist_p, dist_q)
Calcola la distanza di Hellinger tra due distribuzioni di conteggi.
Parametri
Risultati
Distanza
Tipo di restituzione
Riferimenti
hellinger_fidelity
qiskit.quantum_info.hellinger_fidelity(dist_p, dist_q)
Calcola la fedeltà di Hellinger tra due distribuzioni di conteggi.
La fedeltà è definita come dove H è la distanza di Hellinger. Questo valore è limitato nell'intervallo [0, 1].
Questo equivale alla fedeltà classica standard che a sua volta è uguale alla fedeltà dello stato quantistico per matrici di densità diagonali.
Parametri
Risultati
Fiducia
Tipo di restituzione
Esempio
from qiskit import QuantumCircuit
from qiskit.quantum_info.analysis import hellinger_fidelity
from qiskit.providers.basic_provider import BasicSimulator
qc = QuantumCircuit(5, 5)
qc.h(2)
qc.cx(2, 1)
qc.cx(2, 3)
qc.cx(3, 4)
qc.cx(1, 0)
qc.measure(range(5), range(5))
sim = BasicSimulator()
res1 = sim.run(qc).result()
res2 = sim.run(qc).result()
hellinger_fidelity(res1.get_counts(), res2.get_counts())Riferimenti
Fedeltà quantistica @ wikipedia Distanza di Hellinger @ wikipedia
Z2Symmetries(simmetrie, sq_paulis, sq_list) | Il convertitore di simmetria $Z_2$ identifica le simmetrie dall'hamiltoniana del problema e le utilizza per fornire una rappresentazione affusolata - più efficiente - degli operatori come Paulis per questo problema. |