Sari la conținutul principal

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.

Hψ=EψH \vert \psi \rangle = E \vert \psi \rangle

HH este Hamiltonianul unui sistem, ψ|\psi\rangle este funcția de undă (cunoscută și ca starea proprie), iar EE este o valoare proprie. Valorile proprii ale matricei HH 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ă HH. 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, HH poate fi prohibitiv de mare (de exemplu, Hamiltonianul pentru molecula N2N_2 cu baza cc-PVDZ are o dimensiune de 65780×65780).65780 \times 65780).

Din fericire, nu avem întotdeauna nevoie de toate valorile proprii și de toți vectorii proprii ai unui Hamiltonian HH, 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 N×NN \times N, HH, unde spațiul vectorial complet (spațiul Hilbert) are dimensiunea NN (NN este mare). Apoi, selectăm un subspațiu (S\mathcal{S}) — care este un subset al spațiului Hilbert complet — de dimensiune MM, unde MM este suficient de mic. După proiectarea lui HH pe acest subspațiu, matricea proiectată (să o numim HSH_\mathcal{S}) va fi mai mică (M×MM \times M). HSH_\mathcal{S} 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 HSH_\mathcal{S} 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ă 8×88 \times 8, HH.

H=[0.22350.03900.10350.08180.17460.10910.11650.01040.03900.66210.07060.19640.07820.26190.10950.00290.10350.07060.99610.17240.10670.22990.18170.15710.08180.19640.17240.17730.10190.47780.12720.04140.17460.07820.10670.10190.14180.13590.17930.07660.10910.26190.22990.47780.13590.10140.16960.05520.11650.10950.18170.12720.17930.16960.42270.27020.01040.00290.15710.04140.07660.05520.27020.4456]H = \begin{bmatrix} 0.2235 & -0.0390 & -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 \\ \end{bmatrix}

Vom diagonaliza matricea completă împreună cu diferite versiuni proiectate (HSH_\mathcal{S}) pentru diferite subspații, pentru a demonstra scalabilitatea și importanța alegerii subspațiului.

Energia stării fundamentale (valoarea proprie minimă) a matricei HH este 0.5357-0.5357, iar funcția de undă exactă a stării fundamentale (vectorul propriu) este:

GSexact=0.8011+0.6101.\text{GS}_{\text{exact}} = 0.8 * |011\rangle + 0.6 * |101\rangle.

adică, starea fundamentală a matricei este întinsă de două stări ale bazei computaționale (vectori) 011\vert 011 \rangle și 101\vert 101 \rangle.

# 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 HH 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:

  1. vectorii exacti ai stării fundamentale (011\vert 011 \rangle și 101\vert 101 \rangle).
  2. vectori care exclud unii sau toți vectorii exacti ai stării fundamentale (de exemplu, 000\vert 000 \rangle, 011\vert 011 \rangle și 110\vert 110 \rangle).
  3. 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 HH pe un subspațiu (S\mathcal{S}) întins de doi vectori x1=011x_1 = |011\rangle și x2=101x_2 = |101\rangle. Hamiltonianul proiectat este definit de:

HS=[x1Hx1x1Hx2x2Hx1x2Hx2]H_\mathcal{S} = \begin{bmatrix} \langle x1 | H | x1 \rangle & \langle x1 | H | x2 \rangle \\ \langle x2 | H | x1 \rangle & \langle x2 | H | x2 \rangle \end{bmatrix}
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 (HSH_\mathcal{S}) este 2×22 \times 2, adică mai mică decât matricea completă HH (8×88 \times 8).
  • Valoarea proprie minimă a matricei proiectate coincide cu valoarea proprie a stării fundamentale exacte.
  • Valorile din variabila eigvecs denotă 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ă):
ψ=(0.8011+0.6101)|\psi \rangle = - (0.8 |011\rangle + 0.6 |101\rangle)

2.2 Cazul 2: Subspațiul exclude unii sau toți vectorii stării fundamentale

Acum, proiectăm HH pe un subspațiu întins de trei vectori x1=000x_1 = |000\rangle, x2=011x_2 = |011\rangle și x3=110x_3 = |110\rangle. Alegem deliberat vectorii astfel încât să excludă un vector al stării fundamentale (101\vert 101 \rangle). Hamiltonianul proiectat este definit de:

HS=[x1Hx1x1Hx2x1Hx3x2Hx1x2Hx2x2Hx3x3Hx1x3Hx2x3Hx3]H_\mathcal{S} = \begin{bmatrix} \langle x1 | H | x1 \rangle & \langle x1 | H | x2 \rangle & \langle x1 | H | x3 \rangle\\ \langle x2 | H | x1 \rangle & \langle x2 | H | x2 \rangle & \langle x2 | H | x3 \rangle \\ \langle x3 | H | x1 \rangle & \langle x3 | H | x2 \rangle & \langle x3 | H | x3 \rangle \\ \end{bmatrix}
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 0.2111-0.2111 în acest caz nu coincide cu valoarea proprie minimă 0.5357-0.5357 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 x1=011x_1 = |011\rangle, x2=101x_2 = |101\rangle (prezenți în starea fundamentală exactă) și x3=111x_3 = |111\rangle (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 0.5357-0.5357 ca valoare proprie minimă, care coincide cu cea a matricei complete (adică, starea fundamentală exactă). Un alt rezultat interesant este amplitudinea lui x3x_3 returnată de procesul de proiecție și diagonalizare. Amplitudinea este 00, iar când reconstituim funcția de undă (starea proprie) cu amplitudinile și vectorii calculați, obținem:

ψ=0.8011+0.6101+0.0111=0.8011+0.6101(exact ground state)\vert \psi \rangle = 0.8 |011\rangle + 0.6 |101\rangle + 0.0 |111\rangle = 0.8 |011\rangle + 0.6 |101\rangle \left( \text{exact ground state} \right)

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 00. 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:

  1. 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.
  2. 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. A diagram of quantum and classical components of SQD. In quantum, you prepare and sample from your target support, you classically project your matrix onto the sampled subspace and diagonalize your projected matrix. 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.

  1. Î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 N2N_2). Vom inițializa ansatz-ul LUCJ cu parametri din calculul clasic al singletelor și dubletelor cuplate (CCSD).
  2. Î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. A flow chart from a variational quantum circuit through quantum sampling over to classical computing in which the matrix is projected and diagonalized. Then the results are fed into a classical optimizer which selects new variational parameters, and we return to the variational quantum circuit. 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 33 qubiți este

