Skip to main content
IBM Quantum Platform

Vecteur d'état

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

GitHub

Bases : QuantumState, TolerancesMixin

Classe de vecteurs d'état

Initialise un objet de type vecteur d'état.

Paramètres

  • data (np.ndarray | list |Statevector |Operator |QuantumCircuit |circuit.instruction.Instruction) – Données à partir desquelles le vecteur d'état peut être construit. Il peut s'agir soit d'un vecteur complexe, soit d'un autre vecteur d'état, soit d'un vecteur Operator à une seule colonne, soit QuantumCircuit d'un vecteur, Instruction soit d'un vecteur. Si les données correspondent à un circuit ou à une instruction, le vecteur d'état est construit en supposant que tous les qubits sont initialisés à l'état zéro.
  • dims (int |tuple |list | None) – La dimension du sous-système de l'état (voir informations complémentaires).

Augmentations

QiskitError – si les données saisies ne sont pas valides.

Renseignements supplémentaires :

Le kwarg dims peut être None, un entier ou un itérable d'entiers.

  • Iterable - les dimensions du sous-système sont les valeurs de la liste, le nombre total de sous-systèmes étant donné par la longueur de la liste.
  • Int ou None – la longueur du vecteur d'entrée détermine la dimension totale de l'état. S'il s'agit d'une puissance de deux, l'état sera initialisé comme un état à N qubits. Si ce n'est pas une puissance de deux, l'état comportera un seul sous-système de dimension d.

Attributs

atol

Valeur par défaut : 1e-08

data

Données de retour.

dim

Retourner la dimension totale de l'état.

num_qubits

Renvoie le nombre de qubits s'il s'agit d'un état à N qubits ou Aucun dans le cas contraire.

rtol

Valeur par défaut : 1e-05

settings

Paramètres de retour.


Méthodes

conjugate

conjugate()

GitHub

Retourne le conjugué de l'opérateur.

Type de retour

Vecteur d'état

copy

copy()

GitHub

Faire une copie de l'opérateur actuel.

dims

dims(qargs=None)

GitHub

Retourne un ensemble de dimensions d'entrée pour les sous-systèmes spécifiés.

draw

draw(output=None, **drawer_args)

GitHub

Renvoie une visualisation du vecteur d'état.

repr : ASCII TextMatrix de l'État __repr__.

texte : ASCII TextMatrix qui peut être imprimé dans la console.

latex : Un objet IPython Latex à afficher dans les carnets Jupyter.

latex_source : Source ASCII brute, non compilée, pour générer un tableau à l'aide de LaTeX.

qsphere : Matplotlib figure, rendu du vecteur d'état en utilisant plot_state_qsphere().

hinton : Matplotlib figure, rendu du vecteur d'état en utilisant plot_state_hinton().

bloch : Matplotlib figure, rendu du vecteur d'état en utilisant plot_bloch_multivector().

city : Matplotlib figure, rendering of statevector using plot_state_city().

paulivec : Matplotlib figure, rendu du vecteur d'état en utilisant plot_state_paulivec().

Paramètres

  • output (str) – Sélectionnez la méthode de sortie à utiliser pour dessiner l'état. Les choix valables sont repr, text, latex, latex_source, qsphere, hinton, bloch, city ou paulivec. La valeur par défaut est repr. La valeur par défaut peut être modifiée en ajoutant la ligne state_drawer = <default> à ~/.qiskit/settings.conf sous [default].
  • drawer_args - Arguments à passer directement à la fonction de dessin ou au constructeur correspondant ( TextMatrix( ), array_to_latex(), plot_state_qsphere(), plot_state_hinton() ou plot_bloch_multivector()). Voir la fonction concernée sur qiskit.visualization pour la documentation de cette fonction.

Retours

matplotlib.Figure ou str ou TextMatrix ou IPython.display.Latex: Dessin du vecteur État.

Augmentations

ValueError - lorsqu'une méthode de sortie non valide est sélectionnée.

Exemples

Tracé de l'un des états de 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')
Sortie du code précédent.

equiv

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

GitHub

Retourne True si other est équivalent en tant que vecteur d'état jusqu'à la phase globale.

Remarque

