Skip to main content
IBM Quantum Platform

PhasedQubitSparsePauliList

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

GitHub

Bases: object

Una lista de operadores de Pauli con fases almacenadas en un formato de qubit disperso.


Representación

Cada operador de Pauli individual de la lista es un producto tensorial de operadores de Pauli de un solo qubit de la forma P=(i)nnAi(n)P = (-i)^n\bigotimes_n A^{(n)}_i, para Ai(n){I,X,Y,Z}A^{(n)}_i \in \{I, X, Y, Z\}, y un entero nn llamado exponente de fase. La representación interna de a PhasedQubitSparsePauliList almacena sólo los operadores de Pauli de un solo qubit no idénticos.

Indexación

PhasedQubitSparsePauliList se comporta como una secuencia Python (la forma estándar, no la expandida collections.abc.Sequence). Los elementos de la lista se pueden indexar por enteros, así como iterar a través de ellos. Ya sea mediante indexación o iteración, los elementos de la lista se devuelven como PhasedQubitSparsePauli instancias.


Construcción

PhasedQubitSparsePauliList 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 un elemento único PhasedQubitSparsePauliList.
from_list()Construir a partir de una lista de etiquetas de cadenas densas.
from_sparse_list()Elementos dados como una lista de tuplas del exponente de fase, etiquetas de cadena dispersa y los qubits a los que se aplican.
from_pauli()Convierte un elemento Pauli en un elemento simple PhasedQubitSparsePauliList.
from_phased_qubit_sparse_paulis()Construir a partir de una lista de PhasedQubitSparsePaulis.

__new__

__new__(data, /, num_qubits=None)

El constructor por defecto de PhasedQubitSparsePauliList.

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 PhasedQubitSparsePauliListen cuyo caso se copia la entrada, o puede ser una lista en un formato válido para from_list() o from_sparse_list().
  • num_qubits (int|None) – Número opcional de qubits para la lista. Para la mayoría de las entradas de datos, esto se puede deducir y no es necesario pasarlo. Sólo es necesario para las listas vacías o el formato sparse-list. Si se da innecesariamente, debe coincidir con los datos introducidos.

Además de los constructores basados en la conversión, el método empty() puede utilizarse para construir una lista vacía de Paulis de qubits dispersos en fase que actúen sobre un número determinado de qubits.


Conversiones

Un archivo existente PhasedQubitSparsePauliList puede convertirse a otros formatos.

Método
Resumen
to_sparse_list()Exprese el observable en formato de lista dispersa con elementos (phase, paulis, indices).

Atributos

num_qubits

Número de qubits sobre los que actúan los operadores de la lista.

Esto no puede deducirse de ninguna otra forma o valor, ya que las identidades no se almacenan explícitamente.

num_terms

El número de elementos de la lista.


Métodos

apply_layout

apply_layout(layout, num_qubits=None)

Aplique un diseño transpilador a esta lista Pauli dispersa de qubits en fase.

Esto permite reasignar los índices de los qubits, por ejemplo, si la lista se define en términos de etiquetas de qubits virtuales.

Parámetros

  • layout (TranspileLayout |list[int] | None) – La disposición a aplicar. La mayoría de los usos de esta función deben pasar el QuantumCircuit.layout campo de un circuito transpilado para hardware. Además, puede pasar una lista de nuevos índices de qubits. Si se da explícitamente None, no se aplica ninguna reasignación (pero aún se puede utilizar num_qubits para expandir los qubits de la lista).
  • num_qubits (int | None) – El número de qubits a los que expandir los elementos de la lista. Si no se proporciona, la salida será tan ancha como la entrada TranspileLayouto la misma anchura que la entrada si layout se proporciona de otra forma.

Devuelve

Un nuevo QubitSparsePauli con el diseño proporcionado aplicado.

clear

clear()

Borra todos los elementos de la lista, haciéndola de nuevo igual a la lista vacía.

Esto no modifica la capacidad de las asignaciones internas, por lo que es posible que las operaciones posteriores de suma o resta derivadas de la composición no requieran una reasignación.

Ejemplos

>>> pauli_list = PhasedQubitSparsePauliList.from_list(["IXXXYY", "ZZYZII"])
>>> pauli_list.clear()
>>> assert pauli_list == PhasedQubitSparsePauliList.empty(pauli_list.num_qubits)

copy

copy()

Consigue una copia de esta lista de qubit sparse Pauli.

Ejemplos

>>> phased_qubit_sparse_pauli_list = PhasedQubitSparsePauliList.from_list(["IXZXYYZZ", "ZXIXYYZZ"])
>>> assert phased_qubit_sparse_pauli_list == phased_qubit_sparse_pauli_list.copy()
>>> assert phased_qubit_sparse_pauli_list is not phased_qubit_sparse_pauli_list.copy()

empty

static empty(num_qubits)

Obtiene la lista vacía para un número dado de qubits.

La lista vacía no contiene ningún elemento, y es el elemento de identidad para unir dos PhasedQubitSparsePauliList instancias.

Ejemplos

Obtener la lista vacía en 100 qubits:

>>> PhasedQubitSparsePauliList.empty(100)
<PhasedQubitSparsePauliList with 0 elements on 100 qubits: []>

from_label

static from_label(label, /)

Construye una lista con un solo término 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

>>> PhasedQubitSparsePauliList.from_label("IIIIXZI")
<PhasedQubitSparsePauliList with 1 element on 7 qubits: [X_2 Z_1]>
>>> label = "IYXZI"
>>> pauli = Pauli(label)
>>> assert PhasedQubitSparsePauliList.from_label(label) == PhasedQubitSparsePauliList.from_pauli(pauli)
Consulte también

from_list()

