PhasedQubitSparsePauli
class qiskit.quantum_info.PhasedQubitSparsePauli(data, /, num_qubits=None)
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 , para y un entero 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 parafrom_label()ofrom_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 conPauli). - í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 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_labelidentity
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.