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

El convertidor de simetría $Z_2$ identifica simetrías del hamiltoniano del problema y las utiliza para proporcionar una representación cónica -más eficiente- de los operadores como Paulis para este problema. Para cada simetría identificada, se puede eliminar un qubit en la representación de Pauli a costa de tener que probar dos sectores de simetría (para los dos posibles valores propios -valores de conicidad- de la simetría). En determinados problemas, como la búsqueda del estado fundamental del operador principal, se puede identificar a priori el sector de simetría de la solución y reducir así eficazmente la carga computacional.

Los siguientes atributos pueden leerse y actualizarse una vez construido el objeto Z2Symmetries .

tapering_values

Valores que determinan el sector.

Type

list[ int ] o Ninguno

tol

El umbral de tolerancia para ignorar las partes reales y complejas de un coeficiente.

Type

Float

Referencias

[1] : Bravyi, S., et al, "Tapering off qubits to simulate fermionic Hamiltonians" (Reducción de qubits para simular hamiltonianos fermiónicos)

arXiv:1701.08213

Parámetros

  • symmetries (Iterable[Pauli]) – Objeto que representa la lista de simetrías $Z_2$. Corresponden a los generadores del grupo de simetría $langle tau_1, tau_2dots rangle>$.
  • sq_paulis (Iterable[Pauli]) – Objeto que representa la lista de operadores de Pauli single-qubit $sigma^x_ {q(i)} $ anticonmutantes con la simetría $tau_i$ y conmutantes con todas las demás simetrías $tau_ {jneq i} $. Estos operadores se utilizan para construir los operadores unitarios de Clifford.
  • sq_list (Iterable[int]) – La lista de índices $q(i)$ de los operadores de Pauli de un solo qubit utilizados para construir los operadores de Clifford.
  • tapering_values (Iterable[int] | None) – Lista de valores propios que determinan el sector de simetría para cada simetría.
  • tol (float) – Umbral de tolerancia para ignorar las partes reales y complejas de un coeficiente.

Eleva

QiskitError - Paulis inválido. Las listas de simetrías, paulis de soporte de single-qubit paulis y valores de conicidad deben tener la misma longitud. Esta longitud es el número de simetrías aplicadas y se traduce directamente en el número de qubits eliminados.


Atributos

cliffords

Consigue operadores clifford, construidos en base a simetrías y single-qubit X.

Devuelve

Una lista de unitarios utilizados para diagonalizar el Hamiltoniano.

settings

Devuelve los ajustes del operador.

sq_list

Devuelve la lista sq.

sq_paulis

Volver a sq paulis.

symmetries

Devuelve las simetrías.


Métodos

convert_clifford

convert_clifford(operator)

GitHub

Este método opera la primera parte del ahusamiento. Convierte el operador componiéndolo con los unitarios clifford definidos en la simetría actual.

Parámetros

operator (SparsePauliOp) – El operador que se va a cintar.

Devuelve

SparsePauliOp correspondiente al operador convertido.

Tipo de retorno

SparsePauliOp

find_z2_symmetries

classmethod find_z2_symmetries(operator)

GitHub

Encuentra Z2 simetrías de tipo Pauli de a SparsePauliOp.

Devuelve

Una instancia de Z2Symmetries .

Parámetros

operator (SparsePauliOp)

Tipo de retorno

Z2Symmetries

is_empty

is_empty()

GitHub

Compruebe si z2_symmetries está vacío.

Devuelve

Vacío o no.

Tipo de retorno

bool

taper

taper(operator)

GitHub

Conicidad de un operador basado en la información de z2_symmetries y el sector definido por tapering_values. Devuelve operador si el objeto de simetría está vacío.

El tapering es un algoritmo de dos pasos que primero convierte el operador en un SparsePauliOp con los mismos valores propios pero en el que algunos qubits sólo actúan con los operadores de Pauli I o X. El número M de estos qubits redundantes es igual al número M de simetrías identificadas.

El segundo paso de la reducción consiste en sustituir estos qubits por los posibles valores propios de la correspondiente X de Pauli, dando 2^M nuevos operadores con M menos qubits. Si previamente se identificó un sector de valores propios para la solución, entonces esto se reduce a 1 nuevo operador con M qubits menos.

Parámetros

operator (SparsePauliOp) – El operador que se va a cintar.

Devuelve

[SparsePauliOp]; en caso contrario, SparsePauliOp.

Tipo de retorno

Si tapering_values es None

taper_clifford

taper_clifford(operator)

GitHub

Operar la segunda parte del ahusamiento. Esta función asume que los operadores de entrada ya han sido transformados utilizando convert_clifford(). Los qubits redundantes debidos a las simetrías se eliminan y se sustituyen por sus dos posibles valores propios.

Parámetros

operator (SparsePauliOp) – Operador parcialmente cónico resultante de una llamada a convert_clifford().

Devuelve

[SparsePauliOp]; en caso contrario, SparsePauliOp.

Tipo de retorno

Si tapering_values es None

¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.