ψ=12000+12111\vert \psi \rangle = \frac{1}{\sqrt{2}} \vert 000 \rangle + \frac{1}{\sqrt{2}} \vert 111 \rangle

Dacă eșantionăm starea de mai sus, ar trebui să obținem un set de stări ale bazei computaționale {000\{\vert 000 \rangle, 111}\vert 111 \rangle \} (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 {000,111}\{ \vert 000 \rangle, \vert 111 \rangle \} (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:

ψa=0.8000+0.6111Sampling{000,111}ψb=12000+32111Sampling{000,111}ψc=12000+12111+12101Sampling{000,101,111}\begin{align} \vert \psi_a \rangle = 0.8 \vert 000 \rangle + 0.6 \vert 111 \rangle &\xrightarrow{\text{Sampling}} \{ \vert 000 \rangle, \vert 111 \rangle \} \\ \vert \psi_b \rangle = \frac{1}{2} \vert 000 \rangle + \frac{\sqrt{3}}{2} \vert 111 \rangle &\xrightarrow{\text{Sampling}} \{ \vert 000 \rangle, \vert 111 \rangle \} \\ \vert \psi_c \rangle = \frac{1}{2} \vert 000 \rangle + \frac{1}{2} \vert 111 \rangle + \frac{1}{\sqrt{2}} \vert 101 \rangle &\xrightarrow{\text{Sampling}} \{ \vert 000 \rangle, \vert 101 \rangle, \vert 111 \rangle \} \end{align}

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 ψc\vert \psi_c \rangle include un vector suplimentar 101\vert 101 \rangle care are amplitudinea 00 î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 00, și putem obține valoarea proprie așteptată și reconstitui starea proprie corectă.

Diagrams of good and bad ansatz supports. A good ansatz has support that completely contains the ground state support. A poor ansatz contains only part or none of the ground state support.

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ă:

ψ=0.70000.7010+0.11010.01111\vert \psi \rangle = 0.7 \vert 000 \rangle - 0.7 \vert 010 \rangle + 0.1 \vert 101 \rangle - 0.01 \vert 111 \rangle

Aceasta este o funcție de undă asimetrică în care stările bazei 000\vert 000 \rangle și 010\vert 010 \rangle au amplitudini mult mai mari comparativ cu 101\vert 101 \rangle și 111\vert 111 \rangle. La eșantionare, vom obține 000\vert 000 \rangle și 010\vert 010 \rangle mai frecvent (probabilitate de eșantionare=amplitudine2\text{probabilitate de eșantionare} = \vert \text{amplitudine} \vert^{2} 49%\approx 49\% pentru 000\vert 000 \rangle și 010\vert 010 \rangle fiecare, 1%\approx 1\% pentru 101\vert 101 \rangle și 0.01%\approx 0.01\% pentru 111\vert 111 \rangle). Cu un buget finit de eșantionare (shots), este foarte probabil ca setul nostru eșantionat să conțină doar 000\vert 000 \rangle și 010\vert 010 \rangle. 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 44 miliarde de vectori posibili ai bazei (232=4.294.967.2962^{32} = 4.294.967.296). Dacă eșantionăm uniform din acel spațiu cu un buget finit de eșantionare (să zicem 1000010000 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:

  1. 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.
  2. 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 (HnewH_{new}). Cea mai mică valoare proprie a lui HnewH_{new} este 2.2081-2.2081, iar funcția de undă corespunzătoare (starea proprie) este largă:

ψ=000+001+010+011+100+101+110+1118|\psi\rangle = \frac{|000\rangle + |001\rangle + |010\rangle + |011\rangle + |100\rangle + |101\rangle + |110\rangle + |111\rangle}{\sqrt{8}}
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 HnewH_{new} pe un subspațiu întins de patru vectori: 000|000\rangle, 010|010\rangle, 101|101\rangle și 110|110\rangle ș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 N2N_2 descrisă cu setul de bază minimal (sto-3g).

 VQESQD
Overhead de măsurareMulți termeni Pauli, multe Circuit-uri de măsurare: Hamiltonianul pentru moleculă are 29512951 de termeni Pauli unici. Deoarece termenii Pauli pot conține termeni XX și YY, iar măsurătorile cuantice tipice se fac în baza ZZ, avem nevoie de schimbarea bazei de măsurare pentru a evalua acești termeni. Atunci când este optimizat pentru măsurători, cei 29512951 termeni pot fi grupați în 11871187 de grupuri, unde fiecare grup poate fi evaluat folosind un singur Circuit. Astfel, avem nevoie de cel puțin 11871187 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 shots\sqrt{shots}. Prin urmare, pentru a estima cu precizie fiecare termen, trebuie să alocăm multe shots per Circuit. De exemplu, pentru a atinge precizia chimică (11 kcal/mol), avem de obicei nevoie de shots în ordinul 10510^5-10710^7 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 zgomotEstimarea 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

  1. Î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.
  2. Eșantioanele generate trebuie să provină din suportul stării țintă (fundamentale).
  3. Î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.
  4. 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.
  5. 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.