Skip to main content
IBM Quantum Platform

Diagonalizzazione quantistica basata su campioni (SQD)

La diagonalizzazione quantistica basata su campioni (SQD) combina l'algebra lineare classica e la potenza del calcolo quantistico per diagonalizzare una matrice hamiltoniana e calcolarne gli autovalori e gli autovettori. La diagonalizzazione delle matrici è un'importante operazione matematica, poiché molti problemi scientifici, di calcolo e di ottimizzazione utilizzano questo metodo.

Il video che segue offre una panoramica dell'SQD, dei fattori che ne determinano l'utilità e che lo rendono più veloce di molti altri approcci. Il testo successivo fornisce maggiori dettagli.


1. Introduzione e motivazione

Consideriamo l'equazione degli autovalori dell'energia resa famosa da Schrödinger, come esempio.

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

HH è l'hamiltoniana di un sistema, ψ|\psi\rangle è la funzione d'onda (nota anche come autostato) e EE è un autovalore. Gli autovalori della matrice HH rappresentano i livelli energetici del sistema. Ad esempio, se il sistema è una molecola, l'autovalore più basso rappresenta l'energia di stato fondamentale della molecola. In molti problemi, siamo interessati alla stima dell'energia dello stato fondamentale.

Applicando le tecniche di diagonalizzazione esatta dell'algebra lineare, è possibile diagonalizzare l'intera matrice HH. Tuttavia, l'approccio diventa computazionalmente costoso (o addirittura impossibile) quando la matrice diventa più grande. Ad esempio, anche per piccole molecole chimiche, HH può essere proibitivamente grande (ad esempio, l'hamiltoniana per la molecola N2N_2 con una base cc-PVDZ ha una dimensione di 65780×65780).65780 \times 65780).

Fortunatamente, non sempre abbiamo bisogno di tutti gli autovalori e gli autovettori di un'hamiltoniana HH, e quindi la diagonalizzazione dell'intera matrice non è necessaria in molti casi pratici. Ad esempio, nel caso della stima dello stato fondamentale, siamo interessati all'autovalore più basso e all'autovettore corrispondente. Questo ci permette di applicare il concetto di proiezione su un sottospazio (utile).

Si consideri una matrice N×NN \times N, HH, dove lo spazio vettoriale completo (spazio di Hilbert) ha una dimensione di NN ( NN è grande). Quindi, selezioniamo un sottospazio ( S\mathcal{S} ) - che è un sottoinsieme dell'intero spazio di Hilbert - di dimensione MM, dove MM è sufficientemente piccolo. Dopo aver proiettato HH su questo sottospazio, la matrice proiettata (ad esempio, HSH_\mathcal{S} ) sarà più piccola ( M×MM \times M ). La matrice più piccola HSH_\mathcal{S} può essere diagonalizzata con un metodo numerico classico adeguato e generare autovalori e autovettori per quel sottospazio.

Si noti che il sottospazio deve essere a supporto del nostro autostato target (ad esempio, il terreno). In altre parole, l'hamiltoniana proiettata HSH_\mathcal{S} deve trovarsi in un sottospazio che include l'autovalore più basso.


2. Proiezione e diagonalizzazione

Consideriamo di voler trovare l'autovalore minimo e l'autovettore corrispondente per la seguente matrice hamiltoniana 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}

Verrà diagonalizzata la matrice completa insieme a diverse versioni proiettate ( HSH_\mathcal{S} ) per diversi sottospazi per dimostrare la scalabilità e l'importanza della scelta del sottospazio.

L'energia dello stato fondamentale (minimo autovalore) della matrice HH è 0.5357-0.5357 e la funzione d'onda esatta dello stato fondamentale (autovettore) è:

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

cioè, lo stato fondamentale della matrice è compreso tra due stati base computazionali (vettori) 011\vert 011 \rangle e 101\vert 101 \rangle.

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)])

Output:

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 HH su diversi sottospazi e verificheremo se è possibile ottenere lo stato fondamentale esatto. In particolare, proietteremo la matrice su un sottospazio compreso tra:

  1. vettori esatti dello stato fondamentale ( 011\vert 011 \rangle e 101\vert 101 \rangle ).
  2. che esclude alcuni o tutti i vettori esatti dello stato fondamentale (ad esempio, 000\vert 000 \rangle, 011\vert 011 \rangle e 110\vert 110 \rangle ).
  3. vettori che includono sia lo stato di terra esatto sia lo stato fuori terra (ma non tutti i vettori possibili nello spazio di Hilbert).