Una generalización de este método que construye una lista a partir de múltiples etiquetas.

from_list

static from_list(iter, /, *, num_qubits=None)

Construir una lista Pauli de qubits dispersos en fase a partir de una lista de etiquetas densas.

Esto es análogo a SparsePauliOp.from_list(). En este formulario denso, debe suministrar todas las identidades explícitamente en cada etiqueta.

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

  • iter (list[str]) – Lista de etiquetas de cadenas densas.
  • num_qubits (int | None) – No es necesario especificarlo si se está seguro de que iter no es una secuencia vacía, ya que puede deducirse de las longitudes de las etiquetas. Si iter puede estar vacío, debe especificar este argumento para desambiguar sobre cuántos qubits actúan los operadores. Si se indica y iter no está vacío, el valor debe coincidir con la longitud de las etiquetas.

Ejemplos

Construir una lista Pauli dispersa de qubits a partir de una lista de etiquetas:

>>> PhasedQubitSparsePauliList.from_list([
...     "IIIXX",
...     "IIYYI",
...     "IXXII",
...     "ZZIII",
... ])
<PhasedQubitSparsePauliList with 4 elements on 5 qubits:
    [X_1 X_0, Y_2 Y_1, X_3 X_2, Z_4 Z_3]>

Utilice num_qubits para desambiguar entradas potencialmente vacías:

>>> PhasedQubitSparsePauliList.from_list([], num_qubits=10)
<PhasedQubitSparsePauliList with 0 elements on 10 qubits: []>

Este método es equivalente a las llamadas a from_sparse_list() con el campo explícito qubit-arguments establecido en enteros decrecientes:

>>> labels = ["XYXZ", "YYZZ", "XYXZ"]
>>> from_list = PhasedQubitSparsePauliList.from_list(labels)
>>> from_sparse_list = PhasedQubitSparsePauliList.from_sparse_list([
...     (label, (3, 2, 1, 0))
...     for label in labels
... ])
>>> assert from_list == from_sparse_list
Consulte también

from_sparse_list()

Construye la lista a partir de etiquetas sin identidades explícitas, pero con los qubits a los que se aplica cada término de operador single-qubit enumerados explícitamente.

from_pauli

static from_pauli(pauli, /)

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

La lista de salida tendrá un único término. Obsérvese que la fase se suprime.

Parámetros

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

Ejemplos

>>> label = "IYXZI"
>>> pauli = Pauli(label)
>>> PhasedQubitSparsePauliList.from_pauli(pauli)
<PhasedQubitSparsePauliList with 1 element on 5 qubits: [Y_3 X_2 Z_1]>
>>> assert PhasedQubitSparsePauliList.from_label(label) == PhasedQubitSparsePauliList.from_pauli(pauli)

from_phased_qubit_sparse_paulis

static from_phased_qubit_sparse_paulis(obj, /, num_qubits=None)

Construir un PhasedQubitSparsePauliList a partir de instancias PhasedQubitSparsePauli individuales.

Todos los términos deben tener el mismo número de qubits. Si se proporciona, el argumento num_qubits debe coincidir con los términos.

Parámetros

  • obj (Iterable[PhasedQubitSparsePauli]) – Iterable de términos individuales a partir de los cuales construir la lista.
  • num_qubits (int | None) – El número de qubits sobre los que deben actuar los elementos de la lista. Normalmente se deduce de la entrada, pero puede indicarse explícitamente para manejar el caso de un iterable vacío.

Devuelve

La lista correspondiente.

from_sparse_list

static from_sparse_list(iter, /, num_qubits)

Construye una lista Pauli dispersa de qubits en fase a partir de una lista de etiquetas y los qubits a los que se aplica cada elemento.

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

Los campos "labels" e "indices" de las tuplas se asocian comprimiéndolos. Por ejemplo, esto significa que una llamada a from_list() puede convertirse a la forma utilizada por este método estableciendo el campo "índices" de cada triple en (num_qubits-1, ..., 1, 0).

Parámetros

  • iter (list[tuple[int, str, Sequence[int]]]) – tuplas de exponentes de fase, etiquetas 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úan los operadores de la lista.

Ejemplos

Construye una lista sencilla:

>>> PhasedQubitSparsePauliList.from_sparse_list(
...     [(0, "ZX", (1, 4)), (1, "YY", (0, 3))],
...     num_qubits=5,
... )
<PhasedQubitSparsePauliList with 2 elements on 5 qubits: [X_4 Z_1, (-i)Y_3 Y_0]>

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

>>> labels = ["XYXZ", "YYZZ", "XYXZ"]
>>> from_list = PhasedQubitSparsePauliList.from_list(labels)
>>> from_sparse_list = PhasedQubitSparsePauliList.from_sparse_list([
...     (label, (3, 2, 1, 0))
...     for label in labels
... ])
>>> assert from_list == from_sparse_list
Consulte también

to_sparse_list()

El reverso de este método.

to_pauli_list

to_pauli_list()

Devuelve un PauliList que representa la misma lista de Paulis.

to_sparse_list

to_sparse_list()

Expresa la lista en términos de un formato de lista dispersa.

Esto puede verse como una contraoperación de PhasedQubitSparsePauliList.from_sparse_list()sin embargo, no se garantiza que el orden de los términos sea el mismo después de un viaje de ida y vuelta a una lista dispersa.

Ejemplos

>>> phased_qubit_sparse_list = PhasedQubitSparsePauliList.from_list(["IIXIZ", "IIZIX"])
>>> reconstructed = PhasedQubitSparsePauliList.from_sparse_list(phased_qubit_sparse_list.to_sparse_list(), qubit_sparse_list.num_qubits)
Consulte también

from_sparse_list()

El constructor que puede interpretar estas listas.

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