Skip to main content
IBM Quantum Platform

StabilizerState

class qiskit.quantum_info.StabilizerState(data, validate=True)

GitHub

Bases : QuantumState

StabilizerState classe. Simulateur de stabilisateur utilisant la convention de la référence [1.] Basé sur la classe interne Clifford.

from qiskit import QuantumCircuit
from qiskit.quantum_info import StabilizerState, Pauli

# Bell state generation circuit
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
stab = StabilizerState(qc)

# Print the StabilizerState
print(stab)

# Calculate the StabilizerState measurement probabilities dictionary
print (stab.probabilities_dict())

# Calculate expectation value of the StabilizerState
print (stab.expectation_value(Pauli('ZZ')))
StabilizerState(StabilizerTable: ['+XX', '+ZZ'])
{'00': 0.5, '11': 0.5}
1

Étant donné une liste de stabilisateurs, qiskit.quantum_info.StabilizerState.from_stabilizer_list() renvoie un état stabilisé par la liste

from qiskit.quantum_info import StabilizerState

stabilizer_list = ["ZXX", "-XYX", "+ZYY"]
stab = StabilizerState.from_stabilizer_list(stabilizer_list)

Références

  1. S. Aaronson, D. Gottesman, Improved Simulation of Stabilizer Circuits, Phys. Rev. A 70, 052328 (2004). arXiv:quant-ph/0406196

Initialise un objet StabilizerState.

Paramètres


Attributs

clifford

Retourner StabilizerState Données de Clifford

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.


Méthodes

conjugate

conjugate()

GitHub

Retourne le conjugué de l'opérateur.

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.

equiv

equiv(other)

GitHub

Retourne True si les deux ensembles générateurs génèrent le même groupe stabilisateur.

Paramètres

other (StabilizerState) – un autre StabilizerState.

Retours

Vrai si l'autre a un ensemble générateur qui génère le même StabilizerState.

Type de retour

booléen

evolve

evolve(other, qargs=None)

GitHub

Évolution d'un état stabilisateur par un opérateur de Clifford.

Paramètres

Retours

l'état de stabilisation de la sortie.

Type de retour

StabilizerState

Augmentations

  • QiskitError – si « autre » n'est pas une « StabilizerState ».
  • QiskitError – si les dimensions de l'opérateur ne correspondent pas à celles du sous-système « StabilizerState » spécifiées.

expand

expand(other)

GitHub

Retourne l'état stabilisateur du produit tensoriel other ⊗ self.

Paramètres

other (StabilizerState) – un objet d'état stabilisateur.

Retours

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

Type de retour

StabilizerState

Augmentations

QiskitError – si « autre » n'est pas une « StabilizerState ».

expectation_value

expectation_value(oper, qargs=None)

GitHub

Calculer la valeur d'espérance d'un opérateur de Pauli ou de SparsePauliOp.

Paramètres

  • oper (Pauli |SparsePauliOp) – Un opérateur de Pauli ou SparsePauliOp pour évaluer la valeur espérée.
  • qargs (None | list) – Sous-systèmes sur lesquels appliquer l'opérateur.

Retours

La valeur attendue.

Augmentations

QiskitError – si oper n'est pas un opérateur de Pauli ou d' SparsePauliOp.

Type de retour

complexe

from_stabilizer_list

classmethod from_stabilizer_list(stabilizers, allow_redundant=False, allow_underconstrained=False)

GitHub

Créer un état stabilisé à partir de la collection de stabilisateurs.

Paramètres

  • stabilizers (Collection[str]) – liste des cordes stabilisatrices
  • allow_redundant (bool) – autoriser les stabilisateurs redondants (c'est-à-dire que certains stabilisateurs peuvent être des produits d'autres stabilisateurs)
  • allow_underconstrained (bool) – autoriser un ensemble de stabilisateurs sous-contraints (c'est-à-dire que les stabilisateurs ne déterminent pas un état unique)

Retours

un état stabilisé par des stabilisateurs.

Type de retour

StabilizerState

is_valid

is_valid(atol=None, rtol=None)

GitHub

Retourne True si un StabilizerState valide.

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 résultats de la mesure, et state l'état stabilisateur 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 None, aucun arrondi n'est effectué (par défaut : None).

Retours

Le tableau de vecteurs Numpy des probabilités.

Type de retour

np.array

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 None, aucun arrondi n'est effectué (par défaut : None).

Retours

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

Type de retour

dict

probabilities_dict_from_bitstring

probabilities_dict_from_bitstring(outcome_bitstring, qargs=None, decimals=None)

GitHub

Renvoyer le dictionnaire des probabilités de mesure du sous-système en utilisant une chaîne de bits de résultat ciblée pour effectuer la mesure. Cela permet de calculer une probabilité pour une seule valeur de résultat ciblé, ce qui améliore les performances par rapport au calcul de tous les résultats possibles.

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

  • outcome_bitstring (None or str) – chaîne de bits de résultat ciblée pour laquelle effectuer un calcul de mesure; cela réduira considérablement le nombre de calculs effectués (par défaut : Aucun)
  • 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 pour arrondir les valeurs. Si None, aucun arrondi n'est effectué (par défaut : None)

Retours

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

Type de retour

dict[ str, float ]

purity

purity()

GitHub

Renvoie la pureté de l'état quantique, qui est égale à 1, puisqu'il s'agit toujours d'un état pur.

Retours

la pureté (doit être égale à 1).

Type de retour

Float

Augmentations

QiskitError – si la valeur saisie n'est pas un « StabilizerState ».

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

StabilizerState

Renseignements supplémentaires :

Si tous les sous-systèmes sont réinitialisés, l'état de masse sera rétabli dans 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 post-mesure effondrés soient ramenés à l'état 0. La graine RNG pour cet échantillonnage peut être définie à l'aide de la méthode seed() méthode.

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 met en œuvre la méthode de mesure measure() de mesure.

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 l'état stabilisateur du produit tensoriel self ⊗ other.

Paramètres

other (StabilizerState) – un objet d'état stabilisateur.

Retours

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

Type de retour

StabilizerState

Augmentations

QiskitError – si « autre » n'est pas une « StabilizerState ».

to_operator

to_operator()

GitHub

Convertir l'état en classe d'opérateurs matriciels

Type de retour

Opérateur

trace

trace()

GitHub

Renvoie la trace de l'état stabilisateur sous la forme d'une matrice de densité, qui est égale à 1, puisqu'il s'agit toujours d'un état pur.

Retours

la trace (doit être égale à 1).

Type de retour

Float

Augmentations

QiskitError – si la valeur saisie n'est pas un « StabilizerState ».

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