PhasedQubitSparsePauli
class qiskit.quantum_info.PhasedQubitSparsePauli(data, /, num_qubits=None)
Bases : object
Un opérateur de Pauli stocké dans un format clairsemé de qubits.
Représentation
Un opérateur de Pauli est un produit tensoriel d'opérateurs de Pauli à qubit unique de la forme , pour et un entier appelé exposant de phase. La représentation interne de a PhasedQubitSparsePauli ne stocke que les opérateurs de Pauli non identiques à un qubit.
En interne, chaque opérateur de Pauli à qubit unique est stocké avec une valeur numérique. Voir la documentation de QubitSparsePauli pour une description du formatage de la valeur numérique associée à chaque Pauli, ainsi que les descriptions des fonctions paulis et indices qui stockent chaque Pauli et son indice de qubit associé.
En outre, la phase de l'opérateur peut être récupérée grâce à l'attribut phase qui renvoie l'exposant de la phase du groupe, ce qui correspond au comportement de ce même attribut dans la norme Pauli.
Construction
PhasedQubitSparsePauli définit plusieurs constructeurs. Le constructeur par défaut tentera de déléguer à l'un des constructeurs plus spécifiques, en fonction du type d'entrée. Vous pouvez toujours utiliser les constructeurs spécifiques pour mieux contrôler la construction.
Méthode | Récapitulatif |
|---|---|
from_label() | Convertir une étiquette de chaîne dense en une étiquette de PhasedQubitSparsePauli. |
from_sparse_label() | Construire un PhasedQubitSparsePauli à partir d'un tuple composé d'une phase, d'un label de chaîne clairsemée et des qubits auxquels ils s'appliquent. |
from_pauli() | Transformer un simple Pauli en un PhasedQubitSparsePauli. |
from_raw_parts() | Construire la liste à partir des tableaux de données brutes et de la phase. |
__new__
__new__(data, /, num_qubits=None)
Le constructeur par défaut de QubitSparsePauli.
Elle délègue à l'une des méthodes explicites de conversion-construction, en fonction du type de l'argument data . Si num_qubits est fourni et que le constructeur impliqué par le type de data n'accepte pas de nombre, l'entier donné doit correspondre à l'entrée.
Paramètres
- data - Le type de données de l'entrée. Il peut s'agir d'un autre
QubitSparsePauliauquel cas l'entrée est copiée, ou il peut s'agir d'un format valide pour l'un ou l'autre des formatsfrom_label()oufrom_sparse_label(). - num_qubits (int|None) – Nombre facultatif de qubits pour l'opérateur. Pour la plupart des entrées de données, ce paramètre peut être déduit et n'a pas besoin d'être transmis. Il n'est nécessaire que pour le format à étiquettes éparses. S'il est donné inutilement, il doit correspondre aux données saisies.
Attributs
indices
Vue en lecture seule sur les indices de chaque terme non identitaire d'un qubit unique.
Les indices seront toujours triés.
num_qubits
Le nombre de qubits sur lesquels le terme est défini.
paulis
Vue en lecture seule sur les termes individuels du qubit unique.
Les seules valeurs valables dans le tableau sont celles qui correspondent à Pauli.
phase
Vue en lecture seule de la phase.
Méthodes
commutes
commutes(other)
Vérifier si self` commute avec un autre qubit phasé sparse pauli.
Paramètres
other (PhasedQubitSparsePauli) – le qubit phasé sparse Pauli pour vérifier la commutation avec.
compose
compose(other)
Composition avec un autre PhasedQubitSparsePauli.
Paramètres
other (PhasedQubitSparsePauli) – le qubit sparse Pauli à composer.
copy
copy()
Obtenez une copie de ce terme.
from_label
static from_label(label, /)
Construit à partir d'une étiquette de chaîne dense.
L'étiquette doit être une séquence de l'alphabet 'IXYZ'. L'étiquette est interprétée de manière analogue à une chaîne de bits. En d'autres termes, la lettre la plus à droite est associée au qubit 0, et ainsi de suite. C'est la même chose que les étiquettes pour Pauli et SparsePauliOp.
Paramètres
label (str) – l'étiquette dense.
Exemples
>>> QubitSparsePauli.from_label("IIIIXZI")
<QubitSparsePauli on 7 qubits: X_2 Z_1>
>>> label = "IYXZI"
>>> pauli = Pauli(label)
>>> assert QubitSparsePauli.from_label(label) == QubitSparsePauli.from_pauli(pauli)from_pauli
static from_pauli(pauli, /)
Construire un PhasedQubitSparsePauli à partir d'une seule instance de Pauli instance.
Paramètres
pauli (Pauli) – le seul Pauli à convertir.
Exemples
>>> label = "iIYXZI"
>>> pauli = Pauli(label)
>>> PhasedQubitSparsePauli.from_pauli(pauli)
<PhasedQubitSparsePauli on 5 qubits: iY_3 X_2 Z_1>
>>> assert PhasedQubitSparsePauli.from_label(label) == PhasedQubitSparsePauli.from_pauli(pauli)from_raw_parts
static from_raw_parts(num_qubits, paulis, indices, phase=0)
Construire un PhasedQubitSparsePauli à partir de tableaux Numpy bruts qui correspondent à la représentation des données requise décrite dans la documentation au niveau de la classe.
Les données de chaque tableau sont copiées dans des allocations d'espace Rust fraîches et évolutives.
Paramètres
- num_qubits - nombre de qubits sur lesquels l'opérateur agit.
- paulis - liste des termes du qubit unique. Il doit s'agir d'un tableau Numpy avec le dtype
uint8(qui est compatible avecPauli). - indices - liste triée des qubits auxquels correspond chaque terme de qubit unique. Il doit s'agir d'un tableau Numpy avec le dtype
uint32. - phase - L'exposant de phase de l'opérateur.
Exemples
Construire un opérateur agissant sur le qubit 50 de 100 qubits.
>>> num_qubits = 100
>>> terms = np.array([PhasedQubitSparsePauli.Pauli.Z], dtype=np.uint8)
>>> indices = np.array([50], dtype=np.uint32)
>>> phase = 0
>>> PhasedQubitSparsePauli.from_raw_parts(num_qubits, terms, indices, phase)
<PhasedQubitSparsePauli on 100 qubits: Z_50>from_sparse_label
static from_sparse_label(sparse_label, num_qubits)
Construit un qubit phasé sparse Pauli à partir d'un label sparse, donné comme un tuple d'un int pour l'exposant de phase, une chaîne de Paulis, et les indices des qubits correspondants.
Ceci est analogue à SparsePauliOp.from_sparse_list().
Paramètres
- sparse_label (tuple[int, str, Sequence[int]]) – et les qubits auxquels s'applique chaque terme de qubit unique.
- num_qubits (int) – le nombre de qubits sur lesquels l'opérateur agit.
Exemples
Construire un simple Pauli :
>>> PhasedQubitSparsePauli.from_sparse_label(
... (0, "ZX", (1, 4)),
... num_qubits=5,
... )
<PhasedQubitSparsePauli on 5 qubits: X_4 Z_1>Cette méthode peut reproduire le comportement de from_label()si le champ qubit-arguments du tuple est réglé sur des nombres entiers décroissants :
>>> label = "XYXZ"
>>> from_label = PhasedQubitSparsePauli.from_label(label)
>>> from_sparse_label = PhasedQubitSparsePauli.from_sparse_label(
... (0, label, (3, 2, 1, 0)),
... num_qubits=4
... )
>>> assert from_label == from_sparse_labelidentity
static identity(num_qubits)
Obtenir l'opérateur d'identité pour un nombre donné de qubits.
Exemples
Obtenez l'identité sur 100 qubits :
>>> QubitSparsePauli.identity(100)
<QubitSparsePauli on 100 qubits: >to_pauli
to_pauli()
Retourner un Pauli représentant le même Pauli.
to_phased_qubit_sparse_pauli_list
to_phased_qubit_sparse_pauli_list()
Convertir ce Pauli en un seul élément PhasedQubitSparsePauliList.