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

Basi: object

Il convertitore di simmetria $Z_2$ identifica le simmetrie dall'hamiltoniana del problema e le utilizza per fornire una rappresentazione affusolata - più efficiente - degli operatori come Paulis per questo problema. Per ogni simmetria identificata, è possibile eliminare un qubit nella rappresentazione di Pauli al costo di dover testare due settori di simmetria (per i due possibili autovalori - valori di conicità - della simmetria). In alcuni problemi, come la ricerca dello stato fondamentale dell'operatore principale, è possibile identificare a priori il settore di simmetria della soluzione e quindi ridurre efficacemente l'overhead computazionale.

I seguenti attributi possono essere letti e aggiornati una volta costruito l'oggetto Z2Symmetries .

tapering_values

Valori che determinano il settore.

Tipo

elenco[ int ] o Nessuno

tol

La soglia di tolleranza per ignorare le parti reali e complesse di un coefficiente.

Tipo

mobile

Riferimenti

[1] : Bravyi, S., et al, "Tapering off dei qubit per simulare gli hamiltoniani fermionici"

arXiv:1701.08213

Parametri

  • symmetries (Iterable[Pauli]) – Oggetto che rappresenta l'elenco delle simmetrie di $Z_2$. Questi corrispondono ai generatori del gruppo di simmetria $angolo tau_1, tau_2dots rangolo>$.
  • sq_paulis (Iterable[Pauli]) – Oggetto che rappresenta l'elenco degli operatori di Pauli a singolo qubit $sigma^x_ {q(i)} $ anticommutanti con la simmetria $tau_i$ e commutanti con tutte le altre simmetrie $tau_ {jneq i} $. Questi operatori vengono utilizzati per costruire gli operatori unitari di Clifford.
  • sq_list (Iterable[int]) – L'elenco degli indici $q(i)$ degli operatori di Pauli a singolo qubit utilizzati per costruire gli operatori di Clifford.
  • tapering_values (Iterable[int] | None) – Elenco degli autovalori che determinano il settore di simmetria per ogni simmetria.
  • tol (float) – Soglia di tolleranza per ignorare le parti reali e complesse di un coefficiente.

Aumenti

QiskitError – Paulis non validi. Gli elenchi delle simmetrie, dei supporti di Pauli a singolo qubit e dei valori di tapering devono avere la stessa lunghezza. Questa lunghezza corrisponde al numero di simmetrie applicate e si traduce direttamente nel numero di qubit eliminati.


Attributi

cliffords

Ottenere operatori clifford, costruiti sulla base di simmetrie e di X a singolo qubit.

Risultati

Un elenco di unitari utilizzati per diagonalizzare l'hamiltoniana.

settings

Restituire le impostazioni dell'operatore.

sq_list

Restituisce l'elenco sq.

sq_paulis

Ritorno sq paulis.

symmetries

Restituire le simmetrie.


Metodi

convert_clifford

convert_clifford(operator)

GitHub

Questo metodo opera la prima parte della conicità. Converte l'operatore componendolo con gli unitari clifford definiti nella simmetria corrente.

Parametri

operator (SparsePauliOp) – L'operatore che deve essere tamponato.

Risultati

SparsePauliOp corrispondente all'operatore convertito.

Tipo di restituzione

SparsePauliOp

find_z2_symmetries

classmethod find_z2_symmetries(operator)

GitHub

Trova Z2 simmetrie di tipo Pauli di un SparsePauliOp.

Risultati

Un'istanza di Z2Symmetries .

Parametri

operator (SparsePauliOp)

Tipo di restituzione

Z2Symmetries

is_empty

is_empty()

GitHub

Controllare che il sito z2_symmetries sia vuoto o meno.

Risultati

Vuoto o meno.

Tipo di restituzione

bool

taper

taper(operator)

GitHub

Rastrema un operatore in base alle informazioni di z2_symmetries e al settore definito da tapering_values. Restituisce l'operatore se l'oggetto simmetria è vuoto.

Il tapering è un algoritmo a due fasi che prima converte l'operatore in un operatore SparsePauliOp con gli stessi autovalori, ma in cui alcuni qubit agiscono solo con gli operatori Pauli I o X. Il numero M di questi qubit ridondanti è pari al numero M di simmetrie identificate.

Il secondo passo della riduzione consiste nel sostituire questi qubit con i possibili autovalori della corrispondente X di Pauli, ottenendo 2^M nuovi operatori con M qubit in meno. Se per la soluzione è stato precedentemente identificato un settore di autovalori, questo si riduce a 1 nuovo operatore con M qubit in meno.

Parametri

operator (SparsePauliOp) – L'operatore che deve essere tamponato.

Risultati

[SparsePauliOp]; altrimenti, SparsePauliOp.

Tipo di restituzione

Se tapering_values è Nessuno

taper_clifford

taper_clifford(operator)

GitHub

Azionare la seconda parte della conicità. Questa funzione presuppone che gli operatori in ingresso siano già stati trasformati utilizzando convert_clifford(). I qubit ridondanti dovuti alle simmetrie vengono eliminati e sostituiti dai loro due possibili autovalori.

Parametri

operator (SparsePauliOp) – Operatore parzialmente rastremato risultante da una chiamata a convert_clifford().

Risultati

[SparsePauliOp]; altrimenti, SparsePauliOp.

Tipo di restituzione

Se tapering_values è Nessuno

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.