Information quantique
qiskit.quantum_info
Opérateurs
Operator(données[, dimensions_d'entrée, dimensions_de_sortie] ) | Classe d'opérateurs matriciels |
Pauli( [données] ) | Opérateur de Pauli à N-qubits. |
Clifford(données[, validation, copie] ) | Un opérateur unitaire N-qubit du groupe de Clifford. |
ScalarOp( [dimensions, coefficients] ) | Classe d'opérateurs d'identité scalaire. |
SparseObservable(données, /[, nombre_de_qubits] ) | Une observable sur les bases de Pauli qui stocke ses données dans un format de qubits épars. |
SparsePauliOp(données[, coefficients,...] ) | Opérateur N-qubit clair dans une représentation de base de Pauli. |
PauliLindbladMap(données, /[, nombre_de_qubits] ) | Une carte de Pauli Lindblad stockée dans un format de qubits épars. |
QubitSparsePauli(données, /[, nombre_de_qubits] ) | Un opérateur de Pauli sans phase stocké dans un format épargné par les qubits. |
QubitSparsePauliList(données, /[, nombre_de_qubits] ) | Une liste d'opérateurs de Pauli sans phase stockée dans un format de qubits épars. |
PhasedQubitSparsePauli(données, /[, nombre_de_qubits] ) | Un opérateur de Pauli stocké dans un format clairsemé de qubits. |
PhasedQubitSparsePauliList(données, /[, nombre_de_qubits] ) | Une liste d'opérateurs de Pauli avec des phases stockées dans un format épargné par les qubits. |
CNOTDihedral( [données, nombre_de_qubits, validation] ) | Un opérateur N-qubit du groupe CNOT-Dihedral. |
PauliList(données) | Liste des opérateurs de Pauli pour N-qubits. |
pauli_basis(nombre de qubits[, poids] ) | Renvoi de l'adresse PauliList ordonnée pour la base de Pauli à n qubits. |
get_clifford_gate_names() | Renvoie la liste des noms de portes de Clifford. |
États
Statevector(données[, dimensions] ) | Classe de vecteurs d'état |
DensityMatrix(données[, dimensions] ) | DensityMatrix classe |
StabilizerState(données[, validation] ) | StabilizerState classe. |
Canaux
Choi(données[, dimensions_d'entrée, dimensions_de_sortie] ) | Représentation d'un canal quantique par la matrice de Choi. |
SuperOp(données[, dimensions_d'entrée, dimensions_de_sortie] ) | Représentation d'un canal quantique par un superopérateur. |
Kraus(données[, dimensions_d'entrée, dimensions_de_sortie] ) | Représentation de Kraus d'un canal quantique. |
Stinespring(données[, dimensions_d'entrée, dimensions_de_sortie] ) | Représentation d'un canal quantique par Stinespring. |
Chi(données[, dimensions_d'entrée, dimensions_de_sortie] ) | Représentation d'un canal quantique par la matrice Chi de la base de Pauli. |
PTM(données[, dimensions_d'entrée, dimensions_de_sortie] ) | Représentation de la matrice de transfert de Pauli (PTM) d'un canal quantique. |
Mesures
average_gate_fidelity
qiskit.quantum_info.average_gate_fidelity(channel, target=None, require_cp=True, require_tp=False)
Renvoie la fidélité moyenne de la porte d'un canal quantique bruyant.
La fidélité moyenne de la porte est donnée par
où est le process_fidelity() du canal quantique d'entrée avec une unité cible , et est la dimension du canal.
Paramètres
- channel (QuantumChannel or Operator) – canal quantique bruité.
- target (Operator or None) – opérateur unitaire cible. Si la cible est « None », l'opérateur est l'opérateur d'identité[. Par défaut : None].
- require_cp (bool) – vérifie si les canaux d'entrée et de destination sont complètement positifs et si l'avertissement log non CP contient des valeurs propres négatives de la matrice de Choi [Défaut : True].
- require_tp (bool) – vérifie si les canaux d'entrée et de destination préservent la trace et si l'avertissement log non PT contient des valeurs propres négatives de la matrice partielle de Choi [Défaut : True].
Retours
La fidélité moyenne de la porte .
Type de retour
Augmentations
QiskitError - si le canal et la cible n'ont pas les mêmes dimensions ou ont des dimensions d'entrée et de sortie différentes.
process_fidelity
qiskit.quantum_info.process_fidelity(channel, target=None, require_cp=True, require_tp=True)
Renvoyer la fidélité du processus d'un canal quantique bruyant.
La fidélité du processus entre deux canaux quantiques est donnée par
où est la state_fidelity(), est la matrice normalisée Choi pour le canal , et est la dimension d'entrée de .
Lorsque le canal cible est unitaire, cela équivaut à
où sont respectivement les SuperOp matrices correspondant au canal quantique d'entrée et à l'opérateur unitaire cible , et est la dimension d'entrée du canal.
Paramètres
- channel (Operator or QuantumChannel) – canal quantique d'entrée.
- target (Operator or QuantumChannel or None) – canal quantique cible. Si la cible est « None », l'opérateur est l'opérateur d'identité[. Par défaut : None].
- require_cp (bool) – vérifie si les canaux d'entrée et de destination sont complètement positifs et si l'avertissement log non CP contient des valeurs propres négatives de la matrice de Choi [Défaut : True].
- require_tp (bool) – vérifie si les canaux d'entrée et de destination préservent la trace et si l'avertissement log non PT contient des valeurs propres négatives de la matrice partielle de Choi [Défaut : True].
Retours
La fidélité du processus .
Type de retour
Augmentations
QiskitError - si le canal et la cible n'ont pas les mêmes dimensions.
gate_error
qiskit.quantum_info.gate_error(channel, target=None, require_cp=True, require_tp=False)
Renvoyer l'erreur de porte d'un canal quantique bruyant.
L'erreur de porte est donnée par l'infidélité moyenne de la porte
où est le average_gate_fidelity() du canal quantique d'entrée avec un unitaire cible .
Paramètres
- channel (QuantumChannel) – canal quantique bruyant.
- target (Operator or None) – opérateur unitaire cible. Si la cible est « None », l'opérateur est l'opérateur d'identité[. Par défaut : None].
- require_cp (bool) – vérifie si les canaux d'entrée et de destination sont complètement positifs et si l'avertissement log non CP contient des valeurs propres négatives de la matrice de Choi [Défaut : True].
- require_tp (bool) – vérifie si les canaux d'entrée et de destination préservent la trace et si l'avertissement log non PT contient des valeurs propres négatives de la matrice partielle de Choi [Défaut : True].
Retours
L'erreur moyenne de la porte .
Type de retour
Augmentations
QiskitError - si le canal et la cible n'ont pas les mêmes dimensions ou ont des dimensions d'entrée et de sortie différentes.
diamond_norm
qiskit.quantum_info.diamond_norm(choi, solver='SCS', **kwargs)
Renvoie la norme de diamant de l'objet canal quantique d'entrée.
Cette fonction calcule la norme de trace complètement délimitée (souvent appelée norme de diamant) de l'objet canal quantique d'entrée en utilisant le programme semi-défini de la référence [1.]
Paramètres
- choi (Choi or QuantumChannel) – un objet de canal quantique ou un tableau de matrices de Choi.
- solver (str) – Le solveur à utiliser.
- kwargs - arguments optionnels à passer au solveur CVXPY.
Retours
La norme de trace complètement bornée .
Type de retour
Augmentations
QiskitError - si le paquet CVXPY est introuvable.
Renseignements supplémentaires :
L'entrée de cette fonction n'est généralement pas un canal quantique CPTP, mais plutôt la différence entre deux canaux quantiques où .
Référence :
J. Watrous. "Simpler semidefinite programs for completely bounded norms", arXiv:1207.5726 [quant-ph] (2012).
Cette fonction nécessite l'installation du paquetage optionnel CVXPY. Les éventuels kwargs supplémentaires seront transmis à la fonction cvxpy.solve . Voir la documentation CVXPY pour des informations sur les solveurs SDP disponibles.
state_fidelity
qiskit.quantum_info.state_fidelity(state1, state2, validate=True)
Renvoie la fidélité d'état entre deux états quantiques.
La fidélité de l'état pour les états d'entrée de la matrice de densité est donnée par la formule suivante
Si l'un des états est un état pur, cela se simplifie à , où .
Paramètres
- state1 (Statevector orDensityMatrix) – le premier état quantique.
- state2 (Statevector orDensityMatrix) – le deuxième état quantique.
- validate (bool) – vérifie si les entrées sont des états quantiques valides [Défaut : True]
Retours
La fidélité de l'État .
Type de retour
Augmentations
QiskitError - si validate=True et les entrées sont des états quantiques non valides.
purity
qiskit.quantum_info.purity(state, validate=True)
Calculer la pureté d'un état quantique.
La pureté d'une matrice de densité est la suivante
Paramètres
- state (Statevector orDensityMatrix) – un état quantique.
- validate (bool) – vérifie si l'état de l'entrée est valide [Défaut : True]
Retours
la pureté .
Type de retour
Augmentations
QiskitError - si l'entrée n'est pas un état quantique valide.
concurrence
qiskit.quantum_info.concurrence(state)
Calculer la concurrence d'un état quantique.
La concordance d'un e bipartite Statevector est donnée par
où est l'état réduit obtenu en prenant le partial_trace() de l'état d'entrée.
Pour les matrices de densité, la concurrence n'est définie que pour les états à 2 qubits, elle est donnée par :
où sont les valeurs propres ordonnées de la matrice .
Paramètres
state (Statevector orDensityMatrix) – un état quantique à 2 qubits.
Retours
L'accord.
Type de retour
Augmentations
- QiskitError - si l'état d'entrée n'est pas un état valide QuantumState.
- QiskitError - si l'entrée n'est pas bipartite QuantumState.
- QiskitError - si l'entrée de la matrice de densité n'est pas un état à 2 qubits.
entropy
qiskit.quantum_info.entropy(state, base=2)
Calculer l'entropie de von-Neumann d'un état quantique.
L'entropie est donnée par
Paramètres
- state (Statevector orDensityMatrix) – un état quantique.
- base (int) – la base du logarithme [Défaut : 2].
Retours
L'entropie de von-Neumann S(rho).
Type de retour
Augmentations
QiskitError - si l'état d'entrée n'est pas un état valide QuantumState.
entanglement_of_formation
qiskit.quantum_info.entanglement_of_formation(state)
Calculer l'intrication de la formation d'un état quantique.
L'état quantique d'entrée doit être soit un vecteur d'état bipartite, soit une matrice de densité à 2 qubits.
Paramètres
state (Statevector orDensityMatrix) – un état quantique à 2 qubits.
Retours
L'enchevêtrement de la formation.
Type de retour
Augmentations
- QiskitError - si l'état d'entrée n'est pas un état valide QuantumState.
- QiskitError - si l'entrée n'est pas bipartite QuantumState.
- QiskitError - si l'entrée de la matrice de densité n'est pas un état à 2 qubits.
mutual_information
qiskit.quantum_info.mutual_information(state, base=2)
Calculer l'information mutuelle d'un état bipartite.
L'information mutuelle est donnée par
où , sont les matrices de densité réduites de l'état bipartite .
Paramètres
- state (Statevector orDensityMatrix) – un état bipartite.
- base (int) – la base du logarithme [Défaut : 2].
Retours
L'information mutuelle .
Type de retour
Augmentations
- QiskitError - si l'état d'entrée n'est pas un état valide QuantumState.
- QiskitError - si l'entrée n'est pas bipartite QuantumState.
Fonctions utilitaires
Quaternion(données) | Une classe représentant un quaternion. |
partial_trace
qiskit.quantum_info.partial_trace(state, qargs)
Renvoi de la matrice de densité réduite en retraçant une partie de l'état quantique.
Si tous les sous-systèmes sont suivis, cela renvoie l'état trace() d'entrée.
Paramètres
- state (Statevector orDensityMatrix) – l'état d'entrée.
- qargs (list) – Les sous-systèmes à retracer.
Retours
La matrice de densité réduite.
Type de retour
Augmentations
QiskitError - si l'état de l'entrée n'est pas valide.
schmidt_decomposition
qiskit.quantum_info.schmidt_decomposition(state, qargs)
Retourne la décomposition de Schmidt d'un état quantique pur.
Pour un état bipartite arbitraire :
sa décomposition de Schmidt est donnée par la somme d'un seul indice sur k :
où et sont un ensemble orthonormé de vecteurs dans leurs espaces respectifs et , et les coefficients de Schmidt sont des valeurs réelles positives.
Paramètres
- state (Statevector orDensityMatrix) – l'état d'entrée.
- qargs (list) – la liste des positions de l'état d'entrée correspondant au sous-système .
Retours
liste de tuples (s, u, v), où s (float) sont les coefficients de Schmidt , et u (Statevector), v (Statevector) sont les vecteurs de Schmidt , , respectivement.
Type de retour
Augmentations
- QiskitError - si Input qargs n'est pas une liste de positions de l'état Input.
- QiskitError - si Input qargs n'est pas un sous-ensemble correct de Input state.
Dans Qiskit, les qubits sont classés en utilisant la notation little-endian, les qubits les moins significatifs ayant des indices plus petits. Par exemple, un système à quatre qubits est représenté par . En utilisant cette convention, le réglage de qargs=[0] partitionnera l'état comme . En outre, les qubits seront organisés selon cette notation quel que soit l'ordre dans lequel ils sont transmis. Par exemple, si l'on transmet qargs=[1,2] ou qargs=[2,1] , l'État sera partitionné comme suit : .
shannon_entropy
qiskit.quantum_info.shannon_entropy(pvec, base=2)
Calculer l'entropie de Shannon d'un vecteur de probabilité.
L'entropie de Shannon d'un vecteur de probabilité est définie comme suit
où est le logarithme de la base et (par défaut 2), et .
Paramètres
- pvec (array_like) – un vecteur de probabilité.
- base (int) – la base du logarithme [Défaut : 2].
Retours
L'entropie de Shannon H(pvec).
Type de retour
commutator
qiskit.quantum_info.commutator(a, b)
Calculer le commutateur de a et b.
Paramètres
- a (OperatorTypeT) – Opérateur a.
- b (OperatorTypeT) – Opérateur b.
Retours
Le commutateur
Type de retour
OperatorTypeT
anti_commutator
qiskit.quantum_info.anti_commutator(a, b)
Calculer l'anti-commutateur de a et b.
Paramètres
- a (OperatorTypeT) – Opérateur a.
- b (OperatorTypeT) – Opérateur b.
Retours
L'anti-commutateur
Type de retour
OperatorTypeT
double_commutator
qiskit.quantum_info.double_commutator(a, b, c, *, commutator=True)
Calculer le double commutateur symétrique de a, b et c.
Voir également l'équation ( 13.6.18 ) au point [1.]
Si le commutateur est Vrai, il renvoie
Si le commutateur est Faux, il renvoie
Paramètres
- a (OperatorTypeT) – Opérateur a.
- b (OperatorTypeT) – Opérateur b.
- c (OperatorTypeT) – Opérateur c.
- commutator (bool) – Si
Truecalculer le double commutateur, siFalsele double anti-commutateur.
Retours
Le double commutateur
Type de retour
OperatorTypeT
Références
[1] : R. McWeeny.
Méthodes de mécanique quantique moléculaire. 2e édition, Academic Press, 1992. ISBN 0-12-486552-6.
Aléatoire
random_statevector
qiskit.quantum_info.random_statevector(dims, seed=None)
Générer un vecteur d'état aléatoire.
Le vecteur d'état est échantillonné à partir d'une distribution uniforme. Il s'agit de la mesure induite par la mesure de Haar sur les matrices unitaires.
Paramètres
- dims (int ortuple) – les dimensions de l'État.
- seed (int or np.random.Generator) – En option. Définir une graine ou un générateur fixe pour le RNG.
Retours
le vecteur d'état aléatoire.
Type de retour
Référence :
K. Zyczkowski et H. Sommers (2001), "Induced measures in the space of mixed quantum states", J. Physique. A : Mathématiques. Gen. 34 7111.
random_density_matrix
qiskit.quantum_info.random_density_matrix(dims, rank=None, method='Hilbert-Schmidt', seed=None)
Générer une matrice de densité aléatoire.
Paramètres
- dims (int ortuple) – les dimensions du site DensityMatrix.
- rank (int or None) – le rang de la matrice de densité. La valeur par défaut est « full-rank ».
- method (string) – En option. La méthode à utiliser. hilbert-Schmidt" : (par défaut) échantillon de la métrique de Hilbert-Schmidt. bures" : échantillon de la métrique de Bures.
- seed (int or np.random.Generator) – En option. Définir une graine ou un générateur fixe pour le RNG.
Retours
la matrice de densité aléatoire.
Type de retour
Augmentations
QiskitError - si la méthode n'est pas valide.
random_unitary
qiskit.quantum_info.random_unitary(dims, seed=None)
Retourne un opérateur unitaire aléatoire.
L'opérateur est échantillonné à partir de la mesure unitaire de Haar.
Paramètres
- dims (int ortuple) – les dimensions d'entrée de l'opérateur.
- seed (int or np.random.Generator) – En option. Définir une graine ou un générateur fixe pour le RNG.
Retours
un opérateur unitaire.
Type de retour
random_hermitian
qiskit.quantum_info.random_hermitian(dims, traceless=False, seed=None)
Retourne un opérateur hermitien aléatoire.
L'opérateur est échantillonné à partir d'un ensemble unitaire gaussien.
Paramètres
- dims (int ortuple) – la dimension d'entrée de l'opérateur.
- traceless (bool) – En option. Si True, soustraire les entrées diagonales pour obtenir un opérateur hermitien sans trace (par défaut : False).
- seed (int or np.random.Generator) – En option. Définir une graine ou un générateur fixe pour le RNG.
Retours
un opérateur hermitien.
Type de retour
random_pauli
qiskit.quantum_info.random_pauli(num_qubits, group_phase=False, seed=None)
Renvoie une valeur aléatoire Pauli.
Paramètres
- num_qubits (int) – Le nombre de qubits.
- group_phase (bool) – Facultatif. Si on génère
Trueune phase aléatoire. Sinon, la phase sera définie de manière à ce que le coefficient de Pauli soit égal à +1 (valeur par défaut :False). - seed (int |Generator | None) – Facultatif. Définir une graine ou un générateur fixe pour le générateur de nombres aléatoires (RNG).
Retours
Un Pauli pris au hasard.
Type de retour
random_clifford
qiskit.quantum_info.random_clifford(num_qubits, seed=None)
Retourne un opérateur de Clifford aléatoire.
Le Clifford est échantillonné selon la méthode de la référence [1.]
Paramètres
- num_qubits (int) – Le nombre de qubits pour l'opérateur de Clifford.
- seed (int |Generator | None) – Facultatif. Définir une graine ou un générateur fixe pour le générateur de nombres aléatoires (RNG).
Retours
Un opérateur de Clifford aléatoire.
Type de retour
Références :
[1] S. Bravyi et D. Maslov (2020). Les circuits sans Hadamard mettent en évidence la structure du groupe de Clifford. arXiv:2003.09412
random_quantum_channel
qiskit.quantum_info.random_quantum_channel(input_dims=None, output_dims=None, rank=None, seed=None)
Renvoie un canal quantique CPTP aléatoire.
Cela permet de construire l'opérateur Stinespring pour le canal quantique en échantillonnant une isométrie aléatoire à partir de la mesure unitaire de Haar.
Paramètres
- input_dims (int ortuple) – la dimension d'entrée du canal.
- output_dims (int ortuple) – la dimension de sortie du canal.
- rank (int) – En option. Le rang de la matrice de Choi du canal quantique.
- seed (int or np.random.Generator) – En option. Définir une graine ou un générateur fixe pour le RNG.
Retours
un opérateur de canal quantique.
Type de retour
Augmentations
QiskitError - si le rang ou les dimensions ne sont pas valides.
random_cnotdihedral
qiskit.quantum_info.random_cnotdihedral(num_qubits, seed=None)
Renvoie un élément CNOTDihedral aléatoire.
Paramètres
- num_qubits (int) – le nombre de qubits pour l'objet CNOTDihedral.
- seed (int or RandomState) – En option. Définir une graine ou un générateur fixe pour le RNG.
Retours
un élément aléatoire de CNOTDihedral.
Type de retour
random_pauli_list
qiskit.quantum_info.random_pauli_list(num_qubits, size=1, seed=None, phase=True)
Renvoie une valeur aléatoire PauliList.
Paramètres
- num_qubits (int) – Le nombre de qubits.
- size (int) – En option. La longueur de la liste de Pauli (par défaut : 1).
- seed (int |Generator | None) – Facultatif. Définir une graine ou un générateur fixe pour le générateur de nombres aléatoires (RNG).
- phase (bool) – Facultatif. Si les
Truephases de Pauli sont aléatoires, sinon elles sont fixées à 0 (par défaut :True).
Retours
Un truc au hasard PauliList.
Type de retour
Analyse
hellinger_distance
qiskit.quantum_info.hellinger_distance(dist_p, dist_q)
Calcule la distance de Hellinger entre deux distributions de comptes.
Paramètres
- dist_p (dict) – Première dictée de chefs d'accusation.
- dist_q (dict) – Deuxième dictée de chefs d'accusation.
Retours
Distance
Type de retour
Références
hellinger_fidelity
qiskit.quantum_info.hellinger_fidelity(dist_p, dist_q)
Calcule la fidélité de Hellinger entre deux distributions de comptes.
La fidélité est définie comme où H est la distance de Hellinger. Cette valeur est comprise entre [0 et 1.]
Cela équivaut à la fidélité classique standard qui, à son tour, est égale à la fidélité de l'état quantique pour les matrices de densité diagonales.
Paramètres
- dist_p (dict) – Première dictée de chefs d'accusation.
- dist_q (dict) – Deuxième dictée de chefs d'accusation.
Retours
Fidélité
Type de retour
Exemple
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())Références
Fidélité quantique @ wikipedia Distance de Hellinger @ wikipedia
Z2Symmetries(symétries, sq_paulis, sq_list) | Le convertisseur de symétrie $Z_2$ identifie les symétries du hamiltonien du problème et les utilise pour fournir une représentation effilée - plus efficace - des opérateurs comme Paulis pour ce problème. |