Skip to main content
IBM Quantum Platform

Z2Symmetries

class qiskit.quantum_info.Z2Symmetries(symmetries, sq_paulis, sq_list, tapering_values=None, *, tol=1e-14)

GitHub

Bases: object

O conversor de simetria $Z_2$ identifica as simetrias do hamiltoniano do problema e as utiliza para fornecer uma representação cônica - mais eficiente - dos operadores como Paulis para esse problema. Para cada simetria identificada, um qubit pode ser eliminado na representação de Pauli ao custo de ter que testar dois setores de simetria (para os dois possíveis valores próprios - valores de afilamento - da simetria). Em determinados problemas, como a descoberta do estado fundamental do operador principal, é possível identificar a priori o setor de simetria da solução e, assim, reduzir efetivamente a sobrecarga computacional.

Os atributos a seguir podem ser lidos e atualizados depois que o objeto Z2Symmetries tiver sido construído.

tapering_values

Valores que determinam o setor.

Tipo

list[ int ] ou None

tol

O limite de tolerância para ignorar as partes reais e complexas de um coeficiente.

Tipo

Valor flutuante

Referências

[1] : Bravyi, S., et al, "Tapering off qubits to simulate fermionic Hamiltonians" (Eliminação de qubits para simular Hamiltonianos fermiônicos)

arXiv:1701.08213

Parâmetros

  • symmetries (Iterable[Pauli]) – Objeto que representa a lista de $Z_2$ simetrias. Eles correspondem aos geradores do grupo de simetria $langle tau_1, tau_2dots rangle>$.
  • sq_paulis (Iterable[Pauli]) – Objeto que representa a lista de Pauli de um único qubit $sigma^x_ {q(i)} $ anticomutante com a simetria $tau_i$ e comutante com todas as outras simetrias $tau_ {jneq i} $. Esses operadores são usados para construir os operadores unitários de Clifford.
  • sq_list (Iterable[int]) – A lista de índices $q(i)$ dos operadores de Pauli de um único qubit usados para criar os operadores de Clifford.
  • tapering_values (Iterable[int] | None) – Lista de valores próprios que determinam o setor de simetria para cada simetria.
  • tol (float) – Limite de tolerância para ignorar partes reais e complexas de um coeficiente.

Aumentos

QiskitError - Paulis inválido. As listas de simetrias, paulis de suporte de qubit único e valores de afunilamento devem ter o mesmo comprimento. Esse comprimento é o número de simetrias aplicadas e se traduz diretamente no número de qubits eliminados.


Atributos

cliffords

Obtenha operadores clifford, construídos com base em simetrias e em um único qubit X.

Retorna

Uma lista de unidades usadas para diagonalizar o Hamiltoniano.

settings

Retornar as configurações do operador.

sq_list

Retorna a lista sq.

sq_paulis

Retornar sq paulis.

symmetries

Retornar simetrias.


Métodos

convert_clifford

convert_clifford(operator)

GitHub

Esse método opera a primeira parte do afunilamento. Ele converte o operador compondo-o com os unitários de clifford definidos na simetria atual.

Parâmetros

operator (SparsePauliOp) – A operadora a ser cravada.

Retorna

SparsePauliOp correspondente ao operador convertido.

Tipo de retorno

SparsePauliOp

find_z2_symmetries

classmethod find_z2_symmetries(operator)

GitHub

Encontra Z2 simetrias do tipo Pauli de um SparsePauliOp.

Retorna

Uma instância do Z2Symmetries .

Parâmetros

operator (SparsePauliOp)

Tipo de retorno

Z2Symmetries

is_empty

is_empty()

GitHub

Verifique se o site z2_symmetries está vazio ou não.

Retorna

Vazio ou não.

Tipo de retorno

bool

taper

taper(operator)

GitHub

Afunilar um operador com base nas informações de z2_symmetries e no setor definido por tapering_values. Retorna operador se o objeto de simetria estiver vazio.

O afunilamento é um algoritmo de duas etapas que primeiro converte o operador em um operador SparsePauliOp com os mesmos autovalores, mas em que alguns qubits são acionados apenas com os operadores Pauli I ou X. O número M desses qubits redundantes é igual ao número M de simetrias identificadas.

A segunda etapa da redução consiste em substituir esses qubits pelos possíveis valores próprios do Pauli X correspondente, fornecendo 2^M novos operadores com M qubits a menos. Se um setor de valor próprio foi identificado anteriormente para a solução, isso se reduz a um novo operador com M qubits a menos.

Parâmetros

operator (SparsePauliOp) – A operadora a ser cravada.

Retorna

[SparsePauliOp]; caso contrário, SparsePauliOp.

Tipo de retorno

Se tapering_values for None

taper_clifford

taper_clifford(operator)

GitHub

Opere a segunda parte do afunilamento. Essa função pressupõe que os operadores de entrada já tenham sido transformados usando convert_clifford(). Os qubits redundantes devido às simetrias são eliminados e substituídos por seus dois possíveis valores próprios.

Parâmetros

operator (SparsePauliOp) – Operador parcialmente afunilado resultante de uma chamada para convert_clifford().

Retorna

[SparsePauliOp]; caso contrário, SparsePauliOp.

Tipo de retorno

Se tapering_values for None

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