SuperOp
class qiskit.quantum_info.SuperOp(data, input_dims=None, output_dims=None)
Bases : QuantumChannel
Représentation d'un canal quantique par un superopérateur.
La représentation Superoperator d'un canal quantique est une matrice telle que l'évolution de a DensityMatrix est donnée par
où la notation à double clé désigne un vecteur formé par l'empilement des colonnes de la matrice (vectorisation en colonnes).
Voir la référence [1] pour plus de détails.
Références
- C.J. Bois, J.D. Biamonte, D.G. Cory, Tensor networks and graphical calculus for open quantum systems, Quant. Inf. Comp. 15, 0579-0811 (2015). arXiv:1111.6950 [quant-ph]
Initialiser un opérateur de superopérateur de canal quantique.
Paramètres
- data (QuantumCircuit |circuit.instruction.Instruction | BaseOperator | np.ndarray) – données permettant d'initialiser le superopérateur.
- input_dims (tuple | None) – les dimensions du sous-système d'entrée.
- output_dims (tuple | None) – les dimensions du sous-système de sortie.
Augmentations
QiskitError – si les données d'entrée ne peuvent pas être initialisées en tant que superopérateur.
Renseignements supplémentaires :
Si les dimensions d'entrée ou de sortie sont nulles, elles seront automatiquement déterminées à partir des données d'entrée. Si les données d'entrée sont un tableau Numpy de forme ( 4**N, 4**N ), des systèmes de qubits seront utilisés. Si l'opérateur d'entrée n'est pas un opérateur N-qubit, il attribue un sous-système unique dont la dimension est spécifiée par la forme de l'entrée.
Attributs
atol
Valeur par défaut : 1e-08
data
Données de retour.
dim
Retourne un tuple (forme_d'entrée, forme_de_sortie).
num_qubits
Renvoie le nombre de qubits s'il s'agit d'un opérateur à N qubits ou None dans le cas contraire.
qargs
Retourne les qargs de l'opérateur.
rtol
Valeur par défaut : 1e-05
settings
Paramètres de retour.
Méthodes
adjoint
adjoint()
Retourne le canal quantique adjoint.
Cela équivaut au conjugué hermitien de la matrice dans la représentation SuperOp c'est-à-dire que pour un canal , le SuperOp du canal adjoint est .
compose
compose(other, qargs=None, front=False)
Retourner la composition de l'opérateur avec un autre SuperOp.
Paramètres
- other (SuperOp) – un objet SuperOp.
- qargs (list or None) – une liste des postes au sein du sous-système auxquels appliquer d'autres mesures. Si « None » s'applique à tous les sous-systèmes (par défaut : None).
- front (bool) – Si True, composer en utilisant la multiplication de l'opérateur de droite, au lieu de la multiplication de gauche [par défaut : False].
Retours
La composition SuperOp.
Type de retour
Augmentations
QiskitError – si l'autre ne peut pas être converti en opérateur ou si ses dimensions sont incompatibles avec celles des sous-systèmes spécifiés.
La composition (&) est définie par défaut comme une multiplication matricielle à gauche pour les opérateurs matriciels, tandis que @ (équivalent à dot()) est définie comme une multiplication matricielle à droite. C'est-à-dire que A & B == A.compose(B) est équivalent à B @ A == B.dot(A) lorsque A et B sont du même type.
L'utilisation du kwarg front=True permet de passer à une multiplication matricielle à droite, ce qui équivaut à la méthode dot() méthode A.dot(B) == A.compose(B, front=True).
conjugate
conjugate()
Retourne le canal quantique conjugué.
Cela équivaut au conjugué complexe de la matrice dans la représentation SuperOp c'est-à-dire que pour un canal , le SuperOp du canal conjugué est .
copy
dot
dot(other, qargs=None)
Retourne l'opérateur multiplié par la droite self * other.
Paramètres
- other (Operator) – un objet opérateur.
- qargs (list or None) – une liste des postes au sein du sous-système auxquels appliquer d'autres mesures. Si « None » s'applique à tous les sous-systèmes (par défaut : None).
Retours
La matrice droite multipliée Opérateur.
Type de retour
Le produit de points peut être obtenu en utilisant l'opérateur binaire @ . Par conséquent, a.dot(b) est équivalent à a @ b.
expand
expand(other)
Renvoyer le produit tensoriel d'ordre inverse avec un autre SuperOp.
Paramètres
other (SuperOp) – un objet SuperOp.
Retours
le produit tensoriel , où
est l'actuel SuperOp, et est l'autre SuperOp.
Type de retour
input_dims
input_dims(qargs=None)
Retourne un ensemble de dimensions d'entrée pour les sous-systèmes spécifiés.
is_cp
is_cp(atol=None, rtol=None)
Tester si la matrice de Choi est complètement positive (CP)
Paramètres
Type de retour
is_cptp
is_cptp(atol=None, rtol=None)
Retourne True si la préservation de la trace est entièrement positive (CPTP).
Paramètres
Type de retour
is_tp
is_unitary
is_unitary(atol=None, rtol=None)
Retourne True si QuantumChannel est un canal unitaire.
Paramètres
Type de retour
output_dims
output_dims(qargs=None)
Retourne un tuple de dimensions de sortie pour les sous-systèmes spécifiés.
power
power(n)
Renvoyer la puissance du canal quantique.
Paramètres
n (float) – l'exposant de puissance.
Retours
le canal .
Type de retour
Augmentations
QiskitError – si les dimensions d'entrée et de sortie de l' SuperOp e ne sont pas identiques.
Pour les exposants non positifs ou non entiers, la puissance est définie comme la puissance matricielle de la représentation SuperOp c'est-à-dire que pour un canal , le SuperOp du canal alimenté est .
reshape
reshape(input_dims=None, output_dims=None, num_qubits=None)
Renvoyer une copie peu profonde avec les dimensions des sous-systèmes d'entrée et de sortie remodelées.
Paramètres
- input_dims (None or tuple) – les nouvelles dimensions d'entrée du sous-système. Si aucun, les gradations d'entrée d'origine seront conservées. [Par défaut : Aucun].
- output_dims (None or tuple) – les nouvelles dimensions de sortie du sous-système. Si aucun, les gradations de sortie d'origine seront conservées. [Par défaut : Aucun].
- num_qubits (None or int) – transformer en un opérateur N-qubit [Défaut : Aucun].
Retours
renvoie l'utilisateur avec les dimensions d'entrée et de sortie remodelées.
Type de retour
BaseOperator
Augmentations
QiskitError – si la somme des dimensions d'entrée ou de sortie de tous les sous-systèmes n'est pas constante.
tensor
tensor(other)
Retourner le produit tensoriel avec un autre SuperOp.
Paramètres
other (SuperOp) – un objet SuperOp.
Retours
le produit tensoriel , où
est l'actuel SuperOp, et est l'autre SuperOp.
Type de retour
Le produit tensoriel peut être obtenu en utilisant l'opérateur binaire ^ . Par conséquent, a.tensor(b) est équivalent à a ^ b.
to_instruction
to_instruction()
Convertir en instruction de circuit Kraus ou UnitaryGate.
Si le canal est unitaire, il sera ajouté en tant que porte unitaire, sinon il sera ajouté en tant qu'instruction du simulateur de Kraus.
Retours
Une instruction kraus pour le canal.
Type de retour
Augmentations
QiskitError – si les données d'entrée ne constituent pas un canal quantique CPTP à N qubits.
to_operator
to_operator()
Essayer de convertir le canal en une représentation unitaire Opérateur.
Type de retour