Sampling-basierte Krylov-Quantendiagonalisierung (SKQD)
Diese Lektion zur Sampling-basierten Krylov-Quantendiagonalisierung (SKQD) kombiniert Methoden, die in früheren Lektionen erklärt wurden. Sie besteht aus einem einzigen Beispiel, das das Qiskit-Muster-Framework nutzt:
- Schritt 1: Problem auf Quantenschaltkreise und Operatoren abbilden
- Schritt 2: Für Zielhardware optimieren
- Schritt 3: Mit Qiskit-Primitiven ausführen
- Schritt 4: Nachverarbeitung
Ein wichtiger Schritt bei der Sampling-basierten Quantendiagonalisierung ist das Erzeugen qualitativ hochwertiger Vektoren für den Unterraum. In der vorherigen Lektion haben wir den LUCJ-Ansatz verwendet, um Unterraumvektoren für einen Chemie-Hamiltonoperator zu erzeugen. In dieser Lektion werden wir Quanten-Krylov-Zustände[1] verwenden, wie in Lektion 2 besprochen. Zunächst werden wir wiederholen, wie man den Krylov-Raum auf einem Quantencomputer mithilfe von Zeitentwicklungsoperationen erzeugt. Anschließend werden wir daraus sampeln. Wir projizieren den System-Hamiltonoperator auf den gesampelten Unterraum und diagonalisieren ihn, um die Grundzustandsenergie zu schätzen. Unter den in Lektion 2 beschriebenen Annahmen konvergiert der Algorithmus nachweislich und effizient gegen den Grundzustand.
0. Der Krylov-Raum
Zur Erinnerung: Ein Krylov-Raum der Ordnung ist der Raum, der von Vektoren aufgespannt wird, die durch Multiplikation höherer Potenzen einer Matrix bis zu mit einem Referenzvektor entstehen.
Wenn die Matrix der Hamiltonoperator ist, wird der entsprechende Raum als Potenz-Krylov-Raum bezeichnet. Wenn der von dem Hamiltonoperator erzeugte Zeitentwicklungsoperator ist, wird der Raum als unitärer Krylov-Raum bezeichnet. Der Potenz-Krylov-Unterraum kann nicht direkt auf einem Quantencomputer erzeugt werden, da kein unitärer Operator ist. Stattdessen können wir den Zeitentwicklungsoperator verwenden, für den sich ähnliche Konvergenzgarantien wie beim Potenz-Krylov-Raum nachweisen lassen. Potenzen von werden dann zu verschiedenen Zeitschritten mit .
1. Problem auf Quantenschaltkreise und Operatoren abbilden
In dieser Lektion betrachten wir den Hamiltonoperator für die antiferromagnetische XX-Z-Spin-1/2-Kette mit Gitterplätzen und periodischer Randbedingung:
# Added by doQumentation — required packages for this notebook
!pip install -q matplotlib numpy qiskit qiskit-addon-sqd qiskit-addon-utils qiskit-ibm-runtime
from qiskit.transpiler import CouplingMap
from qiskit_addon_utils.problem_generators import generate_xyz_hamiltonian
num_spins = 22
coupling_map = CouplingMap.from_ring(num_spins)
H_op = generate_xyz_hamiltonian(coupling_map, coupling_constants=(0.3, 0.3, 1.0))
Um den Krylov-Raum aufzubauen, benötigen wir drei wesentliche Zutaten:
- Eine Wahl der Krylov-Dimension () und des Zeitschritts ().
- Einen Anfangs- (Referenz-)zustand (Vektor oben) mit polynomiellem Überlapp mit dem Ziel- (Grund-)zustand, wobei der Zielzustand dünn besetzt ist. Diese Anforderung an polynomiellen Überlapp ist dieselbe wie beim Quantenphasenschätzungsalgorithmus.
- Zeitentwicklungsoperatoren ().
Für einen gewählten Wert von (und ) erstellen wir separate Quantenschaltkreise und sampeln daraus. Jeder Quantenschaltkreis wird durch Verbinden der Quantenschaltkreisdarstellung des Referenzzustands und des Zeitentwicklungsoperators für einen -Wert erstellt.
Eine größere Krylov-Dimension verbessert die Konvergenz der geschätzten Energie. Wir setzen die Dimension in dieser Lektion auf , um den Konvergenztrend zu veranschaulichen.
Ref [2] zeigte, dass ein hinreichend kleiner Zeitschritt für KQD beträgt, und dass es vorzuziehen ist, diesen Wert eher zu unterschätzen als zu überschätzen. Andererseits führt eine zu kleine Wahl von zu einer schlechteren Konditionierung des Krylov-Unterraums, da sich die Krylov-Basisvektoren von Zeitschritt zu Zeitschritt weniger unterscheiden. Außerdem ist diese Wahl von zwar nachweislich ausreichend für die Konvergenz von SKQD, doch die optimale Wahl von in der Praxis in diesem Sampling-basierten Kontext ist Gegenstand laufender Forschung. In dieser Lektion setzen wir .
Neben Krylov-Dimension und Zeitschritt müssen wir die Anzahl der Trotter-Schritte für die Zeitentwicklung festlegen. Zu wenige Schritte führen zu größeren Trotterisierungsfehlern, während zu viele Schritte zu tieferen Schaltkreisen führen. In dieser Lektion setzen wir die Anzahl der Trotter-Schritte auf .
# Set parameters for quantum Krylov algorithm
krylov_dim = 5 # size of krylov subspace
dt = 0.15
num_trotter_steps = 6
Als nächstes müssen wir einen Referenzzustand