Skip to main content
IBM Quantum Platform

Statevector

class qiskit.quantum_info.Statevector(data, dims=None)

GitHub

Basi: QuantumState, TolerancesMixin

Classe Statevector

Inizializza un oggetto statevector.

Parametri

  • data (np.ndarray | list |Statevector |Operator |QuantumCircuit |circuit.instruction.Instruction) – Dati a partire dai quali è possibile costruire il vettore di stato. Può trattarsi di un vettore complesso, di un altro vettore di stato, di un Operator con una sola colonna oppure di un QuantumCircuit o di un Instruction. Se i dati rappresentano un circuito o un'istruzione, il vettore di stato viene costruito partendo dal presupposto che tutti i qubit siano inizializzati allo stato zero.
  • dims (int |tuple |list | None) – La dimensione del sottosistema dello stato (vedere informazioni aggiuntive).

Aumenti

QiskitError – se i dati inseriti non sono validi.

Ulteriori informazioni:

Il kwarg dims può essere Nessuno, un intero o un iterabile di interi.

  • Iterable - le dimensioni del sottosistema sono i valori dell'elenco e il numero totale di sottosistemi è dato dalla lunghezza dell'elenco.
  • Int oppure None – la lunghezza del vettore di input determina la dimensione totale dello stato. Se si tratta di una potenza di due, lo stato verrà inizializzato come uno stato a N qubit. Se non si tratta di una potenza di due, lo stato avrà un unico sottosistema d-dimensionale.

Attributi

atol

Valore predefinito: 1e-08

data

Dati di ritorno.

dim

Restituisce la dimensione totale dello stato.

num_qubits

Restituisce il numero di qubit se si tratta di uno stato a N qubit o altrimenti None.

rtol

Valore predefinito: 1e-05

settings

Impostazioni di ritorno.


Metodi

conjugate

conjugate()

GitHub

Restituisce il coniugato dell'operatore.

Tipo di restituzione

Settore di stato

copy

copy()

GitHub

Eseguire una copia dell'operatore corrente.

dims

dims(qargs=None)

GitHub

Restituisce una tupla di dimensioni di ingresso per i sottosistemi specificati.

draw

draw(output=None, **drawer_args)

GitHub

Restituisce una visualizzazione del vettore di stato.

ripr: ASCII TextMatrix dello Stato __repr__.

testo : ASCII TextMatrix che può essere stampato nella console.

latex : Un oggetto IPython Latex da visualizzare in Jupyter Notebook.

latex_source : Sorgente ASCII grezzo e non compilato per generare l'array usando LaTeX.

qsphere : Matplotlib figura, rendering del vettore di stato usando plot_state_qsphere().

hinton : Matplotlib figura, rendering del vettore di stato usando plot_state_hinton().

bloch : Matplotlib figura, rendering del vettore di stato usando plot_bloch_multivector().

città : Matplotlib figura, rendering del vettore di stato usando plot\state_city().

paulivec : Matplotlib figura, rendering del vettore di stato usando plot_state_paulivec().

Parametri

  • output (str) – Selezionare il metodo di output da utilizzare per disegnare lo stato. Le scelte valide sono repr, text, latex, latex_source, qsphere, hinton, bloch, city o paulivec. L'impostazione predefinita è repr. Il valore predefinito può essere modificato aggiungendo la riga state_drawer = <default> a ~/.qiskit/settings.conf sotto [default].
  • drawer_args - Argomenti da passare direttamente alla funzione o al costruttore di disegno pertinente ( TextMatrix( ), array_to_latex(), plot\state_qsphere(), plot\state_hinton() o plot_bloch\multivector()). Per la documentazione della funzione in questione, consultare la relativa funzione all'indirizzo qiskit.visualization.

Risultati

matplotlib.Figure o str o TextMatrix o IPython.display.Latex: Disegno del vettore di stato.

Aumenti

ValueError - quando viene selezionato un metodo di uscita non valido.

Esempi

Traccia uno degli stati di Bell

