Z2Symmetries
class qiskit.quantum_info.Z2Symmetries(symmetries, sq_paulis, sq_list, tapering_values=None, *, tol=1e-14)
Basen: object
Der $Z_2$ Symmetriekonverter identifiziert Symmetrien aus dem Problem-Hamiltonian und nutzt sie, um eine verjüngte - effizientere - Darstellung von Operatoren als Paulis für dieses Problem zu liefern. Für jede identifizierte Symmetrie kann ein Qubit in der Pauli-Darstellung eliminiert werden, allerdings um den Preis, dass zwei Symmetriesektoren (für die zwei möglichen Eigenwerte - Verjüngungswerte - der Symmetrie) getestet werden müssen. Bei bestimmten Problemen, wie z. B. der Bestimmung des Grundzustands des Hauptoperators, kann man den Symmetriesektor der Lösung a priori identifizieren und so den Rechenaufwand effektiv reduzieren.
Die folgenden Attribute können gelesen und aktualisiert werden, sobald das Objekt Z2Symmetries erstellt wurde.
tapering_values
tol
Die Toleranzschwelle für das Ignorieren reeller und komplexer Anteile eines Koeffizienten.
Typ
Referenzen
[1] : Bravyi, S., et al, "Verjüngung von Qubits zur Simulation von fermionischen Hamiltonianern"
Parameter
- symmetries (Iterable[Pauli]) – Objekt, das die Liste der $Z_2$ Symmetrien darstellt. Diese entsprechen den Generatoren der Symmetriegruppe $langle tau_1, tau_2dots rangle>$.
- sq_paulis (Iterable[Pauli]) – Objekt, das die Liste der Ein-Qubit-Pauli $sigma^x_ {q(i)} $ darstellt, die mit der Symmetrie $tau_i$ antikommutiert und mit allen anderen Symmetrien $tau_ {jneq i} $ kommutiert. Diese Operatoren werden verwendet, um die unitären Clifford-Operatoren zu konstruieren.
- sq_list (Iterable[int]) – Die Liste der Indizes $q(i)$ der Ein-Qubit-Pauli-Operatoren, die zur Bildung der Clifford-Operatoren verwendet werden.
- tapering_values (Iterable[int] | None) – Liste der Eigenwerte, die den Symmetriesektor für jede Symmetrie bestimmen.
- tol (float) – Toleranzschwelle für die Nichtberücksichtigung reeller und komplexer Anteile eines Koeffizienten.
Erhöht
QiskitError – Ungültige Paulis. Die Listen der Symmetrien, der Einzel-Qubit-Pauli-Unterstützungen und der Tapering-Werte müssen gleich lang sein. Diese Länge entspricht der Anzahl der angewendeten Symmetrien und lässt sich direkt auf die Anzahl der eliminierten Qubits umrechnen.
Attribute
cliffords
Erhalten Sie Clifford-Operatoren, die auf Symmetrien und Ein-Qubit-X basieren.
Rückgabe
Eine Liste von Unitarien, die zur Diagonalisierung der Hamiltonfunktion verwendet werden.
settings
Bedienereinstellungen zurückgeben.
sq_list
Rückgabe der sq-Liste.
sq_paulis
Rückkehr sq paulis.
symmetries
Symmetrien zurückgeben.
Methoden
convert_clifford
convert_clifford(operator)
Mit dieser Methode wird der erste Teil der Verjüngung durchgeführt. Es wandelt den Operator um, indem es ihn mit den in der aktuellen Symmetrie definierten Clifford-Unitarien zusammensetzt.
Parameter
operator (SparsePauliOp) – Der zu verjüngende Betreiber.
Rückgabe
SparsePauliOp entsprechend dem umgewandelten Operator.
Rückgabetyp
find_z2_symmetries
classmethod find_z2_symmetries(operator)
Findet Z2 Pauli-Symmetrien von a SparsePauliOp.
Rückgabe
Eine Z2Symmetries Instanz.
Parameter
operator (SparsePauliOp)
Rückgabetyp
is_empty
is_empty()
Prüfen Sie, ob die z2_symmetries leer ist oder nicht.
Rückgabe
Leer oder nicht leer.
Rückgabetyp
taper
taper(operator)
Verjüngung eines Betreibers auf der Grundlage der z2_symmetries info und des durch tapering_values definierten Sektors. Gibt operator zurück, wenn das Symmetrieobjekt leer ist.
Das Tapering ist ein zweistufiger Algorithmus, der zunächst den Operator in einen SparsePauliOp mit denselben Eigenwerten umwandelt, bei dem aber einige Qubits nur mit den Pauli-Operatoren I oder X beaufschlagt werden. Die Anzahl M dieser redundanten Qubits ist gleich der Anzahl M der identifizierten Symmetrien.
Der zweite Schritt der Reduktion besteht darin, diese Qubits durch die möglichen Eigenwerte des entsprechenden Pauli X zu ersetzen, wodurch 2^M neue Operatoren mit M weniger Qubits erhält. Wurde zuvor ein Eigenwertbereich für die Lösung identifiziert, so reduziert sich dieser auf 1 neuen Operator mit M weniger Qubits.
Parameter
operator (SparsePauliOp) – Der zu verjüngende Betreiber.
Rückgabe
[SparsePauliOp]; ansonsten, SparsePauliOp.
Rückgabetyp
Wenn tapering_values keine ist
taper_clifford
taper_clifford(operator)
Führen Sie den zweiten Teil der Verjüngung durch. Diese Funktion geht davon aus, dass die Eingabeoperatoren bereits mit convert_clifford(). Die aufgrund der Symmetrien redundanten Qubits entfallen und werden durch ihre beiden möglichen Eigenwerte ersetzt.
Parameter
operator (SparsePauliOp) – Teilweise verjüngter Operator, der durch einen Aufruf von convert_clifford().
Rückgabe
[SparsePauliOp]; ansonsten, SparsePauliOp.
Rückgabetyp
Wenn tapering_values keine ist