2.1 Case-1: Il sottospazio include lo stato fondamentale

Supponiamo di voler proiettare HH in un sottospazio ( S\mathcal{S} ) spaziato da due vettori x1=011x_1 = |011\rangle e x2=101x_2 = |101\rangle. L'hamiltoniana proiettata è definita da:

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)

Output:

[[-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)]}")

Output:

Minimum eigenvalue: -0.535656000064295
Eigenvector for minimum eigenvalue: [-0.8 -0.6]

A questo proposito possiamo fare alcune osservazioni fondamentali.

  • Poiché abbiamo spaziato il sottospazio con due vettori, la dimensione della matrice proiettata ( HSH_\mathcal{S} ) è 2×22 \times 2, che è più piccola della matrice completa HH ( 8×88 \times 8 ).
  • L'autovalore minimo della matrice proiettata corrisponde all'autovalore esatto dello stato fondamentale.
  • I valori della variabile eigvecs denotano l'ampiezza dei vettori di estensione del sottospazio e, grazie ad essi, è possibile ricostruire l'autostato (stato fondamentale). In questo caso, si ottiene l'esatto stato fondamentale (fino a una fase globale):
ψ=(0.8011+0.6101)|\psi \rangle = - (0.8 |011\rangle + 0.6 |101\rangle)

2.2 Case-2: Il sottospazio esclude alcuni o tutti i vettori dello stato fondamentale

Quindi, proiettiamo HH su un sottospazio delimitato da tre vettori x1=000x_1 = |000\rangle, x2=011x_2 = |011\rangle e x3=110x_3 = |110\rangle. Scegliamo deliberatamente i vettori in modo da escludere un vettore di stato fondamentale ( 101\vert 101 \rangle ). L'hamiltoniana proiettata è definita da:

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)

Output:

[[ 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()}")

Output:

Minimum eigenvalue: -0.21108858736702252

L'autovalore 0.2111-0.2111 in questo caso non corrisponde all'autovalore minimo 0.5357-0.5357 dell'hamiltoniana completa. L'osservazione chiave è: se proiettiamo su un sottospazio che esclude gli stati base del nostro stato target (terreno) - parzialmente o completamente - lo stato terreno stimato sarà diverso da quello esatto.

2.3 Case-3: Il sottospazio include sia i vettori dello stato fondamentale che quelli non fondamentali

Successivamente, mostriamo un caso in cui il sottospazio è attraversato da vettori che includono vettori esatti dello stato fondamentale insieme a vettori indesiderati. Supponiamo che il nostro sottospazio sia spaziato da x1=011x_1 = |011\rangle, x2=101x_2 = |101\rangle (presente nello stato fondamentale esatto) e x3=111x_3 = |111\rangle (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)

Output:

[[-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)]}")

Output:

Minimum eigenvalue: -0.53565600006461
Eigenvector for minimum eigenvalue: [ 0.8  0.6 -0. ]

In questo caso, otteniamo ancora una volta 0.5357-0.5357 come autovalore minimo che corrisponde alla matrice completa (cioè allo stato fondamentale esatto). Un altro risultato interessante è l'ampiezza di x3x_3 restituita dal processo di proiezione e diagonalizzazione. L'ampiezza è 00, e quando ricostruiamo la funzione d'onda (autostato) con le ampiezze e i vettori calcolati, otteniamo:

ψ=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)

