StabilizerState
class qiskit.quantum_info.StabilizerState(data, validate=True)
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
- 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
- data (StabilizerState |Clifford |Pauli |QuantumCircuit |circuit.instruction.Instruction) – Données à partir desquelles l'état du stabilisateur peut être déterminé.
- validate (bool) – valider que les données relatives à l'état du stabilisateur sont un Clifford valide.
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
copy
dims
equiv
equiv(other)
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
evolve
evolve(other, qargs=None)
Évolution d'un état stabilisateur par un opérateur de Clifford.
Paramètres
- other (Clifford orQuantumCircuit orqiskit.circuit.Instruction) – L'opérateur de Clifford à partir duquel évoluer.
- qargs (list) – une liste de positions du sous-système de stabilisation sur lesquelles appliquer l'opérateur.
Retours
l'état de stabilisation de la sortie.
Type de retour
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)
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
Augmentations
QiskitError – si « autre » n'est pas une « StabilizerState ».
expectation_value
expectation_value(oper, qargs=None)
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
from_stabilizer_list
classmethod from_stabilizer_list(stabilizers, allow_redundant=False, allow_underconstrained=False)
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
is_valid
measure
measure(qargs=None)
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) où 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
probabilities
probabilities(qargs=None, decimals=None)
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)
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
probabilities_dict_from_bitstring
probabilities_dict_from_bitstring(outcome_bitstring, qargs=None, decimals=None)
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
purity
purity()
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
Augmentations
QiskitError – si la valeur saisie n'est pas un « StabilizerState ».
reset
reset(qargs=None)
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
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)
É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
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)
É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
tensor
tensor(other)
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
Augmentations
QiskitError – si « autre » n'est pas une « StabilizerState ».
to_operator
trace
trace()
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
Augmentations
QiskitError – si la valeur saisie n'est pas un « StabilizerState ».