PhasedQubitSparsePauli
class qiskit.quantum_info.PhasedQubitSparsePauli(data, /, num_qubits=None)
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 , para e um número inteiro 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 parafrom_label()oufrom_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 comPauli). - í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 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_labelidentity
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.