Pertanto, anche se il nostro sottospazio include alcuni vettori non bersaglio (insieme all'insieme completo dei vettori bersaglio), possiamo calcolare l'autovalore e l'autostato corretti, poiché il processo di proiezione e diagonalizzazione filtra i vettori non bersaglio impostando le loro ampiezze su 00. Questa proprietà di SQD fornisce una tolleranza intrinseca al rumore.


3. Il ruolo della meccanica quantistica nella SQD

Le analisi precedenti stabiliscono l'importanza dei vettori spanning del sottospazio, che devono essere a sostegno dello stato target. Ciò solleva una questione importante: Come scegliere i vettori con il supporto dello stato target per la costruzione del sottospazio?

È qui che entrano in gioco i computer quantistici. La sinergia quantistica-classica funziona come segue nel paradigma SQD:

  1. Utilizzando un circuito quantistico adeguato, cerchiamo di preparare uno stato su un computer quantistico che generi stati base su cui la funzione d'onda target (ad esempio, lo stato fondamentale) abbia un supporto significativo. Gli stati base campionati (bitstring) copriranno il sottospazio per la proiezione hamiltoniana.
  2. Un computer classico proietta l'hamiltoniana nel sottospazio (attraversato dai campioni/vettori del computer quantistico) e la diagonalizza per calcolare autovalori e autovettori utilizzando metodi numerici appropriati.
Uno schema delle componenti quantistiche e classiche dell'SQD. Nella meccanica quantistica, si prepara e si effettua un campionamento dal supporto di riferimento; poi, in modo classico, si proietta la matrice sul sottospazio campionato e si diagonalizza la matrice proiettata.

Ci possono essere diversi modi per preparare tale stato quantistico, che possono essere variazionali o non variazionali a seconda del problema.

Nelle prossime due lezioni mostreremo due esempi specifici di preparazione degli stati e di campionamento da essi.

  1. Nella Lezione 4, utilizzeremo un ansatz unitario locale parametrizzato di Jastrow (LUCJ) per generare campioni per un problema di chimica (stima dell'energia di stato fondamentale della molecola N2N_2 ). Inizializzeremo l'ansatz LUCJ con i parametri del classico calcolo accoppiato di cluster singoli e doppi (CCSD).
  2. Nella Lezione 5, campioneremo gli stati della base di Krylov per coprire il sottospazio di un problema di fisica della materia condensata. Questo approccio è di natura non variazionale.

Oltre agli approcci specifici al problema, un approccio generico per la preparazione degli stati prevede un ansatz variazionale, in cui aggiorneremo iterativamente i parametri dell'ansatz utilizzando un ottimizzatore classico.

Un diagramma di flusso che illustra il percorso da un circuito quantistico variazionale, passando per il campionamento quantistico, fino al calcolo classico, in cui la matrice viene proiettata e diagonalizzata. I risultati vengono quindi inseriti in un ottimizzatore classico che seleziona nuovi parametri variazionali, dopodiché si ritorna al circuito quantistico variazionale.

I campioni provenienti da computer quantistici con tolleranza ai guasti precedente possono essere rumorosi. L'SQD impiega un processo di recupero della configurazione autoconsistente per correggere i campioni rumorosi [1]. Discuteremo il processo di recupero della configurazione in modo più dettagliato e lo applicheremo per correggere i campioni rumorosi in modo iterativo per affinare la stima dell'energia dello stato fondamentale in un problema di chimica nella Lezione 4.

3.1 Note sul supporto dello stato fondamentale

Spieghiamo meglio il concetto di supporto di stato a terra. Il supporto dello stato fondamentale può essere definito come l'insieme degli stati base in cui lo stato fondamentale ha ampiezza non nulla (fino a una soglia di cutoff).

Supponiamo che lo stato fondamentale esatto di un problema di 33 -qubit sia

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

Se campioniamo lo stato di cui sopra, dovremmo ottenere un insieme di stati base computazionali {000\{\vert 000 \rangle, 111}\vert 111 \rangle \} (altri stati base computazionali hanno ampiezza zero allo stato fondamentale e quindi, idealmente, non appariranno durante il campionamento).

Idealmente, l'insieme dei vettori base per questo stato è costituito da {000,111}\{ \vert 000 \rangle, \vert 111 \rangle \} (in altre parole, il sottospazio di questo stato è attraversato da questi due vettori base).

In pratica, non è necessario preparare l'esatto stato fondamentale, poiché il campionamento di molti altri stati può fornire lo stesso insieme di vettori. Ad esempio:

ψ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}

La preparazione e il campionamento da uno qualsiasi dei suddetti stati genererà vettori con ampiezza non nulla allo stato fondamentale, e tutti si qualificheranno come aventi supporto allo stato fondamentale. Si noti che il campionamento ψc\vert \psi_c \rangle include un vettore extra 101\vert 101 \rangle che ha 00 ampiezza nello stato fondamentale esatto. Tuttavia, in precedenza abbiamo dimostrato che l'inclusione di tali vettori nel sottospazio non è problematica, poiché l'operazione di proiezione e diagonalizzazione imposta l'ampiezza dei vettori indesiderati a 00, e possiamo ottenere l'autovalore previsto e ricostruire l'autostato corretto.

Schemi che illustrano i supporti di ansatz corretti e quelli errati. Un buon ansatz ha uno spazio di supporto che contiene interamente lo spazio di supporto dello stato fondamentale. Un ansatz inadeguato contiene solo una parte o nessuna componente del supporto dello stato fondamentale.

Pertanto, non è necessario preparare e campionare dallo stato fondamentale esatto. In realtà, farlo può essere difficile, poiché lo stato fondamentale esatto non è noto a priori, e spesso è vantaggioso non preparare e campionare dallo stato fondamentale esatto, soprattutto se la funzione d'onda (stato) è skewed con alcuni stati base che hanno probabilità molto elevate. Si consideri la seguente funzione d'onda:

ψ=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

Si tratta di una funzione d'onda obliqua, in cui gli stati base 000\vert 000 \rangle e 010\vert 010 \rangle hanno ampiezze molto maggiori rispetto a 101\vert 101 \rangle e 111\vert 111 \rangle. Quando si campiona, si otterranno 000\vert 000 \rangle e 010\vert 010 \rangle più frequentemente ( sampling probability=amplitude2\text{sampling probability} = \vert \text{amplitude} \vert^{2} 49%\approx 49\% per 000\vert 000 \rangle e 010\vert 010 \rangle ciascuno, 1%\approx 1\% per 101\vert 101 \rangle, e 0.01%\approx 0.01\% per 111\vert 111 \rangle ). Con un budget di campionamento finito (scatti ), è molto probabile che il nostro insieme campionato contenga solo 000\vert 000 \rangle e 010\vert 010 \rangle. Come mostrato in precedenza, se si estende il sottospazio con un tale insieme di vettori mancanti, non si riuscirà a trovare il vero autovalore minimo. Pertanto, sarà utile (e necessario) campionare da uno stato con supporto allo stato di terra.

3.2 Un caso contro il campionamento uniforme

Si può essere tentati di estrarre campioni da una distribuzione uniforme per coprire il sottospazio. Sebbene possa funzionare per piccoli problemi, inizierà a fallire per problemi più grandi e pratici. Per problemi di grandi dimensioni con molti qubit, lo spazio di Hilbert può essere proibitivo. Ad esempio, uno spazio di Hilbert a 32 qubit ha più di 44 miliardi di possibili vettori base ( 232=4,294,967,2962^{32} = 4,294,967,296 ). Se campioniamo uniformemente da questo spazio con un budget di campionamento finito (diciamo 1000010000 vettori per mantenere il processo di diagonalizzazione fattibile), il sottospazio può escludere più spesso i vettori con supporto allo stato fondamentale, poiché il processo sarà casuale. Pertanto, abbiamo bisogno di un modo sistematico per campionare dal supporto dello stato fondamentale sfruttando i circuiti quantistici.


4. SQD e sparsità della funzione d'onda

Il divario tra le dimensioni dell'intero spazio di Hilbert e quelle del sottospazio fattibile porta con sé un altro aspetto importante della SQD, ovvero la sparsità della funzione d'onda. L'approccio SQD funziona bene per funzioni d'onda rade o concentrate, dove una piccola frazione di stati base ha ampiezze non trascurabili. Le ragioni sono due:

  1. Se la funzione d'onda è ampia (cioè molti stati base hanno ampiezze non trascurabili) e non includiamo nel sottospazio i vettori con il supporto dello stato target, potremmo ottenere autovalori ed autovettori errati.
  2. Per evitare questo problema, è necessario includere molti vettori nel sottospazio. Tuttavia, la dimensione dell'hamiltoniana proiettata è direttamente correlata alla dimensione del sottospazio. Un sottospazio più ampio significa un'Hamiltoniana più grande, che potrebbe diventare impossibile da diagonalizzare.

Mostriamo il problema con la seguente matrice ( HnewH_{new} ). L'autovalore più basso di HnewH_{new} è 2.2081-2.2081, e la funzione d'onda corrispondente (autostato) è ampia:

ψ=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)]}")

