Skip to main content
IBM Quantum Platform

PhasedQubitSparsePauli

class qiskit.quantum_info.PhasedQubitSparsePauli(data, /, num_qubits=None)

GitHub

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 P=(i)mnAi(n)P = (-i)^m \bigotimes_n A^{(n)}_i, pour Ai(n){I,X,Y,Z}A^{(n)}_i \in \{I, X, Y, Z\} et un entier mm 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 formats from_label() ou from_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 avec Pauli).
  • 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 ZZ 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_label

identity

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.

Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.