from numpy import sqrt
from qiskit.quantum_info import Statevector
sv=Statevector([1/sqrt(2), 0, 0, -1/sqrt(2)])
sv.draw(output='hinton')
Output del codice precedente.

equiv

equiv(other, rtol=None, atol=None)

GitHub

Restituisce True se l'altro è equivalente come vettore di stato fino alla fase globale.

Nota

Se altro non è uno Statevector, ma può essere usato per inizializzare un oggetto Statevector, controllerà che Statevector(altro) sia equivalente allo Statevector corrente fino alla fase globale.

Parametri

  • other (Statevector) – un oggetto da cui si può costruire un Statevector .
  • rtol (float) – valore di tolleranza relativa per il confronto.
  • atol (float) – valore di tolleranza assoluta per il confronto.

Risultati

Vero se i vettori di stato sono equivalenti fino alla fase globale.

Tipo di restituzione

bool

evolve

evolve(other, qargs=None)

GitHub

Evolvere uno stato quantico tramite l'operatore.

Parametri

Risultati

lo stato quantico di uscita.

Tipo di restituzione

Statevector

Aumenti

QiskitError – se la dimensione dell'operatore non corrisponde alle dimensioni specificate del sottosistema Statevector.

expand

expand(other)

GitHub

Restituisce il prodotto tensoriale dello stato altro ⊗ self.

Parametri

other (Statevector) – un oggetto di stato quantistico.

Risultati

il prodotto tensoriale di altri stati ⊗ self.

Tipo di restituzione

Statevector

Aumenti

QiskitError – se “altro” non è uno stato quantistico.

expectation_value

expectation_value(oper, qargs=None)

GitHub

Calcolo del valore di aspettativa di un operatore.

Parametri

  • oper (Operator) – un operatore di cui valutare l'expval.
  • qargs (None or list) – sottosistemi su cui applicare l'operatore.

Risultati

il valore di aspettativa.

Tipo di restituzione

complesso

from_circuit

classmethod from_circuit(circuit, ignore_set_layout=False)

GitHub

Crea uno Statevector da un circuito quantistico.

Parametri

  • circuit (QuantumCircuit) – Un circuito quantistico
  • ignore_set_layout (bool) – Quando è impostato su True, se l'input circuit ha un layout impostato, questo verrà ignorato. Il valore predefinito è False.

Risultati

Il vettore di stato ottenuto applicando il circuito allo stato di ingresso tutto zero.

Tipo di restituzione

Settore di stato

Esempio

Creare un vettore di stato da un circuito transpilato:

from qiskit import QuantumCircuit, transpile
from qiskit.quantum_info import Statevector
from qiskit.providers.basic_provider import BasicSimulator

qc = QuantumCircuit(3)
qc.h(0)
qc.cx(0, 1)
qc.swap(1, 2)

backend = BasicSimulator()
transpiled1 = transpile(qc, backend, optimization_level=0)
transpiled2 = transpile(qc, backend, optimization_level=2)

# Get statevectors accounting for layout changes
sv1 = Statevector.from_circuit(transpiled1)
sv2 = Statevector.from_circuit(transpiled2)

# These will be equivalent up to global phase
print(sv1.equiv(sv2))  # True

from_instruction

classmethod from_instruction(instruction)

GitHub

Restituisce il vettore di stato di uscita di un'istruzione.

Lo statevector viene inizializzato nello stato 0,,0|{0,\ldots,0}\rangle dello stesso numero di qubit dell'istruzione o del circuito di ingresso, evoluto dall'istruzione di ingresso, e lo statevector di uscita viene restituito.

Parametri

instruction (qiskit.circuit.Instruction orQuantumCircuit) – istruzione o circuito

Risultati

Il vettore di stato finale.

Tipo di restituzione

Statevector

Aumenti

QiskitError – se l'istruzione contiene comandi non validi per la simulazione con vettore di stato.

from_int

static from_int(i, dims)

GitHub

Restituisce un vettore di stato a base computazionale.

Parametri

  • i (int) – l'elemento di stato base.
  • dims (int ortuple orlist) – Le dimensioni del sottosistema del vettore di stato (vedere informazioni aggiuntive).

