Skip to main content
IBM Quantum Platform

PhasedQubitSparsePauli

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

GitHub

Bases: object

Um operador Pauli armazenado em um formato esparso de qubit.


Representação

Um operador Pauli é um produto tensorial de operadores Pauli de um único qubit da 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\} e um número inteiro mm chamado de expoente de fase. A representação interna de a PhasedQubitSparsePauli armazena apenas os operadores Pauli de um único qubit sem identidade.

Internamente, cada operador Pauli de um único qubit é armazenado com um valor numérico. Consulte a documentação de QubitSparsePauli para obter uma descrição da formatação do valor numérico associado a cada Pauli, bem como as descrições das funções paulis e indices que armazenam cada Pauli e seu índice de qubit associado.

Além disso, a fase do operador pode ser recuperada por meio do atributo phase que retorna o expoente da fase do grupo, correspondendo ao comportamento do mesmo atributo em Pauli.


Construção

PhasedQubitSparsePauli define vários construtores. O construtor padrão tentará delegar a um dos construtores mais específicos, com base no tipo de entrada. Você sempre pode usar os construtores específicos para ter mais controle sobre a construção.

Método
Resumo
from_label()Converta um rótulo de string denso em um PhasedQubitSparsePauli.
from_sparse_label()Crie um PhasedQubitSparsePauli a partir de uma tupla de uma fase, um rótulo de cadeia esparsa e os qubits aos quais eles se aplicam.
from_pauli()Elevar um único Pauli em um PhasedQubitSparsePauli.
from_raw_parts()Crie a lista a partir das matrizes de dados brutos e da fase.

__new__

__new__(data, /, num_qubits=None)

O construtor padrão do QubitSparsePauli.

Isso delega a um dos métodos de construtor de conversão explícitos, com base no tipo do argumento data . Se num_qubits for fornecido e o construtor implícito pelo tipo de data não aceitar um número, o número inteiro fornecido deverá corresponder à entrada.

Parâmetros

  • data - O tipo de dados da entrada. Pode ser outro QubitSparsePaulie, nesse caso, a entrada é copiada, ou pode ser um formato válido para from_label() ou from_sparse_label().
  • num_qubits (int|None) – Número opcional de qubits para o operador. Para a maioria das entradas de dados, isso pode ser inferido e não precisa ser passado. Isso só é necessário para o formato de rótulo esparso. Se for fornecido desnecessariamente, deverá corresponder à entrada de dados.

Atributos

indices

Visualização somente de leitura dos índices de cada termo de qubit único sem identidade.

Os índices sempre estarão em ordem ordenada.

num_qubits

O número de qubits em que o termo é definido.

paulis

Visualização somente de leitura dos termos individuais de um único qubit.

Os únicos valores válidos na matriz são aqueles com um Pauli correspondente.

phase

Visualização somente de leitura da fase.


Métodos

commutes

commutes(other)

Verifique se self` comuta com outro pauli esparso de qubit em fase.

Parâmetros

other (PhasedQubitSparsePauli) – o Pauli esparso do qubit em fase para verificar a comutação.

compose

compose(other)

Composição com outro PhasedQubitSparsePauli.

Parâmetros

other (PhasedQubitSparsePauli) – o qubit esparso Pauli para compor.

copy

copy()

Obtenha uma cópia deste termo.

from_label

static from_label(label, /)

Constrói a partir de um rótulo de string denso.

O rótulo deve ser uma sequência do alfabeto 'IXYZ'. O rótulo é interpretado de forma análoga a uma cadeia de bits. Em outras palavras, a letra mais à direita está associada ao qubit 0, e assim por diante. Isso é o mesmo que os rótulos de Pauli e SparsePauliOp.

Parâmetros

label (str) – o rótulo denso.

Exemplos

>>> 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 um PhasedQubitSparsePauli a partir de uma única Pauli instância.

Parâmetros

pauli (Pauli) – a única Pauli para converter.

Exemplos

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

Construa um PhasedQubitSparsePauli a partir de matrizes Numpy brutas que correspondem à representação de dados necessária descrita na documentação em nível de classe.

Os dados de cada matriz são copiados em alocações de espaço Rust novas e expansíveis.

Parâmetros

  • num_qubits - número de qubits em que o operador atua.
  • paulis - lista dos termos de um único qubit. Esse deve ser um array Numpy com dtype uint8 (que é compatível com Pauli).
  • índices - lista ordenada dos qubits aos quais cada termo de qubit único corresponde. Esse deve ser um array Numpy com dtype uint32.
  • phase - O expoente de fase do operador.

Exemplos

Construa um operador ZZ atuando no 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)

Constrói um Pauli esparso de qubit em fase a partir de um rótulo esparso, fornecido como uma tupla de um int para o expoente de fase, uma cadeia de Paulis e os índices dos qubits correspondentes.

Isso é análogo a SparsePauliOp.from_sparse_list().

Parâmetros

  • sparse_label (tuple[int, str, Sequence[int]]) – e os qubits aos quais cada termo de qubit único se aplica.
  • num_qubits (int) – o número de qubits em que o operador atua.

Exemplos

Construa um Pauli simples:

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

Esse método pode replicar o comportamento de from_label()se o campo qubit-arguments da tupla for definido como números inteiros decrescentes:

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

Obtenha o operador de identidade para um determinado número de qubits.

Exemplos

Obtenha a identidade em 100 qubits:

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

to_pauli

to_pauli()

Retorna um Pauli representando o mesmo Pauli.

to_phased_qubit_sparse_pauli_list

to_phased_qubit_sparse_pauli_list()

Converta esse Pauli em um único elemento PhasedQubitSparsePauliList.

Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.