Output:

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 il HnewH_{new} su un sottospazio spaziato da quattro vettori: 000|000\rangle, 010|010\rangle, 101|101\rangle, e 110|110\rangle e calcoliamo 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)

Output:

[[-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()}")

Output:

Minimum eigenvalue: -1.4266552340586673

L'esempio precedente mostra che quando la funzione d'onda è ampia e non si includono gli stati base nel sottospazio, il calcolo degli autovalori diventa errato.


5. SQD contro VQE

Come già detto, la SQD può richiedere un circuito quantistico variazionale e aggiornamenti iterativi dei parametri per preparare e campionare il supporto dello stato fondamentale. Poiché questa routine 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 con un esempio di molecola N2N_2 descritta con un set di basi minimo (sto-3g).

 
VQE
SQD
Spese generali di misurazioneMolti termini di Pauli, molti circuiti di misura: L'hamiltoniana della molecola ha 29512951 termini di Pauli unici. Poiché i termini di Pauli possono contenere termini XX e YY e le misure quantistiche tipiche sono effettuate nella base ZZ, è necessario cambiare la base di misura per valutare questi termini. Quando sono ottimizzati per le misure, i termini di 29512951 possono essere raggruppati in gruppi di 11871187, dove ogni gruppo può essere valutato utilizzando un singolo circuito. Pertanto, abbiamo bisogno di almeno 11871187 circuiti unici per valutare tutti i termini di Pauli. Molti colpi per circuito per una varianza più stretta. Anche in questo caso, il valore di aspettativa valutato di ogni termine di Pauli ha una varianza che dipende inversamente da shots\sqrt{shots}. Pertanto, per stimare accuratamente ogni termine, dobbiamo assegnare molti scatti per circuito. Ad esempio, per ottenere l'accuratezza chimica ( 11 kcal/mol), in genere sono necessari scatti dell'ordine di 10510^5 - 10710^7 per circuito. Pertanto, il VQE necessita di molti circuiti di misura e di un certo numero di scatti per ogni circuito. Nei casi pratici, questo overhead di misurazione può essere limitante.In SQD non sono necessari circuiti di misura diversi per ogni termine di Pauli raggruppato. In genere, si misura un singolo circuito per un numero fisso di scatti. Anche se il numero di scatti può essere impostato su un valore elevato a seconda del problema, l'overhead rimane molto inferiore a quello di VQE. Inoltre, le stime dell'energia che utilizzano il processo di diagonalizzazione sono esatte, il che significa che gli autovalori calcolati sono esatti in quel sottospazio e non hanno una varianza associata ad essi come il VQE. (Nel caso del campionamento degli stati con base di Krylov (Lezione 5), è necessario misurare più circuiti, ma il numero di circuiti rimane molto più piccolo del VQE).
Energia stimata vincolataIn VQE, le stime di energia non sono vincolate e possono essere inferiori ai valori minimi reali a causa del rumore.Il processo di stima dell'energia in SQD produce sempre un limite superiore all'energia dello stato fondamentale e l'energia stimata non sarà mai inferiore alla vera energia dello stato fondamentale.
Tolleranza al rumoreLa stima dell'energia VQE è suscettibile al rumore dei computer quantistici pre-fault-tolerant.L'SQD ha una tolleranza intrinseca al rumore. I computer quantistici pre-fault-tolerant possono produrre campioni rumorosi. Anche se includiamo questi campioni nel sottospazio, la successiva diagonalizzazione può sopprimere questi campioni azzerando le loro ampiezze. Inoltre, discuteremo un metodo chiamato recupero della configurazione in relazione all'SQD che migliora ulteriormente la tolleranza al rumore dell'SQD.

  1. Nella SQD, un computer quantistico genera dei campioni e un computer classico proietta un'hamiltoniana su un sottospazio attraversato dai campioni e la diagonalizza per calcolare autovalori e autovettori.
  2. I campioni generati devono provenire dal supporto di stato target (ground).
  3. A seconda del problema, il flusso di preparazione dello stato quantistico e di generazione del campione può essere iterativo o non iterativo.
  4. L'SQD funziona meglio per le funzioni d'onda rade. Una funzione d'onda ampia richiede un ampio sottospazio per soluzioni accurate, il che rende costose le operazioni classiche di proiezione e diagonalizzazione.
  5. L'SQD presenta diversi vantaggi rispetto al VQE, come un minore overhead di misura e un limite superiore all'energia di stato fondamentale stimata, che lo rendono più scalabile.

Riferimenti

[1] J. Robledo-Moreno e altri, "Chimica oltre le soluzioni esatte su un supercomputer incentrato sui quanti" (2024). arXiv:quant-ph/2405.05068.

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.