Diagonalizare Cuantică Bazată pe Eșantionare (SQD)
Diagonalizarea cuantică bazată pe eșantionare (SQD) combină algebra liniară clasică cu puterea calculului cuantic pentru a diagonaliza un Hamiltonian (matrice) și a calcula valorile proprii și vectorii proprii ai acestuia. Diagonalizarea matricelor este o operație matematică importantă, deoarece multe probleme din știință, calcul și optimizare folosesc această metodă.
Videoclipul de mai jos oferă o prezentare generală a SQD, ce determină utilitatea sa și ce îl face mai rapid decât multe alte abordări. Textul următor oferă mai multe detalii.
1. Introducere și motivație
Consideră ecuația valorilor proprii de energie celebrizată de Schrödinger, ca exemplu.
este Hamiltonianul unui sistem, este funcția de undă (cunoscută și ca starea proprie), iar este o valoare proprie. Valorile proprii ale matricei reprezintă nivelurile de energie ale sistemului. De exemplu, dacă sistemul este o moleculă, cea mai mică valoare proprie reprezintă energia stării fundamentale a moleculei. În multe probleme, suntem interesați de estimarea energiei stării fundamentale.
Aplicând tehnici de diagonalizare exactă din algebra liniară, putem diagonaliza matricea completă . Totuși, abordarea devine costisitoare din punct de vedere computațional (chiar imposibilă) pe măsură ce matricea crește. De exemplu, chiar și pentru molecule chimice mici, poate fi prohibitiv de mare (de exemplu, Hamiltonianul pentru molecula cu baza cc-PVDZ are o dimensiune de
Din fericire, nu avem întotdeauna nevoie de toate valorile proprii și de toți vectorii proprii ai unui Hamiltonian , prin urmare, diagonalizarea matricei complete nu este necesară în multe cazuri practice. De exemplu, în cazul estimării stării fundamentale, suntem interesați de cea mai mică valoare proprie și de vectorul propriu corespunzător. Acest lucru ne permite să aplicăm conceptul de proiecție pe un subspațiu (util).
Consideră o matrice , , unde spațiul vectorial complet (spațiul Hilbert) are dimensiunea ( este mare). Apoi, selectăm un subspațiu () — care este un subset al spațiului Hilbert complet — de dimensiune , unde este suficient de mic. După proiectarea lui pe acest subspațiu, matricea proiectată (să o numim ) va fi mai mică (). mai mică poate fi diagonalizată folosind o metodă numerică clasică potrivită și poate genera valori proprii și vectori proprii pentru acel subspațiu.
Reține că subspațiul trebuie să fie în suportul țintei noastre (de exemplu, a stării fundamentale). Cu alte cuvinte, Hamiltonianul proiectat trebuie să fie într-un subspațiu care include cea mai mică valoare proprie.
2. Proiecție și diagonalizare
Să presupunem că vrem să găsim cea mai mică valoare proprie și vectorul propriu corespunzător pentru următoarea matrice Hamiltoniană , .
Vom diagonaliza matricea completă împreună cu diferite versiuni proiectate () pentru diferite subspații, pentru a demonstra scalabilitatea și importanța alegerii subspațiului.
Energia stării fundamentale (valoarea proprie minimă) a matricei este , iar funcția de undă exactă a stării fundamentale (vectorul propriu) este:
adică, starea fundamentală a matricei este întinsă de două stări ale bazei computaționale (vectori) ș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. ]
Acum, vom proiecta matricea pe diferite subspații și vom verifica dacă putem obține starea fundamentală exactă. În particular, vom proiecta matricea pe un subspațiu întins de:
- vectorii exacti ai stării fundamentale ( și ).
- vectori care exclud unii sau toți vectorii exacti ai stării fundamentale (de exemplu, , și ).
- vectori care includ atât starea fundamentală exactă, cât și vectori din afara stării fundamentale (dar nu toți vectorii posibili din spațiul Hilbert).
2.1 Cazul 1: Subspațiul include starea fundamentală
Să presupunem că vrem să proiectăm pe un subspațiu () întins de doi vectori și . Hamiltonianul proiectat este definit de:
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]
Putem face câteva observații cheie aici.
- Deoarece am întins subspațiul cu doi vectori, dimensiunea matricei proiectate () este , adică mai mică decât matricea completă ().
- Valoarea proprie minimă a matricei proiectate coincide cu valoarea proprie a stării fundamentale exacte.
- Valorile din variabila
eigvecsdenotă amplitudinea vectorilor care întind subspațiul; folosindu-le, putem reconstitui starea proprie (starea fundamentală). În acest caz, obținem starea fundamentală exactă (la o fază globală):
2.2 Cazul 2: Subspațiul exclude unii sau toți vectorii stării fundamentale
Acum, proiectăm pe un subspațiu întins de trei vectori , și . Alegem deliberat vectorii astfel încât să excludă un vector al stării fundamentale (). Hamiltonianul proiectat este definit de:
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
Valoarea proprie în acest caz nu coincide cu valoarea proprie minimă a Hamiltonianului complet. Observația cheie este: dacă proiectăm pe un subspațiu care exclude stări ale bazei din starea noastră țintă (fundamentală) — parțial sau complet — starea fundamentală estimată va fi diferită de cea exactă.
2.3 Cazul 3: Subspațiul include atât vectori ai stării fundamentale, cât și vectori non-fundamentali
Acum, prezentăm un caz în care subspațiul este întins de vectori care includ vectorii exacti ai stării fundamentale împreună cu vectori nedoriți. Să presupunem că subspațiul nostru este întins de , (prezenți în starea fundamentală exactă) și (absent în starea fundamentală exactă).
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. ]
În acest caz, obținem din nou ca valoare proprie minimă, care coincide cu cea a matricei complete (adică, starea fundamentală exactă). Un alt rezultat interesant este amplitudinea lui returnată de procesul de proiecție și diagonalizare. Amplitudinea este , iar când reconstituim funcția de undă (starea proprie) cu amplitudinile și vectorii calculați, obținem:
Astfel, chiar dacă subspațiul include unii vectori non-țintă (alături de setul complet de vectori țintă), putem calcula valoarea proprie și starea proprie corecte, deoarece procesul de proiecție și diagonalizare filtrează vectorii non-țintă setând amplitudinile lor la . Această proprietate a SQD oferă o toleranță inerentă la zgomot.
3. Rolul quantumului în SQD
Analizele de mai sus stabilesc importanța vectorilor care întind subspațiul, care trebuie să fie în suportul stării țintă. Aceasta ridică o întrebare importantă: Cum alegem vectori cu suport al stării țintă pentru construirea subspațiului?
Aici intervin calculatoarele cuantice. Sinergia cuantică-clasică funcționează astfel în paradigma SQD:
- Folosind un Circuit cuantic potrivit, încercăm să pregătim o stare pe un calculator cuantic care va genera stări ale bazei pe care funcția de undă țintă (de exemplu, starea fundamentală) are suport semnificativ. Stările bazei eșantionate (șirurile de biți) vor întinde subspațiul pentru proiecția Hamiltonianului.
- Un calculator clasic proiectează Hamiltonianul pe subspațiu (întins de eșantioanele/vectorii de la calculatorul cuantic) și îl diagonalizează pentru a calcula valorile proprii și vectorii proprii folosind metode numerice potrivite.
Pot exista mai multe moduri de a pregăti o astfel de stare cuantică, fie variationale, fie non-variationale, în funcție de problemă.
În următoarele două lecții, vom arăta două exemple specifice de pregătire a stărilor și de eșantionare din ele.
- În Lecția 4, vom folosi un ansatz parametrizat local unitar cuplat Jastrow (LUCJ) pentru a genera eșantioane pentru o problemă de chimie (estimarea energiei stării fundamentale a moleculei ). Vom inițializa ansatz-ul LUCJ cu parametri din calculul clasic al singletelor și dubletelor cuplate (CCSD).
- În Lecția 5, vom eșantiona din stările bazei Krylov pentru a întinde subspațiul pentru o problemă de fizică a materiei condensate. Această abordare este non-variationalặ prin natură.
Pe lângă abordările specifice problemei de mai sus, o abordare generică pentru pregătirea stării implică un ansatz variational, unde vom actualiza iterativ parametrii ansatz-ului folosind un optimizator clasic.
Eșantioanele de la calculatoarele cuantice pre-tolerante la erori pot fi zgomotoase. SQD utilizează un proces de recuperare a configurației auto-consistent pentru a corecta eșantioanele zgomotoase [1]. Vom discuta procesul de recuperare a configurației mai în detaliu și îl vom aplica pentru a corecta iterativ eșantioanele zgomotoase în vederea rafinării estimării energiei stării fundamentale pentru o problemă de chimie în Lecția 4.
3.1 Note despre suportul stării fundamentale
Să explicăm mai în detaliu conceptul de suport al stării fundamentale. Suportul stării fundamentale poate fi definit ca mulțimea stărilor bazei unde starea fundamentală are amplitudine nenulă (până la un prag limită).
Să presupunem că starea fundamentală exactă a unei probleme cu qubiți este
Dacă eșantionăm starea de mai sus, ar trebui să obținem un set de stări ale bazei computaționale , (celelalte stări ale bazei computaționale au amplitudine zero în starea fundamentală și, prin urmare, în mod ideal nu vor apărea în timpul eșantionării).
În mod ideal, setul de vectori ai bazei pentru această stare constă din (cu alte cuvinte, subspațiul acestei stări este întins de acești doi vectori ai bazei).
În practică, nu trebuie să pregătim starea fundamentală exactă, deoarece eșantionarea multor altor stări ne poate oferi același set de vectori. De exemplu:
Pregătirea și eșantionarea din oricare dintre stările de mai sus vor genera vectori care au amplitudine nenulă în starea fundamentală, și toate se califică drept stări cu suport al stării fundamentale. Reține că eșantionarea lui include un vector suplimentar care are amplitudinea în starea fundamentală exactă. Totuși, am arătat anterior că includerea unor astfel de vectori în subspațiu nu este problematică, deoarece operația de proiecție și diagonalizare setează amplitudinea vectorilor nedoriți la , și putem obține valoarea proprie așteptată și reconstitui starea proprie corectă.

