Skip to main content
IBM Quantum Platform

PhasedQubitSparsePauli

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

GitHub

Bases: object

Un operador de Pauli almacenado en un formato de qubit disperso.


Representación

Un operador de Pauli es un producto tensorial de operadores de Pauli de un solo qubit de la forma P=(i)mnAi(n)P = (-i)^m \bigotimes_n A^{(n)}_i, para Ai(n){I,X,Y,Z}A^{(n)}_i \in \{I, X, Y, Z\} y un entero mm llamado exponente de fase. La representación interna de a PhasedQubitSparsePauli almacena únicamente los operadores de Pauli de un solo qubit no idénticos.

Internamente, cada operador de Pauli de un solo qubit se almacena con un valor numérico. Consulte la documentación de QubitSparsePauli para una descripción del formato del valor numérico asociado a cada Pauli, así como las descripciones de los parámetros paulis y indices que almacenan cada Pauli y su índice de qubit asociado.

Además, la fase del operador puede recuperarse mediante el atributo phase que devuelve el exponente de fase del grupo, coincidiendo con el comportamiento del mismo atributo en Pauli.


Construcción

PhasedQubitSparsePauli define varios constructores. El constructor por defecto intentará delegar en uno de los constructores más específicos, basándose en el tipo de la entrada. Siempre puedes utilizar los constructores específicos para tener más control sobre la construcción.

Método
Resumen
from_label()Convertir una etiqueta de cadena densa en una etiqueta PhasedQubitSparsePauli.
from_sparse_label()Construye un PhasedQubitSparsePauli a partir de una tupla formada por una fase, una etiqueta de cadena dispersa y los qubits a los que se aplican.
from_pauli()Elevar una sola Pauli en un PhasedQubitSparsePauli.
from_raw_parts()Construye la lista a partir de las matrices de datos brutos y la fase.

__new__

__new__(data, /, num_qubits=None)

El constructor por defecto de QubitSparsePauli.

Esto delega en uno de los métodos constructores de conversión explícitos, basándose en el tipo del argumento data . Si se suministra num_qubits y el constructor implicado por el tipo de data no acepta un número, el entero dado debe coincidir con la entrada.

Parámetros

  • data - Tipo de datos de la entrada. Puede ser otro QubitSparsePauli, en cuyo caso se copia la entrada, o puede ser un formato válido tanto para from_label() o from_sparse_label().
  • num_qubits (int|None) – Número opcional de qubits para el operador. Para la mayoría de las entradas de datos, esto se puede deducir y no es necesario pasarlo. Sólo es necesario para el formato de etiqueta dispersa. Si se da innecesariamente, debe coincidir con los datos introducidos.

Atributos

indices

Vista de sólo lectura de los índices de cada término single-qubit no identitario.

Los índices estarán siempre ordenados.

num_qubits

El número de qubits en los que se define el término.

paulis

Vista de sólo lectura de los términos single-qubit individuales.

Los únicos valores válidos en la matriz son los que tienen su correspondiente Pauli.

phase

Vista de sólo lectura de la fase.


Métodos

commutes

commutes(other)

Compruebe si auto`` conmuta con otro phased qubit sparse pauli.

Parámetros

other (PhasedQubitSparsePauli) – el qubit en fase sparse Pauli con el que comprobar la conmutación.

compose

compose(other)

Composición con otro PhasedQubitSparsePauli.

Parámetros

other (PhasedQubitSparsePauli) – el qubit sparse Pauli con el que componer.

copy

copy()

Obtenga una copia de este término.

from_label

static from_label(label, /)

Construir a partir de una etiqueta de cadena densa.

La etiqueta debe ser una secuencia del alfabeto 'IXYZ'. La etiqueta se interpreta de forma análoga a una cadena de bits. En otras palabras, la letra más a la derecha está asociada al qubit 0, y así sucesivamente. Esto es lo mismo que las etiquetas para Pauli y SparsePauliOp.

Parámetros

label (str) – la etiqueta densa.

Ejemplos

>>> 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, /)

Construir un PhasedQubitSparsePauli a partir de una única Pauli instancia.

Parámetros

pauli (Pauli) – el único Pauli para convertir.

Ejemplos

>>> 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)

Construye un PhasedQubitSparsePauli a partir de matrices Numpy sin procesar que coincidan con la representación de datos requerida descrita en la documentación de nivel de clase.

Los datos de cada matriz se copian en asignaciones de espacio Rust nuevas y ampliables.

Parámetros

  • num_qubits - número de qubits sobre los que actúa el operador.
  • paulis - lista de los términos single-qubit. Debe ser un array Numpy con dtype uint8 (que es compatible con Pauli).
  • índices - lista ordenada de los qubits a los que corresponde cada término single-qubit. Debería ser un array Numpy con dtype uint32.
  • fase - El exponente de fase del operador.

Ejemplos

Construir un operador ZZ que actúe sobre el 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)

Construye un qubit en fase sparse Pauli a partir de una etiqueta sparse, dada como una tupla de un int para el exponente de fase, una cadena de Paulis, y los índices de los qubits correspondientes.

Esto es análogo a SparsePauliOp.from_sparse_list().

Parámetros

  • sparse_label (tuple[int, str, Sequence[int]]) – y los qubits a los que se aplica cada término single-qubit.
  • num_qubits (int) – el número de qubits sobre los que actúa el operador.

Ejemplos

Construye un Pauli simple:

>>> PhasedQubitSparsePauli.from_sparse_label(
...     (0, "ZX", (1, 4)),
...     num_qubits=5,
... )
<PhasedQubitSparsePauli on 5 qubits: X_4 Z_1>

Este método puede replicar el comportamiento de from_label()si el campo qubit-arguments de la tupla se establece en enteros decrecientes:

>>> 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)

Obtiene el operador de identidad para un número dado de qubits.

Ejemplos

Consigue la identidad en 100 qubits:

>>> QubitSparsePauli.identity(100)
<QubitSparsePauli on 100 qubits: >

to_pauli

to_pauli()

Devuelve a Pauli que representa el mismo Pauli.

to_phased_qubit_sparse_pauli_list

to_phased_qubit_sparse_pauli_list()

Convertir este Pauli en un solo elemento PhasedQubitSparsePauliList.

¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.