Stichprobenbasierte Quantendiagonalisierung (SQD)
Die stichprobenbasierte Quantendiagonalisierung (SQD) kombiniert klassische lineare Algebra mit der Leistungsfähigkeit des Quantencomputers, um einen Hamiltonoperator (eine Matrix) zu diagonalisieren und seine Eigenwerte sowie Eigenvektoren zu berechnen. Die Matrixdiagonalisierung ist eine wichtige mathematische Operation, die in vielen Bereichen der Wissenschaft, der Informatik und der Optimierung eingesetzt wird.
Das folgende Video gibt einen Überblick über SQD, zeigt, was seine Nützlichkeit bestimmt, und erklärt, was es gegenüber vielen anderen Ansätzen schneller macht. Der nachfolgende Text enthält weitere Details.
1. Einführung und Motivation
Betrachten wir als Beispiel die Energieeigenwertgleichung, die durch Schrödinger berühmt wurde.
ist der Hamiltonoperator eines Systems, die Wellenfunktion (auch als Eigenzustand bekannt) und ein Eigenwert. Die Eigenwerte der Matrix repräsentieren die Energieniveaus des Systems. Bei einem Molekül zum Beispiel stellt der kleinste Eigenwert die Grundzustandsenergie des Moleküls dar. In vielen Problemen interessiert man sich für die Schätzung der Grundzustandsenergie.
Durch Anwendung exakter Diagonalisierungsverfahren aus der linearen Algebra lässt sich die vollständige Matrix diagonalisieren. Dieser Ansatz wird jedoch rechenintensiv (und sogar unmöglich), je größer die Matrix wird. Bereits für kleine chemische Moleküle kann unhandlich groß werden – beispielsweise hat der Hamiltonoperator für das -Molekül mit einer cc-PVDZ-Basis eine Dimension von .
Glücklicherweise benötigt man nicht immer alle Eigenwerte und Eigenvektoren eines Hamiltonoperators . Die Diagonalisierung der vollständigen Matrix ist daher in vielen praktischen Fällen gar nicht erforderlich. Bei der Grundzustandsschätzung interessiert man sich zum Beispiel nur für den kleinsten Eigenwert und den zugehörigen Eigenvektor. Dies ermöglicht es, das Konzept der Projektion auf einen (nützlichen) Unterraum anzuwenden.
Betrachten wir eine -Matrix , deren vollständiger Vektorraum (Hilbertraum) die Dimension hat ( ist groß). Dann wählen wir einen Unterraum () – eine Teilmenge des vollständigen Hilbertraums – mit der Dimension , wobei hinreichend klein ist. Nach der Projektion von auf diesen Unterraum ist die projizierte Matrix (z. B. ) kleiner (). Das kleinere kann mit einer geeigneten klassischen numerischen Methode diagonalisiert werden, um Eigenwerte und Eigenvektoren für diesen Unterraum zu berechnen.
Beachte, dass der Unterraum im Träger unseres Ziel- (z. B. Grundzustands-)Eigenzustands liegen muss. Mit anderen Worten muss der projizierte Hamiltonoperator in einem Unterraum liegen, der den kleinsten Eigenwert enthält.
2. Projektion und Diagonalisierung
Angenommen, wir möchten den kleinsten Eigenwert und den zugehörigen Eigenvektor der folgenden -Hamiltonmatrix finden.
Wir werden die vollständige Matrix sowie verschiedene projizierte Versionen () für unterschiedliche Unterräume diagonalisieren, um die Skalierbarkeit und die Bedeutung der Unterraumwahl zu veranschaulichen.
Die Grundzustandsenergie (minimaler Eigenwert) der Matrix beträgt , und die exakte Grundzustands-Wellenfunktion (Eigenvektor) lautet:
Das heißt, der Grundzustand der Matrix wird von zwei Rechenbasisvektoren und aufgespannt.
# Added by doQumentation — required packages for this notebook
!pip install -q numpy scipy
import numpy as np
from scipy.linalg import eigh
np.set_printoptions(precision=4, sign="-", suppress=True, linewidth=100)
H = np.array(
[
[0.2235, -0.039, -0.1035, -0.0818, 0.1746, 0.1091, 0.1165, -0.0104],
[-0.0390, 0.6621, 0.0706, -0.1964, -0.0782, 0.2619, 0.1095, 0.0029],
[-0.1035, 0.0706, 0.9961, 0.1724, 0.1067, -0.2299, -0.1817, 0.1571],
[-0.0818, -0.1964, 0.1724, -0.1773, 0.1019, -0.4778, -0.1272, -0.0414],
[0.1746, -0.0782, 0.1067, 0.1019, 0.1418, -0.1359, -0.1793, -0.0766],
[0.1091, 0.2619, -0.2299, -0.4778, -0.1359, 0.1014, 0.1696, 0.0552],
[0.1165, 0.1095, -0.1817, -0.1272, -0.1793, 0.1696, 0.4227, 0.2702],
[-0.0104, 0.0029, 0.1571, -0.0414, -0.0766, 0.0552, 0.2702, 0.4456],
]
)
eigvals, eigvecs = eigh(H)
print("Eigenvalues:")
print(eigvals)
print(f"Minimum eigenvalue: {eigvals.min()}")
print("\nEigenvectors (columns represent vectors):")
print(eigvecs)
print("\nEigenvector for the minimum eigenvalue (ground state)")
print(eigvecs[:, np.argmin(eigvals)])
Eigenvalues:
[-0.5357 -0.1321 0.1049 0.1258 0.3616 0.6405 0.947 1.3039]
Minimum eigenvalue: -0.5356560029438817
Eigenvectors (columns represent vectors):
[[-0. -0.5612 0.098 -0.0024 0.8051 -0.0806 0.0643 0.1288]
[-0. -0.1403 -0.1985 -0.4249 -0.0092 0.585 -0.5952 0.2526]
[ 0. 0.0416 0.3041 0.2122 0.1509 -0.0139 -0.5794 -0.7086]
[ 0.8 -0.1936 -0.0127 -0.4376 -0.1081 -0.0838 0.1557 -0.2966]
[ 0. 0.6716 -0.3535 -0.2552 0.5395 0.0954 0.1449 -0.1941]
[ 0.6 0.258 0.017 0.5834 0.1441 0.1118 -0.2076 0.3954]
[ 0. 0.3088 0.5504 -0.4197 0.0626 -0.468 -0.2625 0.3657]
[-0. -0.1146 -0.6559 0.0356 -0.0394 -0.6352 -0.3856 0.0418]]
Eigenvector for the minimum eigenvalue (ground state)
[-0. -0. 0. 0.8 0. 0.6 0. -0. ]
Als nächstes werden wir die Matrix auf verschiedene Unterräume projizieren und prüfen, ob wir den exakten Grundzustand erhalten. Wir projizieren die Matrix insbesondere auf einen Unterraum, der aufgespannt wird durch:
- die exakten Grundzustandsvektoren ( und ),
- Vektoren, die einige oder alle exakten Grundzustandsvektoren ausschließen (z. B. , und ),
- Vektoren, die sowohl exakte Grundzustands- als auch Nicht-Grundzustandsvektoren enthalten (aber nicht alle möglichen Vektoren im Hilbertraum).
2.1 Fall 1: Unterraum enthält den Grundzustand
Angenommen, wir möchten auf einen Unterraum () projizieren, der von zwei Vektoren und aufgespannt wird. Der projizierte Hamiltonoperator ist definiert durch:
x1 = np.zeros(8)
x1[3] = 1 # binary 011 is 3 in decimal. |011> = |3> = [0,0,0,1,0,0,0,0]
x2 = np.zeros(8)
x2[5] = 1 # binary 101 is 5 in decimal
Hs = np.array([[x1 @ H @ x1.T, x1 @ H @ x2.T], [x2 @ H @ x1.T, x2 @ H @ x2.T]])
print(Hs)
[[-0.1773 -0.4778]
[-0.4778 0.1014]]
eigvals, eigvecs = eigh(Hs)
print(f"Minimum eigenvalue: {eigvals.min()}")
print(f"Eigenvector for minimum eigenvalue: {eigvecs[:,np.argmin(eigvals)]}")
Minimum eigenvalue: -0.535656000064295
Eigenvector for minimum eigenvalue: [-0.8 -0.6]
Hier lassen sich mehrere wichtige Beobachtungen machen.
- Da wir den Unterraum mit zwei Vektoren aufgespannt haben, hat die projizierte Matrix () die Dimension – kleiner als die vollständige Matrix ().
- Der minimale Eigenwert der projizierten Matrix stimmt mit dem Eigenwert des exakten Grundzustands überein.
- Die Werte in der Variable
eigvecsgeben die Amplituden der den Unterraum aufspannenden Vektoren an. Mit ihnen lässt sich der Eigenzustand (Grundzustand) rekonstruieren. In diesem Fall erhalten wir den exakten Grundzustand (bis auf eine globale Phase):
2.2 Fall 2: Unterraum schließt einige oder alle Grundzustandsvektoren aus
Als nächstes projizieren wir auf einen Unterraum, der von drei Vektoren , und aufgespannt wird. Wir wählen die Vektoren bewusst so, dass ein Grundzustandsvektor () ausgeschlossen wird. Der projizierte Hamiltonoperator ist definiert durch:
x1 = np.zeros(8)
x1[0] = 1
x2 = np.zeros(8)
x2[3] = 1
x3 = np.zeros(8)
x3[6] = 1
Hs = np.array(
[
[x1 @ H @ x1.T, x1 @ H @ x2.T, x1 @ H @ x3.T],
[x2 @ H @ x1.T, x2 @ H @ x2.T, x2 @ H @ x3.T],
[x3 @ H @ x1.T, x3 @ H @ x2.T, x3 @ H @ x3.T],
]
)
print(Hs)
[[ 0.2235 -0.0818 0.1165]
[-0.0818 -0.1773 -0.1272]
[ 0.1165 -0.1272 0.4227]]
eigvals, eigvecs = eigh(Hs)
print(f"Minimum eigenvalue: {eigvals.min()}")
Minimum eigenvalue: -0.21108858736702252
Der Eigenwert stimmt in diesem Fall nicht mit dem minimalen Eigenwert des vollständigen Hamiltonoperators überein. Die entscheidende Beobachtung lautet: Wenn wir auf einen Unterraum projizieren, dem Basiszustände unseres Ziel-(Grundzustands-)Zustands fehlen – teilweise oder vollständig –, weicht der geschätzte Grundzustand vom exakten ab.
2.3 Fall 3: Unterraum enthält sowohl Grundzustands- als auch Nicht-Grundzustandsvektoren
Als nächstes zeigen wir einen Fall, bei dem der Unterraum von Vektoren aufgespannt wird, die sowohl die exakten Grundzustandsvektoren als auch unerwünschte Vektoren enthalten. Angenommen, unser Unterraum wird von , (im exakten Grundzustand vorhanden) und (im exakten Grundzustand nicht vorhanden) aufgespannt.
x1 = np.zeros(8)
x1[3] = 1
x2 = np.zeros(8)
x2[5] = 1
x3 = np.zeros(8)
x3[7] = 1
Hs = np.array(
[
[x1 @ H @ x1.T, x1 @ H @ x2.T, x1 @ H @ x3.T],
[x2 @ H @ x1.T, x2 @ H @ x2.T, x2 @ H @ x3.T],
[x3 @ H @ x1.T, x3 @ H @ x2.T, x3 @ H @ x3.T],
]
)
print(Hs)
[[-0.1773 -0.4778 -0.0414]
[-0.4778 0.1014 0.0552]
[-0.0414 0.0552 0.4456]]
eigvals, eigvecs = eigh(Hs)
print(f"Minimum eigenvalue: {eigvals.min()}")
print(f"Eigenvector for minimum eigenvalue: {eigvecs[:,np.argmin(eigvals)]}")
Minimum eigenvalue: -0.53565600006461
Eigenvector for minimum eigenvalue: [ 0.8 0.6 -0. ]
In diesem Fall erhalten wir erneut als minimalen Eigenwert, der mit dem der vollständigen Matrix übereinstimmt (d. h. dem exakten Grundzustand). Ein weiteres interessantes Ergebnis ist die Amplitude von , die durch den Projektions- und Diagonalisierungsprozess zurückgegeben wird. Diese Amplitude beträgt . Wenn wir die Wellenfunktion (Eigenzustand) mit den berechneten Amplituden und Vektoren rekonstruieren, erhalten wir:
Selbst wenn unser Unterraum einige Nicht-Zielvektoren enthält (zusammen mit der vollständigen Menge der Zielvektoren), können wir den korrekten Eigenwert und Eigenzustand berechnen – denn der Projektions- und Diagonalisierungsprozess filtert Nicht-Zielvektoren heraus, indem er ihre Amplituden auf setzt. Diese Eigenschaft von SQD bietet eine inhärente Rauschtoleranz.
3. Die Rolle des Quantencomputers in SQD
Die obigen Analysen belegen die Bedeutung der den Unterraum aufspannenden Vektoren, die im Träger des Zielzustands liegen müssen. Damit ergibt sich eine wichtige Frage: Wie wählen wir Vektoren mit Zielzustandsträger für die Unterraumkonstruktion?
Hier kommen Quantencomputer ins Spiel. Die quantenklassische Synergie funktioniert im SQD-Paradigma wie folgt:
- Mit einem geeigneten Quantencircuit versuchen wir, auf einem Quantencomputer einen Zustand vorzubereiten, der Basiszustände erzeugt, auf denen die Ziel-Wellenfunktion (z. B. der Grundzustand) erhebliche Unterstützung hat. Die abgetasteten Basiszustände (Bitstrings) spannen den Unterraum für die Hamiltonprojektion auf.
- Ein klassischer Computer projiziert den Hamiltonoperator auf den Unterraum (aufgespannt durch Stichproben/Vektoren vom Quantencomputer) und diagonalisiert ihn, um Eigenwerte und Eigenvektoren mit geeigneten numerischen Methoden zu berechnen.
Es gibt verschiedene Möglichkeiten, einen solchen Quantenzustand vorzubereiten – je nach Problem variational oder nicht-variational.
In den nächsten zwei Lektionen zeigen wir zwei konkrete Beispiele für die Zustandsvorbereitung und das Sampling.
- In Lektion 4 verwenden wir einen parametrisierten lokalen unitären gekoppelten Jastrow-Ansatz (LUCJ), um Stichproben für ein Chemieproblem (Grundzustandsenergieabschätzung des -Moleküls) zu erzeugen. Wir initialisieren den LUCJ-Ansatz mit Parametern aus einer klassischen Coupled-Cluster-Singles-and-Doubles-(CCSD-)Berechnung.
- In Lektion 5 sampeln wir aus Krylov-Basiszuständen, um den Unterraum für ein Problem der Festkörperphysik aufzuspannen. Dieser Ansatz ist nicht-variationaler Natur.
Neben diesen problemspezifischen Ansätzen beinhaltet ein allgemeines Verfahren zur Zustandsvorbereitung einen variationalen Ansatz, bei dem die Ansatz-Parameter iterativ mit einem klassischen Optimierer aktualisiert werden.
Stichproben von vor-fehlertoleranten Quantencomputern können verrauscht sein. SQD setzt einen selbstkonsistenten Konfigurationswiederherstellungsprozess ein, um verrauschte Stichproben zu korrigieren [1]. Den Konfigurationswiederherstellungsprozess werden wir in Lektion 4 genauer besprechen und ihn iterativ anwenden, um verrauschte Stichproben zu korrigieren und die Grundzustandsenergieabschätzung für ein Chemieproblem zu verfeinern.
3.1 Hinweise zum Grundzustandsträger
Erläutern wir das Konzept des Grundzustandsträgers etwas genauer. Der Grundzustandsträger lässt sich als die Menge der Basiszustände definieren, in denen der Grundzustand eine von null verschiedene Amplitude hat (bis zu einem Schwellenwert).
Angenommen, der exakte Grundzustand eines -Qubit-Problems lautet
Wenn wir den obigen Zustand sampeln, erhalten wir eine Menge von Rechenbasisvektoren , (andere Rechenbasisvektoren haben im Grundzustand eine Amplitude von null und erscheinen daher beim Sampeln idealerweise nicht).
Im Idealfall besteht die Menge der Basisvektoren für diesen Zustand aus (der Unterraum dieses Zustands wird von diesen beiden Basisvektoren aufgespannt).
In der Praxis müssen wir den exakten Grundzustand nicht vorbereiten, da das Sampeln aus vielen anderen Zuständen uns dieselben Vektoren liefern kann. Zum Beispiel:
Das Vorbereiten und Sampeln aus einem der obigen Zustände erzeugt Vektoren mit von null verschiedener Amplitude im Grundzustand – alle qualifizieren sich als Zustände mit Grundzustandsträger. Beachte, dass das Sampeln von einen zusätzlichen Vektor liefert, der im exakten Grundzustand die Amplitude hat. Wir haben jedoch bereits gezeigt, dass das Einbeziehen solcher Vektoren in den Unterraum kein Problem darstellt, da der Projektions- und Diagonalisierungsprozess die Amplitude unerwünschter Vektoren auf setzt und wir den korrekten Eigenzustand rekonstruieren können.

