Z2Symmetries
class qiskit.quantum_info.Z2Symmetries(symmetries, sq_paulis, sq_list, tapering_values=None, *, tol=1e-14)
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
tol
Referencias
[1] : Bravyi, S., et al, "Tapering off qubits to simulate fermionic Hamiltonians" (Reducción de qubits para simular hamiltonianos fermiónicos)
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)
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
find_z2_symmetries
classmethod find_z2_symmetries(operator)
Encuentra Z2 simetrías de tipo Pauli de a SparsePauliOp.
Devuelve
Una instancia de Z2Symmetries .
Parámetros
operator (SparsePauliOp)
Tipo de retorno
is_empty
taper
taper(operator)
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)
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