Z2Symmetries
class qiskit.quantum_info.Z2Symmetries(symmetries, sq_paulis, sq_list, tapering_values=None, *, tol=1e-14)
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
tol
O limite de tolerância para ignorar as partes reais e complexas de um coeficiente.
Tipo
Referências
[1] : Bravyi, S., et al, "Tapering off qubits to simulate fermionic Hamiltonians" (Eliminação de qubits para simular Hamiltonianos fermiônicos)
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)
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
find_z2_symmetries
classmethod find_z2_symmetries(operator)
Encontra Z2 simetrias do tipo Pauli de um SparsePauliOp.
Retorna
Uma instância do Z2Symmetries .
Parâmetros
operator (SparsePauliOp)
Tipo de retorno
is_empty
is_empty()
Verifique se o site z2_symmetries está vazio ou não.
Retorna
Vazio ou não.
Tipo de retorno
taper
taper(operator)
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)
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