Das Vorbereiten und Sampeln aus dem exakten Grundzustand ist also nicht notwendig. Tatsächlich kann dies schwierig sein, da der exakte Grundzustand a priori unbekannt ist. Oft ist es sogar vorteilhaft, nicht aus dem exakten Grundzustand zu sampeln – besonders wenn die Wellenfunktion (der Zustand) asymmetrisch ist und einige Basiszustände sehr hohe Wahrscheinlichkeiten aufweisen. Betrachten wir folgende Wellenfunktion:
Dies ist eine asymmetrische Wellenfunktion, bei der die Basiszustände und deutlich größere Amplituden haben als und . Beim Sampeln erhalten wir und häufiger ( für und jeweils, für und für ). Bei einem begrenzten Sampling-Budget (Shots) ist es sehr wahrscheinlich, dass unsere Stichprobenmenge nur und enthält. Wie bereits gezeigt, können wir, wenn wir den Unterraum mit einer solchen unvollständigen Menge aufspannen, den wahren minimalen Eigenwert nicht finden. Daher ist es vorteilhaft (und notwendig), aus einem Zustand mit Grundzustandsträger zu sampeln.
3.2 Gegen gleichmäßiges Sampling
Es mag verlockend erscheinen, Stichproben aus einer gleichmäßigen Verteilung zu ziehen, um den Unterraum aufzuspannen. Für kleine Probleme mag das funktionieren, für größere und praktischere Probleme jedoch nicht mehr. Bei großen Problemen mit vielen Qubits kann der Hilbertraum unhandlich groß werden. Ein 32-Qubit-Hilbertraum hat zum Beispiel mehr als Milliarden mögliche Basisvektoren (). Wenn wir aus diesem Raum mit einem begrenzten Stichprobenbudget (z. B. Vektoren, um die Diagonalisierung handhabbar zu halten) gleichmäßig sampeln, kann der Unterraum häufig Vektoren mit Grundzustandsträger auslassen, da der Prozess zufällig ist. Wir brauchen daher eine systematische Methode, um mithilfe von Quantencircuits aus dem Grundzustandsträger zu sampeln.
4. SQD und die Sparsität der Wellenfunktion
Die Lücke zwischen dem vollständigen Hilbertraum und der Dimension des handhabbaren Unterraums bringt einen weiteren wichtigen Aspekt von SQD ins Spiel: die Sparsität der Wellenfunktion. Der SQD-Ansatz funktioniert gut für sparse oder konzentrierte Wellenfunktionen, bei denen nur ein kleiner Bruchteil der Basiszustände nicht-vernachlässigbare Amplituden aufweist. Dafür gibt es zwei Gründe:
- Wenn die Wellenfunktion breit ist (d. h. viele Basiszustände haben nicht-vernachlässigbare Amplituden) und wir Vektoren mit Zielzustandsträger im Unterraum nicht berücksichtigen, erhalten wir möglicherweise falsche Eigenwerte und Eigenvektoren.
- Um das obige Problem zu vermeiden, müssen wir viele Vektoren in den Unterraum aufnehmen. Die Dimension des projizierten Hamiltonoperators hängt jedoch direkt von der Unterraumdimension ab. Ein größerer Unterraum bedeutet einen größeren Hamiltonoperator, was die Diagonalisierung unhandhabbar machen kann.
Wir veranschaulichen das Problem mit der folgenden Matrix (). Der kleinste Eigenwert von beträgt , und die zugehörige Wellenfunktion (Eigenzustand) ist breit:
H_new = np.array(
[
[-0.958, 0.1853, -0.2663, -0.3875, -0.0524, -0.3779, -0.0145, -0.3369],
[0.1853, -0.4081, -0.8549, -0.2312, 0.0615, -0.2493, -0.3804, -0.3312],
[-0.2663, -0.8549, -0.6929, -0.0063, -0.0478, -0.0236, -0.2494, -0.0669],
[-0.3875, -0.2312, -0.0063, -0.4468, -0.6301, -0.4627, -0.1188, 0.0753],
[-0.0524, 0.0615, -0.0478, -0.6301, -0.6664, -0.1514, -0.3571, -0.3644],
[-0.3779, -0.2493, -0.0236, -0.4627, -0.1514, -0.9605, 0.0137, 0.0035],
[-0.0145, -0.3804, -0.2494, -0.1188, -0.3571, 0.0137, -1.1449, 0.0433],
[-0.3369, -0.3312, -0.0669, 0.0753, -0.3644, 0.0035, 0.0433, -1.2307],
]
)
eigvals, eigvecs = eigh(H_new)
print(f"Minimum eigenvalue: {eigvals.min()}")
print(f"Eigenvector for minimum eigenvalue: {eigvecs[:,np.argmin(eigvals)]}")
Minimum eigenvalue: -2.208137504726661
Eigenvector for minimum eigenvalue: [0.3536 0.3536 0.3536 0.3536 0.3535 0.3536 0.3535 0.3535]
Angenommen, wir projizieren auf einen Unterraum, der von vier Vektoren aufgespannt wird: , , und , und berechnen den Eigenwert.
x1 = np.zeros(8)
x1[0] = 1
x2 = np.zeros(8)
x2[2] = 1
x3 = np.zeros(8)
x3[5] = 1
x4 = np.zeros(8)
x4[6] = 1
H_new_s = np.array(
[
[x1 @ H_new @ x1.T, x1 @ H_new @ x2.T, x1 @ H_new @ x3.T, x1 @ H_new @ x4.T],
[x2 @ H_new @ x1.T, x2 @ H_new @ x2.T, x2 @ H_new @ x3.T, x2 @ H_new @ x4.T],
[x3 @ H_new @ x1.T, x3 @ H_new @ x2.T, x3 @ H_new @ x3.T, x3 @ H_new @ x4.T],
[x4 @ H_new @ x1.T, x4 @ H_new @ x2.T, x4 @ H_new @ x3.T, x4 @ H_new @ x4.T],
]
)
print(H_new_s)
[[-0.958 -0.2663 -0.3779 -0.0145]
[-0.2663 -0.6929 -0.0236 -0.2494]
[-0.3779 -0.0236 -0.9605 0.0137]
[-0.0145 -0.2494 0.0137 -1.1449]]
eigvals, eigvecs = eigh(H_new_s)
print(f"Minimum eigenvalue: {eigvals.min()}")
Minimum eigenvalue: -1.4266552340586673
Das obige Beispiel zeigt: Wenn die Wellenfunktion breit ist und wir Basiszustände nicht in den Unterraum aufnehmen, wird die Eigenwertberechnung ungenau.
5. SQD vs. VQE
Wie bereits erwähnt, kann SQD einen variationalen Quantencircuit und iterative Parameteraktualisierungen benötigen, um aus dem Grundzustandsträger zu sampeln. Da diese iterative Parameteraktualisierungsroutine VQE ähnelt, kann man fragen, worin sich die Methoden unterscheiden und welche Vorteile SQD gegenüber VQE hat. In diesem Abschnitt vergleichen wir die Methoden und diskutieren die Vorteile von SQD am Beispiel eines -Moleküls mit einem minimalen Basissatz (sto-3g).
| VQE | SQD | |
|---|---|---|
| Messaufwand | Viele Pauli-Terme, viele Messcircuits: Der Hamiltonoperator des Moleküls enthält eindeutige Pauli-Terme. Da die Pauli-Terme - und -Terme enthalten können und typische Quantenmessungen in der -Basis durchgeführt werden, ist ein Wechsel der Messbasis erforderlich, um diese Terme auszuwerten. Bei optimierter Messung lassen sich die Terme in Gruppen zusammenfassen, wobei jede Gruppe mit einem einzigen Circuit ausgewertet werden kann. Daher werden mindestens eindeutige Circuits benötigt, um alle Pauli-Terme auszuwerten. Viele Shots pro Circuit für engere Varianz: Der ausgewertete Erwartungswert jedes Pauli-Terms hat eine Varianz, die umgekehrt proportional zu ist. Um jeden Term präzise abzuschätzen, müssen viele Shots pro Circuit eingeplant werden. Um chemische Genauigkeit ( kcal/mol) zu erreichen, sind typischerweise Shots in der Größenordnung von – pro Circuit erforderlich. VQE benötigt also viele Messcircuits, von denen jeder eine bestimmte Anzahl von Shots erfordert. Für praktische Anwendungen kann dieser Messaufwand sehr einschränkend sein. | Bei SQD werden keine unterschiedlichen Messcircuits für jede gruppierte Pauli-Term-Gruppe benötigt. Typischerweise wird ein einziger Circuit für eine feste Anzahl von Shots gemessen. Zwar kann die Anzahl der Shots je nach Problem groß sein, der Gesamtaufwand bleibt jedoch deutlich geringer als bei VQE. Außerdem sind die Energieabschätzungen durch den Diagonalisierungsprozess exakt – die berechneten Eigenwerte sind exakt in dem Unterraum und haben keine Varianz, wie sie bei VQE auftreten würde. (Im Fall des Krylov-Basiszustands-Samplings (Lektion 5) müssen mehrere Circuits gemessen werden, aber die Anzahl der Circuits bleibt deutlich kleiner als bei VQE.) |
| Geschätzte Energieschranke | Bei VQE sind die Energieabschätzungen nicht beschränkt und können aufgrund von Rauschen unter die wahren Minimalwerte fallen. | Der Energieabschätzungsprozess in SQD liefert stets eine obere Schranke für die Grundzustandsenergie; der geschätzte Wert liegt nie unter der wahren Grundzustandsenergie. |
| Rauschtoleranz | Die VQE-Energieabschätzung ist anfällig für Rauschen von vor-fehlertoleranten Quantencomputern. | SQD verfügt über eine inhärente Rauschtoleranz. Vor-fehlertollerante Quantencomputer können verrauschte Stichproben erzeugen. Selbst wenn diese Stichproben in den Unterraum einbezogen werden, kann die anschließende Diagonalisierung diese Stichproben unterdrücken, indem ihre Amplituden auf null gesetzt werden. Außerdem werden wir eine Methode namens Konfigurationswiederherstellung im Zusammenhang mit SQD besprechen, die die Rauschtoleranz von SQD weiter verbessert. |
6. Zusammenfassung
- Bei SQD erzeugt ein Quantencomputer Stichproben, und ein klassischer Computer projiziert einen Hamiltonoperator auf einen von den Stichproben aufgespannten Unterraum und diagonalisiert ihn, um Eigenwerte und Eigenvektoren zu berechnen.
- Die erzeugten Stichproben sollten aus dem Träger des Ziel-(Grundzustands-)Zustands stammen.
- Je nach Problem kann der Ablauf der Quantenzustandsvorbereitung und Stichprobenerzeugung iterativ oder nicht-iterativ sein.
- SQD funktioniert am besten für sparse Wellenfunktionen. Eine breite Wellenfunktion erfordert einen großen Unterraum für genaue Lösungen, was die klassische Projektion und Diagonalisierung aufwendig macht.
- SQD bietet gegenüber VQE mehrere Vorteile, wie z. B. einen geringeren Messaufwand und eine obere Schranke für die geschätzte Grundzustandsenergie, was es skalierbarer macht.
Referenzen
[1] J. Robledo-Moreno et al., "Chemistry Beyond Exact Solutions on a Quantum-Centric Supercomputer" (2024). arXiv:quant-ph/2405.05068.