Vzorkováním založená kvantová diagonalizace (SQD)
Vzorkováním založená kvantová diagonalizace (SQD) kombinuje klasickou lineární algebru a sílu kvantových výpočtů pro diagonalizaci Hamiltoniánu (matice) a výpočet jeho vlastních hodnot a vlastních vektorů. Diagonalizace matic je důležitá matematická operace, protože tuto metodu využívá mnoho problémů ve vědě, výpočtech a optimalizaci.
Následující video poskytuje přehled SQD, čím je jeho užitečnost dána a co ho dělá rychlejším než mnoho jiných přístupů. Následující text uvádí další podrobnosti.
1. Úvod a motivace
Jako příklad uvažujme rovnici pro vlastní hodnoty energie, kterou proslavil Schrödinger.
je Hamiltonián systému, je vlnová funkce (známá také jako vlastní stav) a je vlastní hodnota. Vlastní hodnoty matice reprezentují energetické hladiny systému. Pokud je například systém molekulou, nejnižší vlastní hodnota reprezentuje energii základního stavu molekuly. V mnoha úlohách nás zajímá odhad energie základního stavu.
Aplikací technik přesné diagonalizace z lineární algebry můžeme diagonalizovat celou matici . Tento přístup se však stává výpočetně náročným (a dokonce nemožným), jak se matice zvětšuje. Například i pro malé chemické molekuly může být prohibitivně velká (například Hamiltonián pro molekulu s bází cc-PVDZ má rozměr
Naštěstí ne vždy potřebujeme všechny vlastní hodnoty a vlastní vektory Hamiltoniánu , a proto v mnoha praktických případech není diagonalizace celé matice nutná. Například v případě odhadu základního stavu nás zajímá nejnižší vlastní hodnota a odpovídající vlastní vektor. To nám umožňuje uplatnit koncept projekce na (užitečný) podprostor.
Uvažujme matici o rozměrech , kde úplný vektorový prostor (Hilbertův prostor) má dimenzi ( je velké). Dále zvolíme podprostor () — což je podmnožina celého Hilbertova prostoru — o dimenzi , kde je dostatečně malé. Po projekci na tento podprostor bude projektovaná matice (řekněme ) menší (). Menší lze diagonalizovat vhodnou klasickou numerickou metodou a získat vlastní hodnoty a vlastní vektory pro tento podprostor.
Je třeba poznamenat, že podprostor musí být v nosiči našeho cílového (například základního) vlastního stavu. Jinými slovy, projektovaný Hamiltonián musí být v podprostoru, který zahrnuje nejnižší vlastní hodnotu.
2. Projekce a diagonalizace
Předpokládejme, že chceme najít nejnižší vlastní hodnotu a odpovídající vlastní vektor pro následující Hamiltonián o rozměrech .
Pro demonstraci škálovatelnosti a důležitosti volby podprostoru budeme diagonalizovat celou matici spolu s různými projektovanými verzemi () pro různé podprostory.
Energie základního stavu (minimální vlastní hodnota) matice je a přesná vlnová funkce základního stavu (vlastní vektor) je:
tedy základní stav matice je generován dvěma výpočetními bázovými stavy (vektory) a .
# 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. ]
Dále budeme matici projektovat na různé podprostory a ověříme, zda dokážeme získat přesný základní stav. Konkrétně projektujeme matici na podprostor generovaný:
- přesnými vektory základního stavu ( a ).
- vektory, které vylučují některé nebo všechny přesné vektory základního stavu (například , a ).
- vektory, které zahrnují jak přesný základní stav, tak stavy mimo základní stav (ale ne všechny možné vektory v Hilbertově prostoru).
2.1 Případ 1: Podprostor obsahuje základní stav
Předpokládejme, že chceme promítnout do podprostoru (), který je rozpětím dvou vektorů a . Promítnutý Hamiltonián je definován takto:
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]
Zde můžeme učinit několik klíčových pozorování.
- Protože jsme podprostor vytvořili rozpětím dvou vektorů, dimenze promítnuté matice () je , což je menší než plná matice ().
- Minimální vlastní hodnota promítnuté matice odpovídá přesné vlastní hodnotě základního stavu.
- Hodnoty v proměnné
eigvecsoznačují amplitudy vektorů rozpínajících podprostor a pomocí nich dokážeme zrekonstruovat vlastní stav (základní stav). V tomto případě získáme přesný základní stav (až na globální fázi):
2.2 Případ 2: Podprostor vylučuje některé nebo všechny vektory základního stavu
Dále promítneme na podprostor vytvořený rozpětím tří vektorů , a . Vektory záměrně volíme tak, aby vylučovaly jeden vektor základního stavu (). Promítnutý Hamiltonián je definován takto:
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
Vlastní hodnota v tomto případě neodpovídá minimální vlastní hodnotě plného Hamiltoniánu. Klíčové pozorování zde je: pokud promítáme na podprostor, který vylučuje bázové stavy našeho cílového (základního) stavu – ať už částečně, nebo úplně – odhadnutý základní stav se bude lišit od přesného.
2.3 Případ 3: Podprostor obsahuje jak základní stav, tak vektory mimo základní stav
Dále ukážeme případ, kdy je podprostor generován vektory zahrnujícími jak vektory přesného základního stavu, tak nežádoucí vektory. Předpokládejme, že náš podprostor je generován vektory , (přítomné v přesném základním stavu) a (v přesném základním stavu nepřítomný).
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. ]
V tomto případě opět dostáváme jako minimální vlastní číslo , což odpovídá úplné matici (tedy přesnému základnímu stavu). Dalším zajímavým výsledkem je amplituda vrácená procesem projekce a diagonalizace. Amplituda je , a když zrekonstruujeme vlnovou funkci (vlastní stav) pomocí vypočtených amplitud a vektorů, dostáváme:
I když tedy náš podprostor obsahuje některé necílové vektory (spolu s úplnou sadou cílových vektorů), můžeme správně spočítat vlastní číslo i vlastní stav, protože proces projekce a diagonalizace odfiltruje necílové vektory tím, že jejich amplitudy nastaví na . Tato vlastnost SQD poskytuje vrozenou toleranci vůči šumu.
3. Role kvantové části v SQD
Výše uvedené analýzy ukazují důležitost vektorů generujících podprostor, které musejí být v nosiči cílového stavu. To vyvolává důležitou otázku: Jak zvolit vektory s nosičem cílového stavu pro konstrukci podprostoru?
Zde vstupují do hry kvantové počítače. Kvantově-klasická synergie funguje v paradigmatu SQD takto:
- Pomocí vhodného kvantového obvodu se snažíme na kvantovém počítači připravit stav, který generuje bázové stavy, na kterých má cílová vlnová funkce (například základní stav) významný nosič. Navzorkované bázové stavy (bitstringy) budou generovat podprostor pro projekci Hamiltoniánu.
- Klasický počítač projikuje Hamiltonián do podprostoru (generovaného vzorky/vektory z kvantového počítače) a diagonalizuje ho, aby pomocí vhodných numerických metod vypočítal vlastní čísla a vlastní vektory.
Způsobů, jak takový kvantový stav připravit, může být několik a mohou být variační nebo nevariační v závislosti na úloze.
V následujících dvou lekcích si ukážeme dva konkrétní příklady přípravy stavů a vzorkování z nich.
- V lekci 4 použijeme parametrizovaný ansatz LUCJ (local unitary coupled Jastrow) ke generování vzorků pro chemickou úlohu (odhad energie základního stavu molekuly ). LUCJ ansatz inicializujeme parametry z klasického výpočtu CCSD (coupled cluster singles and doubles).
- V lekci 5 budeme vzorkovat z Krylovových bázových stavů, abychom generovali podprostor pro úlohu z fyziky kondenzovaných látek. Tento přístup je svou povahou nevariační.
Kromě výše uvedených problémově specifických přístupů existuje obecný přístup k přípravě stavu založený na variačním ansatzu, kde iterativně aktualizujeme parametry ansatzu pomocí klasického optimalizátoru.
Vzorky z pre-fault-tolerantních kvantových počítačů mohou být zašuměné. SQD využívá samokonzistentní proces obnovy konfigurací k opravě zašuměných vzorků [1]. Proces obnovy konfigurací probereme podrobněji a iterativně jej použijeme k opravě zašuměných vzorků za účelem zpřesnění odhadu energie základního stavu pro chemickou úlohu v lekci 4.
3.1 Poznámky k nosiči základního stavu
Pojďme si koncept nosiče základního stavu vysvětlit podrobněji. Nosič základního stavu lze definovat jako množinu bázových stavů, ve kterých má základní stav nenulovou amplitudu (až po prahovou hodnotu).
Předpokládejme, že přesný základní stav -qubitové úlohy je
Pokud výše uvedený stav navzorkujeme, měli bychom získat množinu výpočetních bázových stavů , (ostatní výpočetní bázové stavy mají v základním stavu nulovou amplitudu, a proto se při vzorkování v ideálním případě neobjeví).
V ideálním případě se množina bázových vektorů tohoto stavu skládá z (jinými slovy, podprostor tohoto stavu je generován těmito dvěma bázovými vektory).
V praxi nemusíme připravovat přesný základní stav, protože vzorkování z mnoha jiných stavů nám může poskytnout stejnou množinu vektorů. Například:
Příprava a vzorkování z kteréhokoli z výše uvedených stavů vygeneruje vektory, které mají v základním stavu nenulovou amplitudu, a všechny se kvalifikují jako stavy mající nosič základního stavu. Všimni si, že vzorkování zahrnuje jeden vektor navíc, , který má v přesném základním stavu amplitudu . Dříve jsme však ukázali, že zahrnutí takových vektorů do podprostoru není problematické, protože operace projekce a diagonalizace nastaví amplitudu nežádoucích vektorů na , a tak můžeme získat očekávané vlastní číslo a zrekonstruovat správný vlastní stav.
Příprava a vzorkování z přesného základního stavu tedy není nutná. Ve skutečnosti to může být obtížné, protože přesný základní stav není a priori znám, a často je výhodné přesný základní stav nepřipravovat a z něj nevzorkovat, zejména pokud je vlnová funkce (stav) zešikmená tak, že některé bázové stavy mají velmi vysoké pravděpodobnosti. Uvažuj následující vlnovou funkci:
Toto je zešikmená vlnová funkce, kde bázové stavy a mají mnohem větší amplitudy ve srovnání s a . Při vzorkování budeme a dostávat mnohem častěji ( pro a každý, pro a pro ). Při omezeném rozpočtu vzorkování (shots) je velmi pravděpodobné, že naše navzorkovaná množina bude obsahovat pouze a . Jak bylo ukázáno dříve, pokud podprostor generujeme takovou množinou s chybějícími vektory, nebudeme schopni najít skutečné minimální vlastní číslo. Proto bude výhodné (a nezbytné) vzorkovat ze stavu s nosičem základního stavu.
3.2 Případ proti uniformnímu vzorkování
Může být lákavé odebírat vzorky z uniformního rozdělení za účelem rozpětí podprostoru. Pro malé problémy to sice může fungovat, ale pro větší a praktičtější problémy to začne selhávat. Pro velké problémy s mnoha qubity může být Hilbertův prostor neúnosně velký. Například 32qubitový Hilbertův prostor má více než miliardy možných bázových vektorů (). Pokud z tohoto prostoru uniformně vzorkujeme s konečným rozpočtem vzorků (řekněme vektorů, aby byl proces diagonalizace proveditelný), může podprostor častěji vynechat vektory s nosičem základního stavu, protože proces bude náhodný. Potřebujeme tedy systematický způsob vzorkování z nosiče základního stavu s využitím kvantových obvodů.
4. SQD a řídkost vlnové funkce
Rozdíl mezi plnou dimenzí Hilbertova prostoru a proveditelnou dimenzí podprostoru přináší další důležitý aspekt SQD, a tím je řídkost vlnové funkce. Přístup SQD funguje dobře pro řídké nebo koncentrované vlnové funkce, kde malá část bázových stavů má nezanedbatelné amplitudy. Jsou za tím dva důvody:
- Pokud je vlnová funkce široká (tedy mnoho bázových stavů má nezanedbatelné amplitudy) a vynecháme zahrnutí vektorů s nosičem cílového stavu v podprostoru, můžeme skončit s nesprávnými vlastními hodnotami a vlastními vektory.
- Abychom se vyhnuli výše uvedenému problému, musíme do podprostoru zahrnout mnoho vektorů. Dimenze projektovaného Hamiltoniánu je však přímo spojena s dimenzí podprostoru. Větší podprostor znamená větší Hamiltonián, který může být neproveditelné diagonalizovat.
Tento problém si ukážeme na následující matici (). Nejnižší vlastní hodnota je a odpovídající vlnová funkce (vlastní stav) je široká:
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]
Předpokládejme, že projektujeme na podprostor rozepnutý čtyřmi vektory: , , a , a spočítáme vlastní hodnotu.
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
Výše uvedený příklad ukazuje, že když je vlnová funkce široká a nezahrneme bázové stavy do podprostoru, výpočet vlastních hodnot bude nesprávný.
5. SQD vs. VQE
Jak bylo uvedeno dříve, SQD může potřebovat variační kvantový obvod a iterativní aktualizace parametrů pro přípravu a vzorkování z nosiče základního stavu. Protože tato iterativní rutina aktualizace parametrů je podobná VQE, lze se ptát, jak se tyto metody liší a jaké jsou výhody SQD oproti VQE? V této sekci porovnáme tyto metody a probereme výhody SQD na příkladu molekuly popsané minimální bázovou sadou (sto-3g).
| VQE | SQD | |
|---|---|---|
| Režie měření | Mnoho Pauliho členů, mnoho měřicích obvodů: Hamiltonián pro molekulu má unikátních Pauliho členů. Protože Pauliho členy mohou obsahovat členy a a typická kvantová měření se provádějí v -bázi, potřebujeme pro vyhodnocení těchto členů změnu měřicí báze. Po optimalizaci pro měření lze členů seskupit do skupin, kde každou skupinu lze vyhodnotit pomocí jediného obvodu. K vyhodnocení všech Pauliho členů tedy potřebujeme alespoň unikátních obvodů. Mnoho střel (shots) na obvod pro menší rozptyl. Vyhodnocená střední hodnota každého Pauliho členu má k sobě přiřazený rozptyl, který závisí nepřímo úměrně na . Abychom tedy mohli přesně odhadnout každý člen, musíme přidělit mnoho střel na obvod. Například pro dosažení chemické přesnosti ( kcal/mol) typicky potřebujeme počty střel v řádu - na obvod. VQE tak potřebuje mnoho měřicích obvodů, přičemž každý obvod potřebuje určitý počet střel. Pro praktické případy může být tato režie měření omezující. | V SQD nepotřebujeme pro každou skupinu Pauliho členů různé měřicí obvody. Typicky měříme jediný obvod s pevným počtem střel. Ačkoli můžeme v závislosti na problému nastavit počet střel na velkou hodnotu, režie zůstává mnohem menší než u VQE. Odhady energie pomocí diagonalizačního procesu jsou navíc přesné, což znamená, že spočítané vlastní hodnoty jsou v daném podprostoru přesné a nemají k sobě přiřazený rozptyl jako u VQE. (V případě vzorkování bázových stavů Krylovova prostoru (Lekce 5) musíme měřit více obvodů, ale počet obvodů zůstává mnohem menší než u VQE.) |
| Odhadovaná mez energie | Ve VQE nejsou odhady energie omezené a mohou být nižší než skutečné minimální hodnoty kvůli šumu. | Proces odhadu energie v SQD vždy produkuje horní mez energie základního stavu a odhadovaná energie nikdy nebude nižší než skutečná energie základního stavu. |
| Tolerance k šumu | Odhad energie ve VQE je náchylný k šumu z kvantových počítačů před érou odolnou vůči chybám (pre-fault-tolerant). | SQD má vůči šumu inherentní toleranci. Kvantové počítače před érou odolnou vůči chybám mohou produkovat zašuměné vzorky. I když takové vzorky zahrneme do podprostoru, následná diagonalizace může tyto vzorky potlačit nastavením jejich amplitud na nulu. V souvislosti se SQD také probereme metodu zvanou configuration recovery (obnova konfigurace), která toleranci SQD k šumu dále zlepšuje. |
6. Shrnutí
- V SQD kvantový počítač generuje vzorky a klasický počítač projektuje Hamiltonián na podprostor rozepnutý vzorky a diagonalizuje jej za účelem výpočtu vlastních hodnot a vlastních vektorů.
- Vygenerované vzorky by měly pocházet z nosiče cílového (základního) stavu.
- V závislosti na problému může být průběh přípravy kvantového stavu a generování vzorků iterativní nebo neiterativní.
- SQD funguje nejlépe pro řídké vlnové funkce. Široká vlnová funkce bude pro přesná řešení vyžadovat velký podprostor, což činí operace klasické projekce a diagonalizace nákladnými.
- SQD má oproti VQE několik výhod, jako je nižší režie měření a horní mez odhadované energie základního stavu, což jej činí škálovatelnějším.
Reference
[1] J. Robledo-Moreno et al., „Chemistry Beyond Exact Solutions on a Quantum-Centric Supercomputer“ (2024). arXiv:quant-ph/2405.05068.