Skip to main content
IBM Quantum Platform

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)

GitHub

Renvoie la fidélité moyenne de la porte d'un canal quantique bruyant.

La fidélité moyenne de la porte FaveF_{\text{ave}} est donnée par

Fave(E,U)=dψψUE(ψ ⁣ψ)Uψ=dFpro(E,U)+1d+1\begin{aligned} F_{\text{ave}}(\mathcal{E}, U) &= \int d\psi \langle\psi|U^\dagger \mathcal{E}(|\psi\rangle\!\langle\psi|)U|\psi\rangle \\ &= \frac{d F_{\text{pro}}(\mathcal{E}, U) + 1}{d + 1} \end{aligned}

Fpro(E,U)F_{\text{pro}}(\mathcal{E}, U) est le process_fidelity() du canal quantique d'entrée E\mathcal{E} avec une unité cible UU, et dd 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 Trout[E]ITr_{\text{out}}[\mathcal{E}] - I [Défaut : True].

Retours

La fidélité moyenne de la porte FaveF_{\text{ave}}.

Type de retour

Float

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)

GitHub

Renvoyer la fidélité du processus d'un canal quantique bruyant.

La fidélité du processus Fpro(E,F)F_{\text{pro}}(\mathcal{E}, \mathcal{F}) entre deux canaux quantiques E,F\mathcal{E}, \mathcal{F} est donnée par

Fpro(E,F)=F(ρE,ρF)F_{\text{pro}}(\mathcal{E}, \mathcal{F}) = F(\rho_{\mathcal{E}}, \rho_{\mathcal{F}})

FF est la state_fidelity(), ρE=ΛE/d\rho_{\mathcal{E}} = \Lambda_{\mathcal{E}} / d est la matrice normalisée Choi pour le canal E\mathcal{E}, et dd est la dimension d'entrée de E\mathcal{E}.

Lorsque le canal cible est unitaire, cela équivaut à

Fpro(E,U)=Tr[SUSE]d2F_{\text{pro}}(\mathcal{E}, U) = \frac{Tr[S_U^\dagger S_{\mathcal{E}}]}{d^2}

SE,SUS_{\mathcal{E}}, S_{U} sont respectivement les SuperOp matrices correspondant au canal quantique d'entrée E\mathcal{E} et à l'opérateur unitaire cible UU, et dd 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 Trout[E]ITr_{\text{out}}[\mathcal{E}] - I [Défaut : True].

Retours

La fidélité du processus FproF_{\text{pro}}.

Type de retour

Float

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)

GitHub

Renvoyer l'erreur de porte d'un canal quantique bruyant.

L'erreur de porte EE est donnée par l'infidélité moyenne de la porte

E(E,U)=1Fave(E,U)E(\mathcal{E}, U) = 1 - F_{\text{ave}}(\mathcal{E}, U)

Fave(E,U)F_{\text{ave}}(\mathcal{E}, U) est le average_gate_fidelity() du canal quantique d'entrée E\mathcal{E} avec un unitaire cible UU.

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 Trout[E]ITr_{\text{out}}[\mathcal{E}] - I [Défaut : True].

Retours

L'erreur moyenne de la porte EE.

Type de retour

Float

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)

GitHub

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 E\|\mathcal{E}\|_{\diamond}.

Type de retour

Float

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 ΔE\|\Delta\mathcal{E}\|_\diamondΔE=E1E2\Delta\mathcal{E} = \mathcal{E}_1 - \mathcal{E}_2.

Référence :

J. Watrous. "Simpler semidefinite programs for completely bounded norms", arXiv:1207.5726 [quant-ph] (2012).

Remarque

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)

GitHub

Renvoie la fidélité d'état entre deux états quantiques.

La fidélité de l'état FF pour les états d'entrée de la matrice de densité ρ1,ρ2\rho_1, \rho_2 est donnée par la formule suivante

F(ρ1,ρ2)=Tr[ρ1ρ2ρ1]2.F(\rho_1, \rho_2) = Tr[\sqrt{\sqrt{\rho_1}\rho_2\sqrt{\rho_1}}]^2.

Si l'un des états est un état pur, cela se simplifie à F(ρ1,ρ2)=ψ1ρ2ψ1F(\rho_1, \rho_2) = \langle\psi_1|\rho_2|\psi_1\rangle, où ρ1=ψ1 ⁣ψ1\rho_1 = |\psi_1\rangle\!\langle\psi_1|.

