Diagonalizzazione Quantistica Basata su Campionamento (SQD)
La diagonalizzazione quantistica basata su campionamento (SQD) combina l'algebra lineare classica e la potenza del calcolo quantistico per diagonalizzare un Hamiltoniano (matrice) e calcolarne autovalori e autovettori. La diagonalizzazione di matrici è un'operazione matematica importante, poiché molti problemi in ambito scientifico, computazionale e di ottimizzazione si avvalgono di questo metodo.
Il video qui sotto offre una panoramica di SQD, di cosa ne determina l'utilità e di cosa lo rende più veloce rispetto a molti altri approcci. Il testo successivo fornisce maggiori dettagli.
1. Introduzione e motivazione​
Prendiamo come esempio l'equazione agli autovalori dell'energia resa celebre da Schrödinger.
è l'Hamiltoniano di un sistema, è la funzione d'onda (nota anche come autostato), e è un autovalore. Gli autovalori della matrice rappresentano i livelli energetici del sistema. Ad esempio, se il sistema è una molecola, l'autovalore più basso rappresenta l'energia dello stato fondamentale della molecola. In molti problemi siamo interessati alla stima dell'energia dello stato fondamentale.
Applicando tecniche di diagonalizzazione esatta dall'algebra lineare, possiamo diagonalizzare l'intera matrice . Tuttavia, questo approccio diventa computazionalmente costoso (persino impossibile) man mano che la matrice cresce. Ad esempio, anche per piccole molecole chimiche, può essere proibitivamente grande (per esempio, l'Hamiltoniano della molecola con base cc-PVDZ ha dimensione
Fortunatamente, non sempre abbiamo bisogno di tutti gli autovalori e autovettori di un Hamiltoniano , e quindi la diagonalizzazione dell'intera matrice non è necessaria in molti casi pratici. Ad esempio, nel caso della stima dello stato fondamentale, ci interessa l'autovalore più basso e il corrispondente autovettore. Questo ci permette di applicare il concetto di proiezione su un sottospazio (utile).
Considera una matrice , , dove lo spazio vettoriale completo (spazio di Hilbert) ha dimensione ( è grande). Successivamente, selezioniamo un sottospazio () — che è un sottoinsieme dello spazio di Hilbert completo — di dimensione , dove è sufficientemente piccolo. Dopo aver proiettato su questo sottospazio, la matrice proiettata (chiamiamola ) sarà più piccola (). La più piccola può essere diagonalizzata con un adeguato metodo numerico classico, generando autovalori e autovettori per quel sottospazio.
Nota che il sottospazio deve essere nel supporto del nostro stato target (ad esempio, lo stato fondamentale). In altre parole, l'Hamiltoniano proiettato deve trovarsi in un sottospazio che include l'autovalore più basso.
2. Proiezione e Diagonalizzazione​
Supponiamo di voler trovare l'autovalore più basso e il corrispondente autovettore per la seguente matrice Hamiltoniana di dimensione .
Diagonalizzeremo la matrice completa insieme a diverse versioni proiettate () per diversi sottospazi, allo scopo di dimostrare la scalabilità e l'importanza della scelta del sottospazio.
L'energia dello stato fondamentale (autovalore minimo) della matrice è e la funzione d'onda esatta dello stato fondamentale (autovettore) è:
ovvero, lo stato fondamentale della matrice è generato da due stati della base computazionale (vettori) e .
# 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. ]
Successivamente, proietteremo la matrice su diversi sottospazi per verificare se riusciamo a ottenere lo stato fondamentale esatto. In particolare, proietteremo la matrice su un sottospazio generato da:
- vettori esatti dello stato fondamentale ( e ).
- vettori che escludono alcuni o tutti i vettori dello stato fondamentale esatto (ad esempio, , , e ).
- vettori che includono sia lo stato fondamentale esatto sia vettori estranei allo stato fondamentale (ma non tutti i vettori possibili nello spazio di Hilbert).
2.1 Caso 1: il sottospazio include lo stato fondamentale​
Supponiamo di voler proiettare su un sottospazio () generato da due vettori e . L'Hamiltoniano proiettato è definito da:
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]
Possiamo fare alcune osservazioni chiave.
- Poiché abbiamo generato il sottospazio con due vettori, la dimensione della matrice proiettata () è , più piccola della matrice completa ().
- L'autovalore minimo della matrice proiettata coincide con l'autovalore dello stato fondamentale esatto.
- I valori nella variabile
eigvecsindicano l'ampiezza dei vettori che generano il sottospazio; utilizzandoli possiamo ricostruire l'autostato (stato fondamentale). In questo caso, otteniamo lo stato fondamentale esatto (a meno di una fase globale):
2.2 Caso 2: il sottospazio esclude alcuni o tutti i vettori dello stato fondamentale​
Successivamente, proiettiamo su un sottospazio generato da tre vettori , e . Scegliamo deliberatamente i vettori in modo da escludere un vettore dello stato fondamentale (). L'Hamiltoniano proiettato è definito da:
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
L'autovalore in questo caso non corrisponde all'autovalore minimo dell'Hamiltoniano completo. L'osservazione chiave è: se proiettiamo su un sottospazio che esclude stati della base presenti nel nostro stato target (fondamentale) — parzialmente o completamente — lo stato fondamentale stimato sarà diverso da quello esatto.
2.3 Caso 3: il sottospazio include sia vettori dello stato fondamentale sia vettori non appartenenti allo stato fondamentale​
Mostriamo ora un caso in cui il sottospazio è generato da vettori che includono sia i vettori esatti dello stato fondamentale sia vettori indesiderati. Supponiamo che il nostro sottospazio sia generato da , (presenti nello stato fondamentale esatto) e (assente nello stato fondamentale esatto).
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 questo caso, otteniamo nuovamente come autovalore minimo, che corrisponde a quello della matrice completa (ovvero lo stato fondamentale esatto). Un altro risultato interessante è l'ampiezza di restituita dal processo di proiezione e diagonalizzazione. L'ampiezza è , e quando ricostruiamo la funzione d'onda (autostato) con le ampiezze e i vettori calcolati, otteniamo:
Quindi, anche se il nostro sottospazio include alcuni vettori non target (insieme all'insieme completo dei vettori target), possiamo calcolare l'autovalore e l'autostato corretti, poiché il processo di proiezione e diagonalizzazione filtra i vettori non target impostando la loro ampiezza a . Questa proprietà di SQD garantisce una tolleranza intrinseca al rumore.
3. Il ruolo del quantum in SQD​
Le analisi precedenti stabiliscono l'importanza dei vettori che definiscono il sottospazio, i quali devono essere nel supporto dello stato target. Questo solleva una domanda fondamentale: Come scegliamo i vettori con il supporto dello stato target per la costruzione del sottospazio?
È qui che entrano in gioco i computer quantistici. La sinergia quantistico-classica nel paradigma SQD funziona nel modo seguente:
- Utilizzando un circuito quantistico adeguato, cerchiamo di preparare uno stato su un computer quantistico che generi stati di base sui quali la funzione d'onda target (ad esempio, lo stato fondamentale) abbia un supporto significativo. Gli stati di base campionati (bitstring) definiranno il sottospazio per la proiezione dell'Hamiltoniano.
- Un computer classico proietta l'Hamiltoniano sul sottospazio (definito dai campioni/vettori provenienti dal computer quantistico) e lo diagonalizza per calcolare autovalori e autovettori usando opportuni metodi numerici.
Esistono diversi modi per preparare tale stato quantistico, e possono essere variazionali o non variazionali a seconda del problema.
Nelle prossime due lezioni mostreremo due esempi specifici di preparazione di stati e campionamento da essi.
- Nella Lezione 4, utilizzeremo un ansatz parametrizzato LUCJ (local unitary coupled Jastrow) per generare campioni per un problema di chimica (stima dell'energia dello stato fondamentale della molecola ). Inizializzeremo l'ansatz LUCJ con parametri provenienti dal calcolo classico CCSD (coupled cluster singles and doubles).
- Nella Lezione 5, campioneremo dagli stati di base di Krylov per definire il sottospazio per un problema di fisica della materia condensata. Questo approccio è di natura non variazionale.
Oltre agli approcci specifici al problema descritti sopra, un approccio generico per la preparazione degli stati prevede un ansatz variazionale, in cui i parametri dell'ansatz vengono aggiornati iterativamente tramite un ottimizzatore classico.
I campioni provenienti da computer quantistici pre-fault-tolerant possono essere rumorosi. SQD impiega un processo di recupero della configurazione auto-consistente per correggere i campioni rumorosi [1]. Il processo di recupero della configurazione verrà discusso in modo più dettagliato e applicato per correggere iterativamente i campioni rumorosi al fine di raffinare la stima dell'energia dello stato fondamentale per un problema di chimica nella Lezione 4.
3.1 Note sul supporto dello stato fondamentale​
Approfondiamo il concetto di supporto dello stato fondamentale. Il supporto dello stato fondamentale può essere definito come l'insieme degli stati di base in cui lo stato fondamentale ha un'ampiezza diversa da zero (fino a una soglia di cutoff).
Supponiamo che lo stato fondamentale esatto di un problema a qubit sia
Se campioniamo lo stato precedente, dovremmo ottenere un insieme di stati di base computazionale , (gli altri stati di base computazionale hanno ampiezza zero nello stato fondamentale e quindi, idealmente, non compariranno durante il campionamento).
Idealmente, l'insieme dei vettori di base per questo stato è (in altre parole, il sottospazio di questo stato è definito da questi due vettori di base).
In pratica, non è necessario preparare lo stato fondamentale esatto, poiché campionare molti altri stati può fornirci lo stesso insieme di vettori. Ad esempio:
Preparare e campionare da uno qualsiasi degli stati precedenti genererà vettori con ampiezza non nulla nello stato fondamentale, e tutti si qualificano come aventi il supporto dello stato fondamentale. Si noti che il campionamento di include un vettore in più, , che ha ampiezza nello stato fondamentale esatto. Tuttavia, abbiamo già mostrato che includere tali vettori nel sottospazio non è problematico, poiché l'operazione di proiezione e diagonalizzazione imposta l'ampiezza dei vettori indesiderati a , permettendoci di ottenere l'autovalore atteso e ricostruire l'autostato corretto.

Pertanto, preparare e campionare dallo stato fondamentale esatto non è necessario. In realtà , farlo può essere difficile dato che lo stato fondamentale esatto non è noto a priori, ed è spesso vantaggioso non preparare e campionare dallo stato fondamentale esatto, specialmente se la funzione d'onda (stato) è asimmetrica con alcuni stati di base che hanno probabilità molto elevate. Considera la seguente funzione d'onda:
Questa è una funzione d'onda asimmetrica in cui gli stati di base e hanno ampiezze molto più grandi rispetto a e . Quando campionata, otterremo e con maggiore frequenza ( per e ciascuno, per , e per ). Con un budget di campionamento finito (shots), è molto probabile che il nostro insieme campionato contenga solo e . Come mostrato in precedenza, se definiamo il sottospazio con un insieme di vettori mancanti, non saremo in grado di trovare il vero autovalore minimo. È quindi vantaggioso (e necessario) campionare da uno stato con supporto dello stato fondamentale.
3.2 Un argomento contro il campionamento uniforme​
Può essere allettante estrarre campioni da una distribuzione uniforme per definire il sottospazio. Sebbene possa funzionare per problemi piccoli, inizierà a fallire per problemi più grandi e pratici. Per problemi di grandi dimensioni con molti qubit, lo spazio di Hilbert può essere proibitivamente grande. Ad esempio, uno spazio di Hilbert a 32 qubit ha più di miliardi di vettori di base possibili (). Se campioniamo uniformemente da quello spazio con un budget di campionamento finito (ad esempio vettori per mantenere il processo di diagonalizzazione fattibile), il sottospazio potrebbe escludere più spesso i vettori con supporto dello stato fondamentale, poiché il processo è casuale. Abbiamo quindi bisogno di un modo sistematico per campionare dal supporto dello stato fondamentale sfruttando i circuiti quantistici.
4. SQD e la sparsità della funzione d'onda​
Il divario tra le dimensioni dello spazio di Hilbert completo e quelle del sottospazio fattibile introduce un altro aspetto importante di SQD: la sparsità della funzione d'onda. L'approccio SQD funziona bene per funzioni d'onda sparse o concentrate, in cui solo una piccola frazione degli stati di base ha ampiezze non trascurabili. Ci sono due ragioni alla base di ciò:
- Se la funzione d'onda è ampia (cioè molti stati di base hanno ampiezze non trascurabili) e tralasciamo di includere nel sottospazio i vettori con supporto dello stato target, potremmo ottenere autovalori e autovettori errati.
- Per evitare il problema precedente, dobbiamo includere molti vettori nel sottospazio. Tuttavia, la dimensione dell'Hamiltoniano proiettato è direttamente correlata alla dimensione del sottospazio. Un sottospazio più grande implica un Hamiltoniano più grande, che potrebbe diventare infeasibile da diagonalizzare.
Illustriamo il problema con la seguente matrice (). L'autovalore minimo di è , e la corrispondente funzione d'onda (autostato) è ampia:
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]
Supponiamo di proiettare su un sottospazio definito da quattro vettori: , , e , e di calcolare l'autovalore.
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
L'esempio precedente mostra che quando la funzione d'onda è ampia e non includiamo tutti gli stati di base nel sottospazio, il calcolo dell'autovalore diventa scorretto.
5. SQD vs. VQE​
Come accennato in precedenza, SQD può richiedere un circuito quantistico variazionale e aggiornamenti iterativi dei parametri per preparare e campionare dal supporto dello stato fondamentale. Poiché questa procedura di aggiornamento iterativo dei parametri è simile a VQE, ci si può chiedere in cosa differiscano questi metodi e quali siano i vantaggi di SQD rispetto a VQE. In questa sezione confrontiamo i metodi e discutiamo i vantaggi di SQD usando come esempio la molecola descritta con un insieme di base minimo (sto-3g).
| Â | VQE | SQD |
|---|---|---|
| Overhead di misurazione | Molti termini di Pauli, molti circuiti di misurazione: L'Hamiltoniano per la molecola ha termini di Pauli unici. Poiché i termini di Pauli possono contenere termini e , e le misurazioni quantistiche tipiche vengono effettuate nella base , abbiamo bisogno di cambiare la base di misurazione per valutare quei termini. Una volta ottimizzati per le misurazioni, i termini possono essere raggruppati in gruppi, dove ogni gruppo può essere valutato con un singolo circuito. Quindi, sono necessari almeno circuiti unici per valutare tutti i termini di Pauli. Molti shots per circuito per ridurre la varianza. Inoltre, il valore di aspettazione valutato per ciascun termine di Pauli presenta una varianza che dipende inversamente da . Pertanto, per stimare accuratamente ciascun termine, è necessario allocare molti shots per circuito. Ad esempio, per raggiungere l'accuratezza chimica ( kcal/mol), di solito si ha bisogno di shots nell'ordine di - per circuito. VQE richiede quindi molti circuiti di misurazione, ognuno con un certo numero di shots. Per i casi pratici, questo overhead di misurazione può essere limitante. | In SQD non sono necessari circuiti di misurazione diversi per ciascun gruppo di termini di Pauli. Di norma, si misura un singolo circuito per un numero fisso di shots. Anche se possiamo impostare un numero elevato di shots a seconda del problema, l'overhead rimane molto inferiore rispetto a VQE. Inoltre, le stime energetiche tramite il processo di diagonalizzazione sono esatte, nel senso che gli autovalori calcolati sono esatti in quel sottospazio e non presentano una varianza come in VQE. (Nel caso del campionamento degli stati di base di Krylov, Lezione 5, è necessario misurare più circuiti, ma il numero di circuiti rimane molto inferiore rispetto a VQE). |
| Stima dell'energia | In VQE, le stime energetiche non sono limitate e possono essere inferiori ai valori minimi reali a causa del rumore. | Il processo di stima energetica in SQD produce sempre un limite superiore all'energia dello stato fondamentale; l'energia stimata non sarà mai inferiore alla vera energia dello stato fondamentale. |
| Tolleranza al rumore | La stima energetica di VQE è suscettibile al rumore dei computer quantistici pre-fault-tolerant. | SQD ha una tolleranza al rumore intrinseca. I computer quantistici pre-fault-tolerant possono produrre campioni rumorosi. Anche se includiamo quei campioni nel sottospazio, la successiva diagonalizzazione può sopprimerli impostando le loro ampiezze a zero. Discuteremo inoltre un metodo chiamato configuration recovery in relazione a SQD, che migliora ulteriormente la tolleranza al rumore di SQD. |
6. Riepilogo​
- In SQD, un computer quantistico genera campioni e un computer classico proietta un Hamiltoniano su un sottospazio definito dai campioni e lo diagonalizza per calcolare autovalori e autovettori.
- I campioni generati devono provenire dal supporto dello stato target (fondamentale).
- A seconda del problema, il flusso di preparazione dello stato quantistico e di generazione dei campioni può essere iterativo o non iterativo.
- SQD funziona meglio per funzioni d'onda sparse. Una funzione d'onda ampia richiederà un sottospazio di grandi dimensioni per soluzioni accurate, rendendo costosa l'operazione classica di proiezione e diagonalizzazione.
- SQD presenta diversi vantaggi rispetto a VQE, come un minore overhead di misurazione e un limite superiore all'energia dello stato fondamentale stimata, che lo rendono più scalabile.
Riferimenti​
[1] J. Robledo-Moreno et al., "Chemistry Beyond Exact Solutions on a Quantum-Centric Supercomputer" (2024). arXiv:quant-ph/2405.05068.