Si other n'est pas un vecteur d'état, mais peut être utilisé pour initialiser un objet vecteur d'état, ceci vérifiera que Statevector(other) est équivalent au vecteur d'état actuel jusqu'à la phase globale.

Paramètres

  • other (Statevector) – un objet à partir duquel un site Statevector peut être construit.
  • rtol (float) – valeur de tolérance relative à des fins de comparaison.
  • atol (float) – valeur de tolérance absolue à des fins de comparaison.

Retours

Vrai si les vecteurs d'état sont équivalents jusqu'à la phase globale.

Type de retour

booléen

evolve

evolve(other, qargs=None)

GitHub

Faire évoluer un état quantique par l'opérateur.

Paramètres

Retours

l'état quantique de sortie.

Type de retour

Vecteur d'état

Augmentations

QiskitError – si la dimension de l'opérateur ne correspond pas aux dimensions spécifiées pour le sous-système Statevector.

expand

expand(other)

GitHub

Retourne le produit tensoriel état other ⊗ self.

Paramètres

other (Statevector) – un objet d'état quantique.

Retours

le produit tensoriel état autre ⊗ self.

Type de retour

Vecteur d'état

Augmentations

QiskitError – si « autre » n'est pas un état quantique.

expectation_value

expectation_value(oper, qargs=None)

GitHub

Calculer la valeur espérée d'un opérateur.

Paramètres

  • oper (Operator) – un opérateur pour évaluer l'expval de.
  • qargs (None or list) – les sous-systèmes sur lesquels appliquer l'opérateur.

Retours

la valeur attendue.

Type de retour

complexe

from_circuit

classmethod from_circuit(circuit, ignore_set_layout=False)

GitHub

Créer un vecteur d'état à partir d'un circuit quantique.

Paramètres

  • circuit (QuantumCircuit) – Un circuit quantique
  • ignore_set_layout (bool) – Lorsque cette option est activée True, si l'entrée circuit a une disposition définie, celle-ci sera ignorée. Valeur par défaut False:.

Retours

Le vecteur d'état obtenu en appliquant le circuit à l'état d'entrée tout à zéro.

Type de retour

Vecteur d'état

Exemple

Créer un vecteur d'état à partir d'un circuit transpilé :

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

Renvoie le vecteur d'état de sortie d'une instruction.

Le vecteur d'état est initialisé dans l'état 0,,0|{0,\ldots,0}\rangle du même nombre de qubits que l'instruction ou le circuit d'entrée, évolué par l'instruction d'entrée, et le vecteur d'état de sortie est renvoyé.

Paramètres

instruction (qiskit.circuit.Instruction orQuantumCircuit) – instruction ou circuit

Retours

Le vecteur d'état final.

Type de retour

Vecteur d'état

Augmentations

QiskitError – si l'instruction contient des instructions non valides pour la simulation du vecteur d'état.

from_int

static from_int(i, dims)

GitHub

Renvoie un vecteur d'état de la base de calcul.

Paramètres

  • i (int) – l'élément d'état de base.
  • dims (int ortuple orlist) – Les dimensions du sous-système du vecteur d'état (voir informations complémentaires).

Retours

L'état de base de calcul i|i\rangle.

Type de retour

Vecteur d'état

Renseignements supplémentaires :

Le kwarg dims peut être un entier ou un itérable d'entiers.

  • Iterable - les dimensions du sous-système sont les valeurs de la liste, le nombre total de sous-systèmes étant donné par la longueur de la liste.
  • Int - l'entier spécifie la dimension totale de l'état. S'il s'agit d'une puissance de deux, l'état sera initialisé comme un état à N qubits. S'il ne s'agit pas d'une puissance de deux, l'État aura un seul sous-système d-dimensionnel.

from_label

classmethod from_label(label)

GitHub

Retourne un produit tensoriel des états propres de Pauli X,Y,Z.

Libellé
Vecteur d'état
"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}]

Paramètres

label (string) – une étiquette de chaîne de ket d'état propre (voir le tableau pour les valeurs autorisées).

Retours

Le vecteur d'état de la base à N qubits.

Type de retour

Vecteur d'état

Augmentations

QiskitError – si l'étiquette contient des caractères non valides, ou si la longueur de l'étiquette dépasse le nombre de qubits explicitement spécifié num_qubits.