Astfel, pregătirea și eșantionarea din starea fundamentală exactă nu sunt necesare. De fapt, a face asta poate fi dificil, deoarece starea fundamentală exactă nu este cunoscută a priori, și adesea este benefic să nu pregătești și să eșantionezi din starea fundamentală exactă, mai ales dacă funcția de undă (starea) este asimetrică, cu unele stări ale bazei având probabilități foarte mari. Consideră următoarea funcție de undă:
Aceasta este o funcție de undă asimetrică în care stările bazei și au amplitudini mult mai mari comparativ cu și . La eșantionare, vom obține și mai frecvent ( pentru și fiecare, pentru și pentru ). Cu un buget finit de eșantionare (shots), este foarte probabil ca setul nostru eșantionat să conțină doar și . Așa cum am arătat anterior, dacă întindem subspațiul cu un astfel de set cu vectori lipsă, nu vom putea găsi valoarea proprie minimă adevărată. Prin urmare, va fi benefic (și necesar) să eșantionăm dintr-o stare cu suport al stării fundamentale.
3.2 Un argument împotriva eșantionării uniforme
Poate fi tentant să extragi eșantioane dintr-o distribuție uniformă pentru a întinde subspațiul. Deși poate funcționa pentru probleme mici, va începe să eșueze pentru probleme mai mari și mai practice. Pentru probleme mari cu mulți qubiți, spațiul Hilbert poate fi prohibitiv de mare. De exemplu, un spațiu Hilbert de 32 qubiți are mai mult de miliarde de vectori posibili ai bazei (). Dacă eșantionăm uniform din acel spațiu cu un buget finit de eșantionare (să zicem de vectori pentru a menține fezabilă diagonalizarea), subspațiul poate exclude mai des vectorii cu suport al stării fundamentale, deoarece procesul va fi aleatoriu. Prin urmare, avem nevoie de o metodă sistematică de eșantionare din suportul stării fundamentale folosind Circuit-uri cuantice.
4. SQD și raritatea funcției de undă
Decalajul dintre dimensiunile spațiului Hilbert complet și ale subspațiului fezabil aduce în discuție un alt aspect important al SQD: raritatea funcției de undă. Abordarea SQD funcționează bine pentru funcții de undă rare sau concentrate, unde o fracțiune mică din stările bazei are amplitudini non-neglijabile. Există două motive pentru aceasta:
- Dacă funcția de undă este largă (adică multe stări ale bazei au amplitudini non-neglijabile) și omitem includerea vectorilor cu suport al stării țintă în subspațiu, putem ajunge la valori proprii și vectori proprii incorecți.
- Pentru a evita problema de mai sus, trebuie să includem mulți vectori în subspațiu. Totuși, dimensiunea Hamiltonianului proiectat este direct legată de dimensiunea subspațiului. Un subspațiu mai mare va însemna un Hamiltonian mai mare, care poate deveni infezabil de diagonalizat.
Ilustrăm această problemă cu ajutorul matricei următoare (). Cea mai mică valoare proprie a lui este , iar funcția de undă corespunzătoare (starea proprie) este largă:
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]
Să presupunem că proiectăm pe un subspațiu întins de patru vectori: , , și și calculăm valoarea proprie.
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
Exemplul de mai sus arată că atunci când funcția de undă este largă și nu includem stările bazei în subspațiu, calculul valorii proprii devine incorect.
5. SQD vs. VQE
Așa cum am menționat anterior, SQD poate necesita un Circuit cuantic variational și actualizări iterative ale parametrilor pentru a pregăti și eșantiona din suportul stării fundamentale. Deoarece această rutină iterativă de actualizare a parametrilor este similară cu VQE, se poate întreba cum diferă aceste metode și care sunt avantajele SQD față de VQE. În această secțiune, comparăm metodele și discutăm avantajele SQD, folosind ca exemplu molecula descrisă cu setul de bază minimal (sto-3g).
| VQE | SQD | |
|---|---|---|
| Overhead de măsurare | Mulți termeni Pauli, multe Circuit-uri de măsurare: Hamiltonianul pentru moleculă are de termeni Pauli unici. Deoarece termenii Pauli pot conține termeni și , iar măsurătorile cuantice tipice se fac în baza , avem nevoie de schimbarea bazei de măsurare pentru a evalua acești termeni. Atunci când este optimizat pentru măsurători, cei termeni pot fi grupați în de grupuri, unde fiecare grup poate fi evaluat folosind un singur Circuit. Astfel, avem nevoie de cel puțin de Circuit-uri unice pentru a evalua toți termenii Pauli. Multe shots per Circuit pentru varianță mai mică. De asemenea, valoarea așteptată evaluată a fiecărui termen Pauli are o varianță asociată, care depinde invers de . Prin urmare, pentru a estima cu precizie fiecare termen, trebuie să alocăm multe shots per Circuit. De exemplu, pentru a atinge precizia chimică ( kcal/mol), avem de obicei nevoie de shots în ordinul - per Circuit. Astfel, VQE necesită multe Circuit-uri de măsurare, fiecare cu un anumit număr de shots. Pentru cazuri practice, acest overhead de măsurare poate fi restrictiv. | În SQD, nu avem nevoie de Circuit-uri de măsurare diferite pentru fiecare grup de termeni Pauli. De obicei, măsurăm un singur Circuit pentru un număr fix de shots. Deși putem seta numărul de shots la o valoare mare în funcție de problemă, overhead-ul rămâne mult mai mic decât în VQE. De asemenea, estimările energiei prin procesul de diagonalizare sunt exacte, adică valorile proprii calculate sunt exacte în acel subspațiu și nu au o varianță asociată lor ca în VQE. (În cazul eșantionării din stările bazei Krylov (Lecția 5), trebuie să măsurăm mai multe Circuit-uri, dar numărul de Circuit-uri rămâne mult mai mic decât în VQE). |
| Limita energiei estimate | În VQE, estimările energiei nu sunt mărginite și pot fi mai mici decât valorile minime adevărate din cauza zgomotului. | Procesul de estimare a energiei în SQD produce întotdeauna o limită superioară a energiei stării fundamentale, iar energia estimată nu va fi niciodată mai mică decât energia adevărată a stării fundamentale. |
| Toleranță la zgomot | Estimarea energiei VQE este susceptibilă la zgomot de la calculatoarele cuantice pre-tolerante la erori. | SQD are toleranță inerentă la zgomot. Calculatoarele cuantice pre-tolerante la erori pot produce eșantioane zgomotoase. Chiar dacă includem acele eșantioane în subspațiu, diagonalizarea ulterioară le poate suprima setând amplitudinile lor la zero. De asemenea, vom discuta o metodă numită recuperare a configurației în legătură cu SQD, care îmbunătățește și mai mult toleranța SQD la zgomot. |
6. Rezumat
- În SQD, un calculator cuantic generează eșantioane, iar un calculator clasic proiectează un Hamiltonian pe un subspațiu întins de eșantioane și îl diagonalizează pentru a calcula valorile proprii și vectorii proprii.
- Eșantioanele generate trebuie să provină din suportul stării țintă (fundamentale).
- În funcție de problemă, fluxul de pregătire a stării cuantice și de generare a eșantioanelor poate fi iterativ sau non-iterativ.
- SQD funcționează cel mai bine pentru funcții de undă rare. O funcție de undă largă va necesita un subspațiu mare pentru soluții precise, ceea ce face operația clasică de proiecție și diagonalizare costisitoare.
- SQD are mai multe avantaje față de VQE, cum ar fi overhead de măsurare mai mic și limita superioară a energiei stării fundamentale estimate, ceea ce îl face mai scalabil.
Referințe
[1] J. Robledo-Moreno et al., "Chemistry Beyond Exact Solutions on a Quantum-Centric Supercomputer" (2024). arXiv:quant-ph/2405.05068.