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

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

Werte, die den Sektor bestimmen.

Typ

list[ int ] oder Keine

tol

Die Toleranzschwelle für das Ignorieren reeller und komplexer Anteile eines Koeffizienten.

Typ

Gleitkomma

Referenzen

[1] : Bravyi, S., et al, "Verjüngung von Qubits zur Simulation von fermionischen Hamiltonianern"

arXiv:1701.08213

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)

GitHub

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

SparsePauliOp

find_z2_symmetries

classmethod find_z2_symmetries(operator)

GitHub

Findet Z2 Pauli-Symmetrien von a SparsePauliOp.

Rückgabe

Eine Z2Symmetries Instanz.

Parameter

operator (SparsePauliOp)

Rückgabetyp

Z2Symmetries

is_empty

is_empty()

GitHub

Prüfen Sie, ob die z2_symmetries leer ist oder nicht.

Rückgabe

Leer oder nicht leer.

Rückgabetyp

bool

taper

taper(operator)

GitHub

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)

GitHub

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

War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.