Kwantowa diagonalizacja próbkowana (SQD)
Kwantowa diagonalizacja próbkowana (SQD) łączy klasyczną algebrę liniową z możliwościami obliczeń kwantowych w celu diagonalizacji Hamiltonianu (macierzy) i wyznaczenia jego wartości własnych oraz wektorów własnych. Diagonalizacja macierzy jest ważną operacją matematyczną, ponieważ wiele problemów w nauce, informatyce i optymalizacji korzysta z tej metody.
Poniższy film przedstawia przegląd SQD — co decyduje o jego przydatności i co sprawia, że jest szybszy niż wiele innych podejść. Poniższy tekst zawiera więcej szczegółów.
1. Wprowadzenie i motywacja
Rozważmy jako przykład równanie energetycznych wartości własnych rozsławione przez Schrödingera.
to Hamiltonian układu, to funkcja falowa (znana również jako stan własny), a to wartość własna. Wartości własne macierzy reprezentują poziomy energii układu. Na przykład, jeśli układem jest cząsteczka, najniższa wartość własna odpowiada energii ground state cząsteczki. W wielu problemach jesteśmy zainteresowani szacowaniem energii ground state.
Stosując techniki dokładnej diagonalizacji z algebry liniowej, możemy zdiagonalizować pełną macierz . Jednak to podejście staje się kosztowne obliczeniowo (a nawet niemożliwe) w miarę wzrostu macierzy. Na przykład nawet dla małych cząsteczek chemicznych może być prohibicyjnie duży (przykładowo Hamiltonian cząsteczki z bazą cc-PVDZ ma wymiar
Na szczęście nie zawsze potrzebujemy wszystkich wartości własnych i wektorów własnych Hamiltonianu , dlatego w wielu praktycznych przypadkach diagonalizacja pełnej macierzy nie jest wymagana. Na przykład w przypadku szacowania energii ground state interesuje nas najniższa wartość własna i odpowiadający jej wektor własny. Pozwala nam to zastosować koncepcję rzutowania na (użyteczną) podprzestrzeń.
Rozważmy macierz , , gdzie pełna przestrzeń wektorowa (przestrzeń Hilberta) ma wymiar ( jest duże). Następnie wybieramy podprzestrzeń () — podzbiór pełnej przestrzeni Hilberta — o wymiarze , gdzie jest wystarczająco małe. Po rzutowaniu na tę podprzestrzeń rzutowana macierz (oznaczmy ją ) będzie mniejsza (). Mniejszą macierz można zdiagonalizować odpowiednią klasyczną metodą numeryczną i wyznaczyć wartości własne oraz wektory własne dla tej podprzestrzeni.
Zauważ, że podprzestrzeń musi zawierać nasz docelowy (np. ground) stan własny. Innymi słowy, rzutowany Hamiltonian musi znajdować się w podprzestrzeni obejmującej najniższą wartość własną.
2. Rzutowanie i diagonalizacja
Przyjmijmy, że chcemy znaleźć najniższą wartość własną i odpowiadający jej wektor własny dla następującej macierzy Hamiltonianu o wymiarze .
Zdiagonalizujemy pełną macierz wraz z różnymi jej wersjami rzutowanymi () dla różnych podprzestrzeni, aby zademonstrować skalowalność i znaczenie wyboru podprzestrzeni.
Energia ground state (minimalna wartość własna) macierzy wynosi , a dokładna funkcja falowa ground state (wektor własny) to:
tzn. ground state macierzy jest rozpiętym przez dwa obliczeniowe stany bazowe (wektory) i .
# 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. ]
Następnie rzutujemy macierz na różne podprzestrzenie i sprawdzamy, czy możemy uzyskać dokładny ground state. W szczególności rzutujemy macierz na podprzestrzeń rozpiętą przez:
- dokładne wektory ground state ( i ).
- wektory wykluczające niektóre lub wszystkie dokładne wektory ground state (na przykład , i ).
- wektory zawierające zarówno dokładny ground state, jak i stany spoza ground state (ale nie wszystkie możliwe wektory w przestrzeni Hilberta).
2.1 Case-1: Subspace includes ground state
Załóżmy, że chcemy rzutować na podprzestrzeń () rozpiętą przez dwa wektory i . Rzutowany Hamiltonian jest zdefiniowany jako:
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]
Możemy poczynić tu kilka kluczowych obserwacji.
- Ponieważ podprzestrzeń została rozpięta przez dwa wektory, wymiar rzutowanej macierzy () wynosi , co jest mniejsze niż pełna macierz ().
- Minimalna eigenvalue rzutowanej macierzy pokrywa się z dokładną eigenvalue ground state.
- Wartości w zmiennej
eigvecsoznaczają amplitudy wektorów rozpinających podprzestrzeń; korzystając z nich, możemy zrekonstruować eigenstate (ground state). W tym przypadku otrzymujemy dokładny ground state (z dokładnością do globalnej fazy):
2.2 Case-2: Podprzestrzeń wyklucza niektóre lub wszystkie wektory ground state
Teraz rzutujemy na podprzestrzeń rozpiętą przez trzy wektory , i . Celowo dobieramy wektory tak, aby wykluczyć jeden z wektorów ground state (). Rzutowany Hamiltonian jest zdefiniowany następująco:
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
Eigenvalue w tym przypadku nie odpowiada minimalnemu eigenvalue pełnego Hamiltonianu. Kluczowa obserwacja jest następująca: jeśli rzutujesz na podprzestrzeń, która wyklucza — częściowo lub całkowicie — stany bazowe należące do docelowego ground state, uzyskane przybliżenie ground state będzie różnić się od dokładnego.
2.3 Case-3: Subspace includes both ground state and non-ground state vectors
Następnie pokazujemy przypadek, w którym podprzestrzeń jest rozpiętą przez wektory obejmujące dokładne wektory ground state wraz z niechcianymi wektorami. Załóżmy, że nasza podprzestrzeń jest rozpięta przez , (obecne w dokładnym ground state) oraz (nieobecny w dokładnym ground state).
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. ]
W tym przypadku ponownie otrzymujemy jako minimalny eigenvalue, co zgadza się z pełną macierzą (czyli z dokładnym ground state). Kolejnym interesującym wynikiem jest amplituda zwrócona przez proces projekcji i diagonalizacji. Amplituda wynosi , a gdy rekonstruujemy funkcję falową (eigenstate) za pomocą wyznaczonych amplitud i wektorów, otrzymujemy:
Zatem nawet jeśli nasza podprzestrzeń zawiera pewne wektory spoza celu (wraz z pełnym zestawem wektorów docelowych), możemy obliczyć poprawny eigenvalue i eigenstate, ponieważ proces projekcji i diagonalizacji odfiltrowuje wektory spoza celu, ustawiając ich amplitudy na . Ta właściwość SQD zapewnia wbudowaną odporność na szumy.
3. Rola obliczeń kwantowych w SQD
Powyższe analizy dowodzą, jak ważne są wektory rozpinające podprzestrzeń, które muszą należeć do nośnika docelowego stanu. Rodzi to istotne pytanie: Jak wybierać wektory z nośnikiem docelowego stanu do budowy podprzestrzeni?
Tu właśnie wkraczają komputery kwantowe. Synergia kwantowo-klasyczna w paradygmacie SQD działa następująco:
- Za pomocą odpowiedniego obwodu kwantowego staramy się przygotować na komputerze kwantowym stan, który będzie generował stany bazowe, na których docelowa funkcja falowa (np. ground state) ma znaczący nośnik. Próbkowane stany bazowe (bitstrings) będą rozpinać podprzestrzeń do rzutowania Hamiltonianu.
- Klasyczny komputer rzutuje Hamiltonian na podprzestrzeń (rozpiętą przez próbki/wektory z komputera kwantowego) i diagonalizuje go, obliczając wartości własne oraz wektory własne przy użyciu odpowiednich metod numerycznych.
Istnieje wiele sposobów przygotowania takiego stanu kwantowego — mogą być one wariacyjne lub nierwariacyjne, w zależności od problemu.
W dwóch kolejnych lekcjach pokażemy dwa konkretne przykłady przygotowywania stanów i próbkowania z nich.
- W Lekcji 4 użyjemy sparametryzowanego ansatzu lokalnie unitarnego sprzężonego Jastrow (LUCJ), aby wygenerować próbki dla problemu chemicznego (szacowanie energii ground state cząsteczki ). Zainicjalizujemy ansatz LUCJ parametrami z klasycznych obliczeń metodą sprzężonych klasterów z pojedynczymi i podwójnymi pobudzeniami (CCSD).
- W Lekcji 5 będziemy próbkować ze stanów bazy Krylova, aby rozpiąć podprzestrzeń dla problemu z fizyki materii skondensowanej. Podejście to ma charakter nierwariacyjny.
Poza podejściami specyficznymi dla danego problemu, ogólne podejście do przygotowania stanu obejmuje wariacyjny ansatz, w którym będziemy iteracyjnie aktualizować jego parametry przy użyciu klasycznego optymalizatora.
Próbki z komputerów kwantowych sprzed ery tolerancji błędów mogą być zaszumione. SQD stosuje samospójny proces odtwarzania konfiguracji w celu korygowania zaszumionych próbek [1]. Proces odtwarzania konfiguracji omówimy szczegółowo i zastosujemy go do iteracyjnego korygowania zaszumionych próbek w celu ulepszenia szacowania energii ground state dla problemu chemicznego w Lekcji 4.
3.1 Notes on ground state support
Wyjaśnijmy dokładniej pojęcie nośnika ground state. Nośnik ground state można zdefiniować jako zbiór stanów bazowych, w których ground state ma niezerową amplitudę (powyżej pewnego progu odcięcia).
Załóżmy, że dokładny ground state problemu na qubitach wynosi
Próbkując powyższy stan, powinniśmy otrzymać zbiór obliczeniowych stanów bazowych , (pozostałe obliczeniowe stany bazowe mają zerową amplitudę w ground state i dlatego idealnie nie pojawią się podczas próbkowania).
Idealnie zbiór wektorów bazowych dla tego stanu składa się z (innymi słowy, podprzestrzeń tego stanu jest rozpinana przez te dwa wektory bazowe).
W praktyce nie musimy przygotowywać dokładnego ground state, ponieważ próbkowanie wielu innych stanów może dać nam ten sam zbiór wektorów. Na przykład:
Przygotowanie i próbkowanie z dowolnego z powyższych stanów wygeneruje wektory o niezerowej amplitudzie w ground state — wszystkie kwalifikują się zatem jako posiadające nośnik ground state. Zwróć uwagę, że próbkowanie obejmuje jeden dodatkowy wektor , który ma amplitudę w dokładnym ground state. Jednak jak pokazaliśmy wcześniej, uwzględnienie takich wektorów w podprzestrzeni nie jest problematyczne, ponieważ operacja rzutowania i diagonalizacji zeruje amplitudę niepożądanych wektorów i pozwala uzyskać oczekiwaną wartość własną oraz zrekonstruować właściwy eigenstate.