inner

inner(other)

GitHub

Renvoyer le produit intérieur de soi et de l'autre sous la forme selfother\langle self| other \rangle.

Paramètres

other (Statevector) – un objet d'état quantique.

Retours

le produit intérieur du soi et de l'autre, selfother\langle self| other \rangle.

Type de retour

np.complex128

Augmentations

QiskitError – si « autre » ne désigne pas un état quantique ou si sa dimension est différente.

is_valid

is_valid(atol=None, rtol=None)

GitHub

Retourne True si un vecteur d'état a une norme 1.

Paramètres

Type de retour

booléen

measure

measure(qargs=None)

GitHub

Mesurer les sous-systèmes et renvoyer le résultat et l'état post-mesure.

Notez que cette fonction utilise le générateur de nombres aléatoires interne de QuantumStates pour l'échantillonnage du résultat de la mesure. La graine RNG peut être définie à l'aide de la méthode seed() méthode.

Paramètres

qargs (list or None) – sous-systèmes pour lesquels les mesures doivent être échantillonnées; si aucun, les mesures de tous les sous-systèmes doivent être échantillonnées (valeur par défaut : aucun).

Retours

la paire (outcome, state)outcome est le

l'étiquette de la chaîne de caractères du résultat de la mesure, et state l'état post-mesure effondré pour le résultat correspondant.

Type de retour

bloc de données

probabilities

probabilities(qargs=None, decimals=None)

GitHub

Retourne le vecteur de probabilité de mesure du sous-système.

Les probabilités de mesure se rapportent à la mesure dans la base de calcul (diagonale).

Paramètres

  • qargs (None or list) – sous-systèmes pour lesquels les probabilités doivent être renvoyées, si aucun, elles doivent être renvoyées pour tous les sous-systèmes (par défaut : aucun).
  • decimals (None or int) – le nombre de décimales à arrondir. Si elle est nulle, aucun arrondi n'est effectué (par défaut : aucun).

Retours

Le tableau de vecteurs Numpy des probabilités.

Type de retour

np.array

Exemples

Considérons un état produit de 2 qubits ψ=+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]

Nous pouvons également permuter l'ordre des qubits dans la liste qargs pour modifier la position du qubit dans la sortie des probabilités

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

Retourne le dictionnaire des probabilités de mesure du sous-système.

Les probabilités de mesure se rapportent à la mesure dans la base de calcul (diagonale).

Cette représentation du dictionnaire utilise une notation de type Ket où les clés du dictionnaire sont des chaînes de caractères pour les vecteurs de base du sous-système. Si un sous-système a une dimension supérieure à 10, des virgules sont insérées entre les nombres entiers afin de pouvoir distinguer les sous-systèmes.

Paramètres

  • qargs (None or list) – sous-systèmes pour lesquels les probabilités doivent être renvoyées, si aucun, elles doivent être renvoyées pour tous les sous-systèmes (par défaut : aucun).
  • decimals (None or int) – le nombre de décimales à arrondir. Si elle est nulle, aucun arrondi n'est effectué (par défaut : aucun).

Retours

Les probabilités de mesure sous forme de dict (ket).

Type de retour

dict

purity

purity()

GitHub

Renvoie la pureté de l'état quantique.

Type de retour

float64

reset

reset(qargs=None)

GitHub

Réinitialiser l'état ou les sous-systèmes à l'état 0.

Paramètres

qargs (list or None) – sous-systèmes à réinitialiser, si Aucun, tous les sous-systèmes seront réinitialisés à l'état 0 (par défaut : Aucun).

Retours

l'état de réinitialisation.

Type de retour

Vecteur d'état

Renseignements supplémentaires :

Si tous les sous-systèmes sont réinitialisés, cela rétablit l'état de base sur tous les sous-systèmes. Si seuls certains sous-systèmes sont réinitialisés, cette fonction effectuera une mesure sur ces sous-systèmes et les fera évoluer de manière à ce que les états effondrés après la mesure soient ramenés à l'état zéro. La graine du générateur de nombres aléatoires (RNG) pour cet échantillonnage peut être définie à l'aide de la seed() méthode.

reverse_qargs

reverse_qargs()

