Pauli
class qiskit.quantum_info.Pauli(data=None)
Bases: BasePauli
Operador Pauli de N-qubit.
Essa classe representa um operador do grupo Pauli completo de -qubit
em que e são matrizes de Pauli de um único qubit:
Inicialização
Um objeto Pauli pode ser inicializado de várias maneiras:
Pauli(obj)em que
objé uma cadeia de Pauli,PauliouScalarOpou um operador Pauli ouQuantumCircuitcontendo apenas Pauli gates.
Pauli((z, x, phase))em que
zexsão booleanosnumpy.ndarraysephaseé um número inteiro em[0, 1, 2, 3].
Pauli((z, x))equivalente a
Pauli((z, x, 0))com fase trivial.
Representação de strings
Um -qubit Pauli pode ser representado por uma string que consiste em caracteres de ['I', 'X', 'Y', 'Z'] e, opcionalmente, um coeficiente de fase em ['', '-i', '-', 'i']. Por exemplo: 'XYZ' ou '-iZIZ'.
Na representação em cadeia, qubit-0 corresponde ao caractere Pauli mais à direita e qubit- ao caractere Pauli mais à esquerda. Por exemplo, 'XYZ' representa com 'Z' em qubit-0, 'Y' em qubit-1 e 'X' em qubit-2.
A representação da cadeia de caracteres pode ser convertida em um Pauli usando a inicialização da classe (Pauli('-iXYZ')). Um objeto Pauli pode ser convertido de volta para a representação de string usando o método to_label() ou str(pauli).
Usar str para converter um Pauli em uma string truncará a string retornada para um grande número de qubits, enquanto to_label() retornará a string completa sem truncamento. O comprimento de truncamento padrão é de 50 caracteres. O valor padrão pode ser alterado com a definição do atributo class __truncate__ como um valor inteiro. Se definido como 0 , não será realizado nenhum truncamento.
Representação de matrizes
A estrutura de dados interna de um -qubit Pauli é composta por dois vetores booleanos de comprimento , e um inteiro que define o operador Pauli
O -ésimo qubit corresponde à -ésima entrada nas matrizes e
onde z[k] = P.z[k], x[k] = P.x[k] respectivamente.
Os arrays e podem ser acessados e atualizados usando os comandos z e x respectivamente. O número inteiro da fase pode ser acessado e atualizado usando a propriedade phase propriedade.
Representação do operador de matriz
Os Pauli's podem ser convertidos para Operator usando o método to_operator() , ou para uma matriz complexa densa ou esparsa usando o método to_matrix() método.
Acesso a dados
O qubit individual Paulis pode ser acessado e atualizado usando o operador [] , que aceita inteiros, listas ou fatias para selecionar subconjuntos de Paulis. Observe que a seleção de subconjuntos de Pauli descartará a fase do Pauli atual.
Por exemplo:
from qiskit.quantum_info import Pauli
P = Pauli('-iXYZ')
print('P[0] =', repr(P[0]))
print('P[1] =', repr(P[1]))
print('P[2] =', repr(P[2]))
print('P[:] =', repr(P[:]))
print('P[::-1] =', repr(P[::-1]))Inicialize a Pauli.
Ao usar os dados de entrada da matriz simpática, os argumentos z e x devem ser fornecidos; no entanto, o primeiro argumento (z) pode ser usado sozinho para o rótulo da cadeia de caracteres, operador Pauli ou ScalarOp dados de entrada.
Parâmetros
data (str ortuple orPauli orScalarOp) – dados de entrada para Pauli. Se a entrada for uma tupla, deverá ter o formato (z, x) ou (z, x, phase) , em que z e x são matrizes Numpy booleanas e phase é um número inteiro de . Se a entrada for uma string, deverá ser uma concatenação de uma phase e uma string Pauli (por exemplo, 'XYZ', '-iZIZ') onde uma string de fase é uma combinação de no máximo três caracteres de ['+', '-', ''], ['1', ''] e ['i', 'j', ''] nessa ordem, por exemplo, '', '-1j' enquanto uma string Pauli é 1 ou mais caracteres de 'I', 'X', 'Y', ou 'Z', por exemplo, 'Z', 'XIYY'.
Aumentos
QiskitError - se a matriz de entrada tiver formato inválido.
Atributos
dim
Retorna uma tupla (input_shape, output_shape).
name
Identificador de cadeia de caracteres exclusivo para o tipo de operação.
num_clbits
Número de bits clássicos.
num_qubits
Retorna o número de qubits se for um operador N-qubit ou None caso contrário.
phase
Retorna o expoente de fase do grupo para o Pauli.
qargs
Retorna os qargs do operador.
settings
Configurações de retorno.
x
O vetor x para o Pauli.
z
O vetor z para o Pauli.
Métodos
adjoint
anticommutes
anticommutes(other, qargs=None)
Retorna True se o outro Pauli for incompatível com o próprio.
Parâmetros
- other (Pauli) – outro operador de Pauli.
- qargs (list) – qubits aos quais aplicar o produto de pontos (padrão: Nenhum).
Retorna
Verdadeiro se os Pauli's forem anticomutantes, Falso se forem comutantes.
Tipo de retorno
apply_layout
apply_layout(layout, num_qubits=None)
Aplique um layout de transpilador a isso Pauli
Parâmetros
- layout (TranspileLayout |list[int] | None) – Ou um
TranspileLayoutuma lista de números inteiros ou None. Se o layout e o num_qubits não forem nenhum, uma cópia do operador será retornada. - num_qubits (int | None) – O número de qubits para os quais o operador deve ser expandido. Se não for fornecido, se
layoutfor umTranspileLayouto número de qubits do circuito de saída do transpilador será usado por padrão. Selayoutfor uma lista de números inteiros, a permutação especificada será aplicada sem nenhuma expansão. Se o layout for None (Nenhum), o operador será expandido para o número de qubits fornecido.
Retorna
Um novo Pauli com o layout fornecido aplicado
Tipo de retorno
commutes
commutes(other, qargs=None)
Retorna True se o Pauli comuta com outro.
Parâmetros
- other (Pauli orPauliList) – outro operador de Pauli.
- qargs (list) – qubits aos quais aplicar o produto de pontos (padrão: Nenhum).
Retorna
Verdadeiro se os Pauli's se deslocam, Falso se eles se opõem ao deslocamento.
Tipo de retorno
compose
compose(other, qargs=None, front=False, inplace=False)
Retorna a composição do operador com outro Pauli.
Parâmetros
- other (Pauli) – um objeto Pauli.
- qargs (list or None) – qubits nos quais aplicar o produto escalar (padrão: None).
- front (bool) – Se True, compor usando o operador multiplicação à direita, em vez de multiplicação à esquerda [, padrão: False].
- inplace (bool) – Se for True, atualize no local (padrão: False).
Retorna
A Pauli composta.
Tipo de retorno
Aumentos
QiskitError - se outro não puder ser convertido em um operador ou tiver dimensões incompatíveis para os subsistemas especificados.
Por padrão, a composição (&) é definida como multiplicação de matriz à esquerda para operadores de matriz, enquanto dot() é definido como multiplicação de matriz à direita. Ou seja, A & B == A.compose(B) é equivalente a B.dot(A) quando A e B são do mesmo tipo.
A configuração do kwarg front=True muda isso para multiplicação de matriz à direita e é equivalente ao método dot() método A.dot(B) == A.compose(B, front=True).
conjugate
copy
delete
delete(qubits)
Retorna um Pauli com qubits excluídos.
Parâmetros
qubits (int orlist) – qubits para excluir de Pauli.
Retorna
o Pauli resultante com os qubits especificados removidos.
Tipo de retorno
Aumentos
QiskitError - se ind estiver fora dos limites do tamanho da matriz ou do número de qubits.
dot
dot(other, qargs=None, inplace=False)
Retorna o operador multiplicado à direita self * other.
Parâmetros
- other (Pauli) – um objeto operador.
- qargs (list or None) – qubits nos quais aplicar o produto escalar (padrão: None).
- inplace (bool) – Se for True, atualize no local (padrão: False).
Retorna
O operador self * other.
Tipo de retorno
equiv
equiv(other)
Retorna True se os Pauli's forem equivalentes até a fase de grupo.
Parâmetros
other (Pauli) – um objeto operador.
Retorna
É verdade se os Pauli's forem equivalentes até a fase de grupo.
Tipo de retorno
evolve
evolve(other, qargs=None, frame='h')
Executa a evolução da imagem de Heisenberg (padrão) ou de Schrödinger do Pauli por um Clifford e retorna o Pauli evoluído.
A evolução da imagem de Schrödinger pode ser escolhida passando o parâmetro frame='s'. Essa opção produz um cálculo mais rápido.
A imagem de Heisenberg evolui o Pauli como .
A imagem de Schrödinger evolui o Pauli como .
Parâmetros
- other (Pauli orClifford orQuantumCircuit) – O operador de Clifford para evoluir.
- qargs (list) – uma lista de qubits aos quais aplicar o Clifford.
- frame (string) –
'h'para Heisenberg (padrão) ou's'para a estrutura de Schrödinger.
Retorna
o Pauli (imagem de Heisenberg) ou o Pauli (imagem de Schrödinger).
Tipo de retorno
Aumentos
QiskitError - se o número Clifford de qubits e qargs não corresponder.
expand
expand(other)
Retorna o produto tensorial de ordem inversa com outro Pauli.
Parâmetros
other (Pauli) – um objeto Pauli.
Retorna
o produto tensorial , onde
é o Pauli atual, e é o outro Pauli.
Tipo de retorno
input_dims
input_dims(qargs=None)
Retorna uma tupla de dimensão de entrada para os subsistemas especificados.
insert
insert(qubits, value)
Insira um Pauli em um valor de qubit específico.
Parâmetros
Retorna
o Pauli resultante com as entradas inseridas.
Tipo de retorno
Aumentos
QiskitError - se os qubits de inserção forem inválidos.
inverse
output_dims
output_dims(qargs=None)
Retorna uma tupla de dimensão de saída para os subsistemas especificados.
power
power(n)
Retorna a composição de um operador consigo mesmo n vezes.
Parâmetros
n (int) – o número de vezes para compor com o self ( n>0 ).
Retorna
o operador composto n vezes.
Tipo de retorno
Aumentos
QiskitError - se as dimensões de entrada e saída do operador não forem iguais ou se a potência não for um número inteiro positivo.
reshape
reshape(input_dims=None, output_dims=None, num_qubits=None)
Retorna uma cópia superficial com dimensões reformuladas do subsistema de entrada e saída.
Parâmetros
- input_dims (None or tuple) – novas dimensões de entrada do subsistema. Se for None (Nenhum), os dims de entrada originais serão preservados [Padrão: Nenhum].
- output_dims (None or tuple) – novas dimensões de saída do subsistema. Se for None (Nenhum), os dims de saída originais serão preservados [Padrão: Nenhum].
- num_qubits (None or int) – remodelar para um operador N-qubit [Padrão: Nenhum].
Retorna
retorna self com dimensões de entrada e saída remodeladas.
Tipo de retorno
BaseOperator
Aumentos
QiskitError - se o tamanho combinado de todas as dimensões de entrada do subsistema ou de saída do subsistema não for constante.
set_truncation
classmethod set_truncation(val)
Defina o número máximo de caracteres Pauli a serem exibidos antes do truncamento.
Parâmetros
val (int) – o número de caracteres.
O truncamento será desativado se o valor de truncamento for definido como 0.
tensor
tensor(other)
Retorna o produto tensorial com outro Pauli.
Parâmetros
other (Pauli) – um objeto Pauli.
Retorna
**O produto tensorial , onde **
é o Pauli atual, e é o outro Pauli.
Tipo de retorno
O produto tensor pode ser obtido usando o operador binário ^ . Portanto, a.tensor(b) é equivalente a a ^ b.
to_instruction
to_label
to_label()
Converte um Pauli em um rótulo de cadeia de caracteres.
A diferença entre to_label e __str__() é que este último trunca a saída quando há um grande número de qubits.
Retorna
o rótulo da cadeia de Pauli.
Tipo de retorno
to_matrix
to_matrix(sparse=False)
Converta em uma matriz Numpy ou em uma matriz CSR esparsa.
Parâmetros
sparse (bool) – se True retornar matrizes CSR esparsas; caso contrário, retornar matrizes Numpy densas (padrão: False).
Retorna
A matriz de Pauli.
Tipo de retorno