Z2Symmetries
class qiskit.quantum_info.Z2Symmetries(symmetries, sq_paulis, sq_list, tapering_values=None, *, tol=1e-14)
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
tol
Riferimenti
[1] : Bravyi, S., et al, "Tapering off dei qubit per simulare gli hamiltoniani fermionici"
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)
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
find_z2_symmetries
classmethod find_z2_symmetries(operator)
Trova Z2 simmetrie di tipo Pauli di un SparsePauliOp.
Risultati
Un'istanza di Z2Symmetries .
Parametri
operator (SparsePauliOp)
Tipo di restituzione
is_empty
is_empty()
Controllare che il sito z2_symmetries sia vuoto o meno.
Risultati
Vuoto o meno.
Tipo di restituzione
taper
taper(operator)
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)
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