Risultati

Lo stato di base computazionale i|i\rangle.

Tipo di restituzione

Statevector

Ulteriori informazioni:

Il kwarg di dims può essere un intero o un iterabile di interi.

  • Iterable - le dimensioni del sottosistema sono i valori dell'elenco e il numero totale di sottosistemi è dato dalla lunghezza dell'elenco.
  • Int - il numero intero specifica la dimensione totale dello stato. Se è una potenza di due, lo stato sarà inizializzato come uno stato a N-qubit. Se non è una potenza di due, lo stato avrà un singolo sottosistema d-dimensionale.

from_label

classmethod from_label(label)

GitHub

Restituisce un prodotto tensoriale di autostati di Pauli X,Y,Z.

Etichetta
Statevector
"0"[1,0][1, 0]
"1"[0,1][0, 1]
"+"[1/2,1/2][1 / \sqrt{2}, 1 / \sqrt{2}]
"-"[1/2,1/2][1 / \sqrt{2}, -1 / \sqrt{2}]
"r"[1/2,i/2][1 / \sqrt{2}, i / \sqrt{2}]
"l"[1/2,i/2][1 / \sqrt{2}, -i / \sqrt{2}]

Parametri

label (string) – un'etichetta ket per una stringa di stati propri (vedere la tabella per i valori consentiti).

Risultati

Il vettore di stato della base a N qubit.

Tipo di restituzione

Statevector

Aumenti

QiskitError – se l'etichetta contiene caratteri non validi oppure se la lunghezza dell'etichetta è superiore a un numero di qubit specificato esplicitamente (num_qubits).

inner

inner(other)

GitHub

Restituisce il prodotto interno di sé e dell'altro come selfother\langle self| other \rangle.

Parametri

other (Statevector) – un oggetto di stato quantistico.

Risultati

il prodotto interno di sé e dell'altro, selfother\langle self| other \rangle.

Tipo di restituzione

np.complex128

Aumenti

QiskitError – se “altro” non è uno stato quantistico o ha una dimensione diversa.

is_valid

is_valid(atol=None, rtol=None)

GitHub

Restituisce True se un vettore di stati ha norma 1.

Parametri

Tipo di restituzione

bool

measure

measure(qargs=None)

GitHub

Misurare i sottosistemi e restituire i risultati e lo stato post-misura.

Si noti che questa funzione utilizza il generatore di numeri casuali interno a QuantumStates per il campionamento del risultato della misurazione. Il seme RNG può essere impostato con il metodo seed() metodo.

Parametri

qargs (list or None) – sottosistemi per i quali campionare le misure, se Nessuno campiona le misure di tutti i sottosistemi (predefinito: Nessuno).

Risultati

la coppia (outcome, state) dove outcome è la coppia

e state è lo stato post-misurazione collassato per l'esito corrispondente.

Tipo di restituzione

tupla

probabilities

probabilities(qargs=None, decimals=None)

GitHub

Restituisce il vettore della probabilità di misurazione del sottosistema.

Le probabilità di misurazione sono rispetto alla misurazione nella base di calcolo (diagonale).

Parametri

  • qargs (None or list) – sottosistemi per i quali restituire le probabilità, se Nessuno restituisce tutte le probabilità per tutti i sottosistemi (predefinito: Nessuno).
  • decimals (None or int) – il numero di cifre decimali da arrotondare. Se Nessuno, non viene effettuato alcun arrotondamento (valore predefinito: Nessuno).

Risultati

L'array di vettori Numpy delle probabilità.

Tipo di restituzione

np.array

Esempi

Si consideri uno stato prodotto a 2 qubit ψ=+0|\psi\rangle=|+\rangle\otimes|0\rangle.

from qiskit.quantum_info import Statevector

psi = Statevector.from_label('+0')

# Probabilities for measuring both qubits
probs = psi.probabilities()
print('probs: {}'.format(probs))

# Probabilities for measuring only qubit-0
probs_qubit_0 = psi.probabilities([0])
print('Qubit-0 probs: {}'.format(probs_qubit_0))