Paramètres

Retours

La fidélité de l'État F(ρ1,ρ2)F(\rho_1, \rho_2).

Type de retour

Float

Augmentations

QiskitError - si validate=True et les entrées sont des états quantiques non valides.

purity

qiskit.quantum_info.purity(state, validate=True)

GitHub

Calculer la pureté d'un état quantique.

La pureté d'une matrice de densité ρ\rho est la suivante

Purity(ρ)=Tr[ρ2]\text{Purity}(\rho) = Tr[\rho^2]

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é Tr[ρ2]Tr[\rho^2].

Type de retour

Float

Augmentations

QiskitError - si l'entrée n'est pas un état quantique valide.

concurrence

qiskit.quantum_info.concurrence(state)

GitHub

Calculer la concurrence d'un état quantique.

La concordance d'un ψ|\psi\rangle e bipartite Statevector est donnée par

C(ψ)=2(1Tr[ρ02])C(|\psi\rangle) = \sqrt{2(1 - Tr[\rho_0^2])}

ρ0=Tr1[ψ ⁣ψ]\rho_0 = Tr_1[|\psi\rangle\!\langle\psi|] 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 :

C(ρ)=max(0,λ1λ2λ3λ4)C(\rho) = \max(0, \lambda_1 - \lambda_2 - \lambda_3 - \lambda_4)

λ1λ2λ3λ4\lambda _1 \ge \lambda _2 \ge \lambda _3 \ge \lambda _4 sont les valeurs propres ordonnées de la matrice R=ρ(YY)ρ(YY)ρR=\sqrt{\sqrt{\rho }(Y\otimes Y)\overline{\rho}(Y\otimes Y)\sqrt{\rho}}.

Paramètres

state (Statevector orDensityMatrix) – un état quantique à 2 qubits.

Retours

L'accord.

Type de retour

Float

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)

GitHub

Calculer l'entropie de von-Neumann d'un état quantique.

L'entropie SS est donnée par

S(ρ)=Tr[ρlog(ρ)]S(\rho) = - Tr[\rho \log(\rho)]

Paramètres

Retours

L'entropie de von-Neumann S(rho).

Type de retour

Float

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)

GitHub

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

Float

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)

GitHub

Calculer l'information mutuelle d'un état bipartite.

L'information mutuelle II est donnée par

I(ρAB)=S(ρA)+S(ρB)S(ρAB)I(\rho_{AB}) = S(\rho_A) + S(\rho_B) - S(\rho_{AB})

ρA=TrB[ρAB],ρB=TrA[ρAB]\rho_A=Tr_B[\rho_{AB}], \rho_B=Tr_A[\rho_{AB}], sont les matrices de densité réduites de l'état bipartite ρAB\rho_{AB}.

Paramètres

Retours

L'information mutuelle I(ρAB)I(\rho_{AB}).

Type de retour

Float

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)

GitHub

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

Retours

La matrice de densité réduite.

Type de retour

DensityMatrix

Augmentations

QiskitError - si l'état de l'entrée n'est pas valide.

schmidt_decomposition

qiskit.quantum_info.schmidt_decomposition(state, qargs)

GitHub

Retourne la décomposition de Schmidt d'un état quantique pur.

Pour un état bipartite arbitraire :

ψAB=i,jcijxiAyjB,|\psi\rangle_{AB} = \sum_{i,j} c_{ij} |x_i\rangle_A \otimes |y_j\rangle_B,

sa décomposition de Schmidt est donnée par la somme d'un seul indice sur k :

ψAB=kλkukAvkB|\psi\rangle_{AB} = \sum_{k} \lambda_{k} |u_k\rangle_A \otimes |v_k\rangle_B

ukA|u_k\rangle_A et vkB|v_k\rangle_B sont un ensemble orthonormé de vecteurs dans leurs espaces respectifs AA et BB, et les coefficients de Schmidt λk\lambda_k 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 BB.

Retours

liste de tuples (s, u, v), où s (float) sont les coefficients de Schmidt λk\lambda_k, et u (Statevector), v (Statevector) sont les vecteurs de Schmidt ukA|u_k\rangle_A, ukB|u_k\rangle_B, respectivement.

Type de retour