GitHub

Retourne un vecteur d'état avec l'ordre inversé des sous-systèmes.

Pour un produit tensoriel, cela revient à inverser l'ordre des sous-systèmes du produit tensoriel. Pour un vecteur d'état ψ=ψn1...ψ0|\psi \rangle = |\psi_{n-1} \rangle \otimes ... \otimes |\psi_0 \rangle, le vecteur d'état retourné sera ψ0...ψn1|\psi_{0} \rangle \otimes ... \otimes |\psi_{n-1} \rangle.

Retours

le vecteur d'État avec l'ordre inversé des sous-systèmes.

Type de retour

Vecteur d'état

sample_counts

sample_counts(shots, qargs=None)

GitHub

Échantillonner une série de résultats de mesures de qubits dans la base de calcul.

Paramètres

  • shots (int) – le nombre d'échantillons à générer.
  • qargs (None or list) – sous-systèmes pour lesquels les mesures doivent être échantillonnées; si aucun, les mesures de tous les sous-systèmes doivent être échantillonnées (valeur par défaut : aucun).

Retours

dictionnaire des comptages échantillonnés.

Type de retour

Comptes

Information supplémentaires :

Cette fonction échantillonne les résultats des mesures en utilisant la mesure probabilities() pour l'état actuel et les qargs. Il ne met pas en œuvre la mesure, de sorte que l'état actuel n'est pas modifié.

La graine du générateur de nombres aléatoires utilisée pour l'échantillonnage peut être définie sur une valeur fixe à l'aide de la méthode seed() state.

sample_memory

sample_memory(shots, qargs=None)

GitHub

Échantillonner une liste de résultats de mesures de qubits dans la base de calcul.

Paramètres

  • shots (int) – le nombre d'échantillons à générer.
  • qargs (None or list) – sous-systèmes pour lesquels les mesures doivent être échantillonnées; si aucun, les mesures de tous les sous-systèmes doivent être échantillonnées (valeur par défaut : aucun).

Retours

liste des valeurs échantillonnées dans l'ordre où elles ont été relevées.

Type de retour

np.array

Information supplémentaires :

Cette fonction échantillonne les résultats des mesures en utilisant la mesure probabilities() pour l'état actuel et les qargs. Il ne met pas en œuvre la mesure, de sorte que l'état actuel n'est pas modifié.

La graine du générateur de nombres aléatoires utilisée pour l'échantillonnage peut être définie sur une valeur fixe à l'aide de la méthode seed() state.

seed

seed(value=None)

GitHub

Définir la graine pour le RNG de l'état quantique.

tensor

tensor(other)

GitHub

Retourne le produit tensoriel état self ⊗ other.

Paramètres

other (Statevector) – un objet d'état quantique.

Retours

l'opérateur de produit tensoriel self ⊗ other.

Type de retour

Vecteur d'état

Augmentations

QiskitError – si « autre » n'est pas un état quantique.

to_dict

to_dict(decimals=None)

GitHub

Convertit le vecteur d'état en dictionnaire.

Cette représentation du dictionnaire utilise une notation de type Ket où les clés du dictionnaire sont des chaînes de caractères pour les vecteurs de base du sous-système. Si un sous-système a une dimension supérieure à 10, des virgules sont insérées entre les nombres entiers afin de pouvoir distinguer les sous-systèmes.

Paramètres

decimals (None or int) – le nombre de décimales à arrondir. Si elle est nulle, aucun arrondi n'est effectué (par défaut : aucun).

Retours

la forme dictionnaire du vecteur d'état.

Type de retour

dict

Exemple

La forme cétale d'un vecteur d'état à 2 qubits ψ=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)}

Pour les sous-systèmes non quantiques, la plage de nombres entiers peut aller de 0 à 9. Par exemple, dans un système 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)}

Pour les grandes dimensions des sous-systèmes, des délimiteurs sont nécessaires. L'exemple suivant concerne un système à 20 dimensions composé d'un qubit et d'un qudit à 10 dimensions.

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

Convertir l'état en un opérateur de projecteur rank-1

Type de retour

Opérateur

trace

trace()

GitHub

Retourne la trace de l'état quantique sous la forme d'une matrice de densité.

Type de retour

float64

Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.