# Probabilities for measuring only qubit-1
probs_qubit_1 = psi.probabilities([1])
print('Qubit-1 probs: {}'.format(probs_qubit_1))
probs: [0.5 0.  0.5 0. ]
Qubit-0 probs: [1. 0.]
Qubit-1 probs: [0.5 0.5]

Possiamo anche cambiare l'ordine dei qubit nell'elenco qargs per modificare la posizione del qubit nell'output delle probabilità

from qiskit.quantum_info import Statevector

psi = Statevector.from_label('+0')

# Probabilities for measuring both qubits
probs = psi.probabilities([0, 1])
print('probs: {}'.format(probs))

# Probabilities for measuring both qubits
# but swapping qubits 0 and 1 in output
probs_swapped = psi.probabilities([1, 0])
print('Swapped probs: {}'.format(probs_swapped))
probs: [0.5 0.  0.5 0. ]
Swapped probs: [0.5 0.5 0.  0. ]

probabilities_dict

probabilities_dict(qargs=None, decimals=None)

GitHub

Restituisce il dizionario delle probabilità di misurazione del sottosistema.

Le probabilità di misurazione sono rispetto alla misurazione nella base di calcolo (diagonale).

Questa rappresentazione del dizionario utilizza una notazione simile a Ket, in cui le chiavi del dizionario sono stringhe di qudit per i vettori base del sottosistema. Se un sottosistema ha una dimensione superiore a 10, si inseriscono dei delimitatori di virgola tra i numeri interi per distinguere i sottosistemi.

Parametri

  • qargs (None or list) – sottosistemi per i quali restituire le probabilità, se Nessuno restituisce tutte le probabilità per tutti i sottosistemi (predefinito: Nessuno).
  • decimals (None or int) – il numero di cifre decimali da arrotondare. Se Nessuno, non viene effettuato alcun arrotondamento (valore predefinito: Nessuno).

Risultati

Le probabilità di misura nella forma dict (ket).

Tipo di restituzione

dict

purity

purity()

GitHub

Restituisce la purezza dello stato quantico.

Tipo di restituzione

float64

reset

reset(qargs=None)

GitHub

Ripristino dello stato o dei sottosistemi allo stato 0.

Parametri

qargs (list or None) – se Nessuno, tutti i sottosistemi saranno ripristinati allo stato 0 (predefinito: Nessuno).

Risultati

lo stato di reset.

Tipo di restituzione

Statevector

Ulteriori informazioni:

Se tutti i sottosistemi vengono resettati, questa operazione ripristinerà lo stato di base su tutti i sottosistemi. Se vengono inizializzati solo alcuni sottosistemi, questa funzione effettuerà una misurazione su tali sottosistemi e li farà evolvere in modo che gli stati collassati post-misurazione vengano ruotati verso lo stato zero. Il seme del generatore di numeri casuali (RNG) per questo campionamento può essere impostato utilizzando il seed() metodo.

reverse_qargs

reverse_qargs()

GitHub

Restituisce un vettore di stati con l'ordinamento dei sottosistemi invertito.

Per uno stato prodotto tensoriale questo equivale a invertire l'ordine dei sottosistemi prodotto tensoriale. Per un vettore di stati ψ=ψn1...ψ0|\psi \rangle = |\psi_{n-1} \rangle \otimes ... \otimes |\psi_0 \rangle il vettore di stati restituito sarà ψ0...ψn1|\psi_{0} \rangle \otimes ... \otimes |\psi_{n-1} \rangle.

Risultati

il vettore di Stato con l'ordine dei sottosistemi invertito.

Tipo di restituzione

Statevector

sample_counts

sample_counts(shots, qargs=None)

GitHub

Campionare un insieme di risultati di misura dei qubit nella base computazionale.

Parametri

  • shots (int) – numero di campioni da generare.
  • qargs (None or list) – sottosistemi per i quali campionare le misure, se Nessuno campiona le misure di tutti i sottosistemi (predefinito: Nessuno).

Risultati

dizionario dei conteggi campionati.