liste

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.
Remarque

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 q3q2q1q0|q_3q_2q_1q_0\rangle. En utilisant cette convention, le réglage de qargs=[0] partitionnera l'état comme q3q2q1Aq0B|q_3q_2q_1\rangle_A\otimes|q_0\rangle_B. 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 : q3q0Aq2q1B|q_3q_0\rangle_A\otimes|q_2q_1\rangle_B.

shannon_entropy

qiskit.quantum_info.shannon_entropy(pvec, base=2)

GitHub

Calculer l'entropie de Shannon d'un vecteur de probabilité.

L'entropie de Shannon d'un vecteur de probabilité p=[p0,...,pn1]\vec{p} = [p_0, ..., p_{n-1}] est définie comme suit

H(p)=i=0n1pilogb(pi)H(\vec{p}) = \sum_{i=0}^{n-1} p_i \log_b(p_i)

bb est le logarithme de la base et (par défaut 2), et 0logb(0)00 \log_b(0) \equiv 0.

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

Float

commutator

qiskit.quantum_info.commutator(a, b)

GitHub

Calculer le commutateur de a et b.

abba.ab - ba.

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)

GitHub

Calculer l'anti-commutateur de a et b.

ab+ba.ab + ba.

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)

GitHub

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

[[A,B],C]/2+[A,[B,C]]/2=(2ABC+2CBABACCABACBBCA)/2.[[A, B], C]/2 + [A, [B, C]]/2 = (2ABC + 2CBA - BAC - CAB - ACB - BCA)/2.

Si le commutateur est Faux, il renvoie

{[A,B],C}/2+{A,[B,C]}/2=(2ABC2CBABAC+CABACB+BCA)/2.\lbrace[A, B], C\rbrace/2 + \lbrace A, [B, C]\rbrace/2 = (2ABC - 2CBA - BAC + CAB - ACB + BCA)/2.

Paramètres

  • a (OperatorTypeT) – Opérateur a.
  • b (OperatorTypeT) – Opérateur b.
  • c (OperatorTypeT) – Opérateur c.
  • commutator (bool) – Si True calculer le double commutateur, si False le 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)

GitHub

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

Vecteur d'état

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)

GitHub

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

DensityMatrix

Augmentations

QiskitError - si la méthode n'est pas valide.

random_unitary

qiskit.quantum_info.random_unitary(dims, seed=None)

GitHub

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

Opérateur

random_hermitian

qiskit.quantum_info.random_hermitian(dims, traceless=False, seed=None)

GitHub

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

Opérateur

random_pauli

qiskit.quantum_info.random_pauli(num_qubits, group_phase=False, seed=None)

GitHub

Renvoie une valeur aléatoire Pauli.

Paramètres

  • num_qubits (int) – Le nombre de qubits.
  • group_phase (bool) – Facultatif. Si on génère True une 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

Pauli

random_clifford

qiskit.quantum_info.random_clifford(num_qubits, seed=None)

GitHub

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

Clifford

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)

GitHub

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

Stinespring

Augmentations

QiskitError - si le rang ou les dimensions ne sont pas valides.

random_cnotdihedral

qiskit.quantum_info.random_cnotdihedral(num_qubits, seed=None)

GitHub

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

CNOTDihedral

random_pauli_list

qiskit.quantum_info.random_pauli_list(num_qubits, size=1, seed=None, phase=True)

GitHub

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 True phases de Pauli sont aléatoires, sinon elles sont fixées à 0 (par défaut : True).

Retours

Un truc au hasard PauliList.

Type de retour

PauliList


Analyse

hellinger_distance

qiskit.quantum_info.hellinger_distance(dist_p, dist_q)

GitHub

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

Float

Références

Distance de Hellinger @ wikipedia

hellinger_fidelity

qiskit.quantum_info.hellinger_fidelity(dist_p, dist_q)

GitHub

Calcule la fidélité de Hellinger entre deux distributions de comptes.

La fidélité est définie comme (1H2)2\left(1-H^{2}\right)^{2} où H est la distance de Hellinger. Cette valeur est comprise entre [0 et 1.]

Cela équivaut à la fidélité classique standard F(Q,P)=(ipiqi)2F(Q,P)=\left(\sum_{i}\sqrt{p_{i}q_{i}}\right)^{2} 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

Float

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.
Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.