Dlatego przygotowanie i próbkowanie z dokładnego ground state nie jest konieczne. W rzeczywistości może to być trudne, ponieważ dokładny ground state nie jest znany a priori, i często korzystne jest nieprzygotowywanie i próbkowanie z dokładnego ground state — szczególnie gdy funkcja falowa (stan) jest skośna, a niektóre stany bazowe mają bardzo wysokie prawdopodobieństwa. Rozważmy następującą funkcję falową:
Jest to skośna funkcja falowa, w której stany bazowe i mają znacznie większe amplitudy niż i . Podczas próbkowania i będą pojawiać się częściej ( dla i , dla i dla ). Przy skończonym budżecie próbkowania (shots) bardzo prawdopodobne jest, że próbkowany zbiór zawiera wyłącznie i . Jak pokazano wcześniej, jeśli rozepniemy podprzestrzeń takim niekompletnym zbiorem, nie będziemy w stanie znaleźć prawdziwej minimalnej wartości własnej. Dlatego korzystne (i konieczne) jest próbkowanie ze stanu mającego nośnik ground state.
3.2 A case against uniform sampling
Może być kuszące, aby losować próbki z rozkładu jednostajnego w celu rozepnięcia podprzestrzeni. Choć może to działać dla małych problemów, w przypadku większych i bardziej praktycznych zadań zaczyna zawodzić. Dla dużych problemów z wieloma qubitami przestrzeń Hilberta może być prohibicyjnie wielka. Na przykład przestrzeń Hilberta dla 32 qubitów zawiera ponad miliardy możliwych wektorów bazowych (). Jeśli będziemy jednostajnie próbkować z tej przestrzeni przy skończonym budżecie próbkowania (np. wektorów, aby utrzymać wykonalność procesu diagonalizacji), podprzestrzeń może często wykluczać wektory z nośnikiem ground state, ponieważ proces będzie losowy. Dlatego potrzebujemy systematycznego sposobu próbkowania z nośnika ground state z wykorzystaniem obwodów kwantowych.
4. SQD and Sparsity of the wave function
Przepaść między wymiarem pełnej przestrzeni Hilberta a wymiarem wykonalnej podprzestrzeni odsłania kolejny ważny aspekt SQD — rzadkość (sparsity) wave function. Podejście SQD działa dobrze dla rzadkich lub skoncentrowanych wave functions, w których jedynie niewielka część stanów bazowych ma nieznaczące amplitudy. Stoją za tym dwa powody:
- Jeśli wave function jest rozległa (tzn. wiele stanów bazowych ma nieznaczące amplitudy) i nie uwzględnimy wektorów z nośnikiem na stanie docelowym w podprzestrzeni, możemy skończyć z błędnymi wartościami własnymi i wektorami własnymi.
- Aby uniknąć powyższego problemu, musimy uwzględnić wiele wektorów w podprzestrzeni. Jednak wymiar rzutowanego Hamiltonianu jest bezpośrednio związany z wymiarem podprzestrzeni. Większa podprzestrzeń oznacza większy Hamiltonian, którego diagonalizacja może stać się niewykonalna.
Poniżej prezentujemy ten problem na przykładzie macierzy (). Najniższa wartość własna wynosi , a odpowiadająca jej wave function (stan własny) jest rozległa:
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]
Przyjmijmy, że rzutujemy na podprzestrzeń rozpiętą przez cztery wektory: , , oraz , a następnie obliczamy wartość własną.
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
Powyższy przykład pokazuje, że gdy wave function jest rozległa i nie uwzględniamy stanów bazowych w podprzestrzeni, obliczenie wartości własnej staje się niepoprawne.
5. SQD vs. VQE
Jak wspomniano wcześniej, SQD może wymagać wariacjonalnego obwodu kwantowego oraz iteracyjnych aktualizacji parametrów, aby przygotować stan podstawowy i próbkować z jego nośnika. Ponieważ ta procedura iteracyjnych aktualizacji parametrów jest podobna do VQE, można zapytać, czym te metody się różnią i jakie są zalety SQD nad VQE. W tej sekcji porównujemy obie metody i omawiamy zalety SQD na przykładzie cząsteczki opisanej minimalnym zestawem bazowym (sto-3g).
| VQE | SQD | |
|---|---|---|
| Narzut pomiarowy | Wiele składników Pauliego, wiele obwodów pomiarowych: Hamiltonian cząsteczki zawiera unikatowych składników Pauliego. Ponieważ składniki te mogą zawierać operatory i , a typowe pomiary kwantowe wykonywane są w bazie , potrzebujemy zmiany bazy pomiaru, by wyznaczyć te składniki. Po optymalizacji pomiarów składników można pogrupować w grup, gdzie każdą grupę można wyznaczyć za pomocą jednego obwodu. Potrzebujemy więc co najmniej unikatowych obwodów do wyznaczenia wszystkich składników Pauliego. Wiele strzałów na obwód dla mniejszej wariancji. Wyznaczona wartość oczekiwana każdego składnika Pauliego obarczona jest wariancją odwrotnie proporcjonalną do . Aby precyzyjnie oszacować każdy składnik, należy przydzielić dużo strzałów na obwód. Przykładowo, aby osiągnąć dokładność chemiczną ( kcal/mol), zazwyczaj potrzeba od do strzałów na obwód. VQE wymaga więc wielu obwodów pomiarowych, z których każdy musi mieć odpowiednią liczbę strzałów. W praktycznych przypadkach ten narzut pomiarowy może być ograniczający. | W SQD nie potrzebujemy różnych obwodów pomiarowych dla każdej grupy składników Pauliego. Zazwyczaj mierzymy jeden obwód przez ustaloną liczbę strzałów. Choć liczba strzałów może być duża w zależności od problemu, narzut pozostaje znacznie mniejszy niż w VQE. Ponadto szacowania energii w procesie diagonalizacji są dokładne — wyznaczone wartości własne są dokładne w danej podprzestrzeni i nie są obarczone wariancją jak w VQE. (W przypadku próbkowania stanów bazowych Kryłowa (Lekcja 5) trzeba mierzyć wiele obwodów, ale ich liczba pozostaje znacznie mniejsza niż w VQE). |
| Ograniczenie oszacowanej energii | W VQE szacowania energii nie są ograniczone z dołu i mogą być niższe od prawdziwej wartości minimalnej z powodu szumów. | Proces szacowania energii w SQD zawsze daje górne ograniczenie energii stanu podstawowego — oszacowana energia nigdy nie będzie niższa od prawdziwej energii stanu podstawowego. |
| Tolerancja na szumy | Szacowanie energii w VQE jest podatne na szumy komputerów kwantowych sprzed epoki tolerancji na błędy. | SQD ma wbudowaną tolerancję na szumy. Komputery kwantowe sprzed epoki tolerancji na błędy mogą generować zaszumione próbki. Nawet jeśli uwzględnimy te próbki w podprzestrzeni, kolejna diagonalizacja może je stłumić, ustawiając ich amplitudy na zero. Omówimy też metodę zwaną odtwarzaniem konfiguracji (ang. configuration recovery) w kontekście SQD, która dodatkowo poprawia tolerancję SQD na szumy. |
6. Summary
- W SQD komputer kwantowy generuje próbki, a komputer klasyczny rzutuje Hamiltonian na podprzestrzeń rozpiętą przez te próbki i diagonalizuje go, aby wyznaczyć wartości własne i wektory własne.
- Wygenerowane próbki powinny pochodzić z nośnika docelowego (podstawowego) stanu kwantowego.
- W zależności od problemu, przygotowanie stanu kwantowego i generowanie próbek może przebiegać iteracyjnie lub nieiteracyjnie.
- SQD działa najlepiej dla rzadkich funkcji falowych. Szeroka funkcja falowa wymaga dużej podprzestrzeni dla dokładnych rozwiązań, co sprawia, że operacja rzutowania i diagonalizacji klasycznej staje się kosztowna.
- SQD ma kilka zalet nad VQE, takich jak mniejszy narzut pomiarowy oraz górne ograniczenie oszacowanej energii stanu podstawowego, co czyni go bardziej skalowalnym.
References
[1] J. Robledo-Moreno et al., "Chemistry Beyond Exact Solutions on a Quantum-Centric Supercomputer" (2024). arXiv:quant-ph/2405.05068.