Tipo di restituzione

Conteggi

Ulteriori informazioni:

Questa funzione campiona i risultati della misurazione utilizzando la misura probabilities() per lo stato corrente e i qarg. Non implementa effettivamente la misura, quindi lo stato corrente non viene modificato.

Il seme del generatore di numeri casuali utilizzato per il campionamento può essere impostato su un valore fisso utilizzando il metodo state seed().

sample_memory

sample_memory(shots, qargs=None)

GitHub

Campione di un elenco di risultati di misura dei qubit nella base computazionale.

Parametri

  • shots (int) – numero di campioni da generare.
  • qargs (None or list) – sottosistemi per i quali campionare le misure, se Nessuno campiona le misure di tutti i sottosistemi (predefinito: Nessuno).

Risultati

elenco dei conteggi campionati nell'ordine in cui sono stati campionati.

Tipo di restituzione

np.array

Ulteriori informazioni:

Questa funzione campiona i risultati della misurazione utilizzando la misura probabilities() per lo stato corrente e i qarg. Non implementa effettivamente la misura, quindi lo stato corrente non viene modificato.

Il seme del generatore di numeri casuali utilizzato per il campionamento può essere impostato su un valore fisso utilizzando il metodo state seed().

seed

seed(value=None)

GitHub

Impostare il seme per l'RNG a stati quantici.

tensor

tensor(other)

GitHub

Restituisce il prodotto tensoriale dello stato self ⊗ other.

Parametri

other (Statevector) – un oggetto di stato quantistico.

Risultati

l'operatore prodotto tensoriale self ⊗ other.

Tipo di restituzione

Statevector

Aumenti

QiskitError – se “altro” non è uno stato quantistico.

to_dict

to_dict(decimals=None)

GitHub

Converte il vettore di stato in forma di dizionario.

Questa rappresentazione del dizionario utilizza una notazione simile a Ket, in cui le chiavi del dizionario sono stringhe di qudit per i vettori base del sottosistema. Se un sottosistema ha una dimensione superiore a 10, si inseriscono dei delimitatori di virgola tra i numeri interi per distinguere i sottosistemi.

Parametri

decimals (None or int) – il numero di cifre decimali da arrotondare. Se Nessuno, non viene effettuato alcun arrotondamento (valore predefinito: Nessuno).

Risultati

la forma del dizionario del vettore Stato.

Tipo di restituzione

dict

Esempio

La forma ket di un vettore di stato a 2 equbit ψ=0|\psi\rangle = |-\rangle\otimes |0\rangle

from qiskit.quantum_info import Statevector

psi = Statevector.from_label('-0')
print(psi.to_dict())
{'00': (0.7071067811865475+0j), '10': (-0.7071067811865475+0j)}

Per i sottosistemi non-qubit l'intervallo di numeri interi può andare da 0 a 9. Ad esempio, in un sistema qutrit

import numpy as np
from qiskit.quantum_info import Statevector

vec = np.zeros(9)
vec[0] = 1 / np.sqrt(2)
vec[-1] = 1 / np.sqrt(2)
psi = Statevector(vec, dims=(3, 3))
print(psi.to_dict())
{'00': (0.7071067811865475+0j), '22': (0.7071067811865475+0j)}

Per le grandi dimensioni del sottosistema sono necessari dei delimitatori. L'esempio seguente riguarda un sistema a 20 dimensioni composto da un qubit e da un qudit a 10 dimensioni.

import numpy as np
from qiskit.quantum_info import Statevector

vec = np.zeros(2 * 10)
vec[0] = 1 / np.sqrt(2)
vec[-1] = 1 / np.sqrt(2)
psi = Statevector(vec, dims=(2, 10))
print(psi.to_dict())
{'00': (0.7071067811865475+0j), '91': (0.7071067811865475+0j)}

to_operator

to_operator()

GitHub

Convertire lo stato in un operatore del proiettore rank-1

Tipo di restituzione

Operatore

trace

trace()

GitHub

Restituisce la traccia dello stato quantico come matrice di densità.

Tipo di restituzione

float64

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