Kraus
class qiskit.quantum_info.Kraus(data, input_dims=None, output_dims=None)
Bases : QuantumChannel
Représentation de Kraus d'un canal quantique.
Pour un canal quantique , la représentation de Kraus est donnée par un ensemble de matrices telles que l'évolution de a DensityMatrix est donnée par
Une carte générale des opérateurs peut également être écrite à l'aide de la représentation généralisée de Kraus, qui est donnée par deux ensembles de matrices , tels que
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 Kraus pour le 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 sous la forme d'une liste de matrices de Kraus.
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 une liste de tableaux Numpy de forme , les systèmes de qubits seront utilisés. Si l'entrée ne correspond pas à un canal à N qubits, un seul sous-système est attribué, dont la dimension est spécifiée par la forme de l'entrée.
Attributs
atol
Valeur par défaut : 1e-08
data
Retourne la liste des matrices de Kraus pour le canal.
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)
Renvoyer la composition de l'opérateur avec un autre Kraus.
Paramètres
- other (Kraus) – un objet Kraus.
- 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
Le Kraus composé.
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)
Renvoie le produit tensoriel d'ordre inverse avec un autre Kraus.
Paramètres
other (Kraus) – un objet Kraus.
Retours
le produit tensoriel , où
est le Kraus actuel, et est l'autre Kraus.
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 complètement positive.
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)
Renvoyer le produit tensoriel avec un autre Kraus.
Paramètres
other (Kraus) – un objet Kraus.
Retours
le produit tensoriel , où
est le Kraus actuel, et est l'autre Kraus.
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