Krylov quantum diagonalisasyon
Sa araling ito tungkol sa Krylov quantum diagonalization (KQD), sasagutin natin ang mga sumusunod:
- Ano ang paraan ng Krylov, sa pangkalahatan?
- Bakit gumagana ang paraan ng Krylov at sa anong mga kondisyon?
- Paano nakapasok ang quantum computing dito?
Ang quantum na bahagi ng mga kalkulasyon ay halaw pangunahin sa gawa sa Ref [1].
Ang video sa ibaba ay nagbibigay ng pangkalahatang-ideya ng mga paraan ng Krylov sa klasikal na computing, nagpapaliwanag ng dahilan ng paggamit nito, at nagpapaliwanag kung paano makakatulong ang quantum computing doon. Ang sumusunod na teksto ay nagbibigay ng mas detalyadong paliwanag at nagpapatupad ng isang paraan ng Krylov nang klasikal at gamit ang quantum computer.
1. Panimula sa mga paraan ng Krylovβ
Ang isang Krylov subspace method ay maaaring tumukoy sa alinman sa ilang mga pamamaraan na itinayo sa paligid ng tinatawag na Krylov subspace. Ang isang kumpletong pagsusuri nito ay lampas sa saklaw ng araling ito, ngunit ang Ref [2-4] ay makakapagbigay ng higit pang background. Dito, tututukan natin kung ano ang isang Krylov subspace, kung paano at bakit ito kapaki-pakinabang sa paglutas ng mga eigenvalue problem, at sa wakas kung paano ito maipapatupad sa isang quantum computer.
Kahulugan: Ibinigay ang isang simetriko, positibong semi-definite na na matrix , ang Krylov space ng order na ay ang espasyong spanned ng mga vector na nakuha sa pamamagitan ng pagpaparami ng mas mataas na kapangyarihan ng matrix , hanggang , kasama ang isang reference vector na .
Kahit na ang mga vector sa itaas ay nag-span ng tinatawag nating Krylov subspace, walang dahilan para isipin na magiging orthogonal ang mga ito. Kadalasan ay gumagamit ng isang iterative na proseso ng orthonormalizing na katulad ng Gram-Schmidt orthogonalization. Dito ang proseso ay bahagyang naiiba dahil ang bawat bagong vector ay ginagawang orthogonal sa mga nauna habang ito ay nalilikha. Sa kontekstong ito tinatawag itong Arnoldi iteration. Simula sa paunang vector na , nililikha ang susunod na vector na , at pagkatapos ay tinitiyak na ang pangalawang vector na ito ay orthogonal sa una sa pamamagitan ng pagbabawas ng proyeksyon nito sa . Iyon ay
Madali na ngayong makita na dahil
Ginagawa natin ang parehong bagay para sa susunod na vector, tinitiyak na ito ay orthogonal sa parehong mga nakaraang dalawa:
Kung uulitin natin ang prosesong ito para sa lahat ng na vector, magkakaroon tayo ng kumpletong orthonormal na basis para sa isang Krylov space. Pansinin na ang proseso ng orthogonalization dito ay magreresulta sa zero kapag ang , dahil ang na orthogonal na vector ay kailangang mag-span ng buong espasyo. Ang proseso ay magreresulta din sa zero kung ang anumang vector ay isang eigenvector ng dahil ang lahat ng kasunod na vector ay magiging mga multiple ng vector na iyon.
1.1 Isang simpleng halimbawa: Krylov gamit ang kamayβ
Halina't magsagawa ng isang Krylov subspace generation sa isang napakaliit na matrix, para makita natin ang proseso. Magsisimula tayo sa isang paunang matrix na interesante sa atin:
Para sa maliit na halimbawang ito, madali nating matutukoy ang mga eigenvector at eigenvalue kahit gamit ang kamay. Ipinapakita namin dito ang numerical na solusyon.
# Added by doQumentation β required packages for this notebook
!pip install -q matplotlib numpy qiskit qiskit-ibm-runtime scipy sympy
# One might use linalg.eigh here, but later matrices may not be Hermitian. So we use linalg.eig in this lesson.
import numpy as np
A = np.array([[4, -1, 0], [-1, 4, -1], [0, -1, 4]])
eigenvalues, eigenvectors = np.linalg.eig(A)
print("The eigenvalues are ", eigenvalues)
print("The eigenvectors are ", eigenvectors)
The eigenvalues are [2.58578644 4. 5.41421356]
The eigenvectors are [[ 5.00000000e-01 -7.07106781e-01 5.00000000e-01]
[ 7.07106781e-01 1.37464400e-16 -7.07106781e-01]
[ 5.00000000e-01 7.07106781e-01 5.00000000e-01]]
Itinatala natin ang mga ito dito para sa paghahambing sa bandang huli:
Nais nating pag-aralan kung paano gumagana (o nabibigo) ang prosesong ito habang pinapataas natin ang dimensyon ng ating Krylov subspace, . Para dito, ilalapat natin ang prosesong ito:
- Lumikha ng isang subspace ng buong vector space simula sa isang random na piniling vector na (tawagan itong kung ito ay normalized na, tulad ng nasa itaas).
- I-project ang buong matrix sa subspace na iyon, at hanapin ang mga eigenvalue ng projected na matrix na .
- Palakihin ang laki ng subspace sa pamamagitan ng paglikha ng higit pang mga vector, tinitiyak na ang mga ito ay orthonormal, gamit ang isang proseso na katulad ng Gram-Schmidt orthogonalization.
- I-project ang sa mas malaking subspace at hanapin ang mga eigenvalue ng resultang matrix na .
- Ulitin ito hanggang sa mag-converge ang mga eigenvalue (o sa toy case na ito, hanggang sa makabuo ka ng mga vector na nag-span ng buong vector space ng orihinal na matrix ).
Ang isang normal na implementasyon ng paraan ng Krylov ay hindi kailangang lutasin ang eigenvalue problem para sa matrix na naka-project sa bawat Krylov subspace habang ito ay nilillikha. Maaari mong itayo ang subspace ng ninanais na dimensyon, i-project ang matrix sa subspace na iyon, at i-diagonalize ang projected na matrix. Ang pag-project at pag-diagonalize sa bawat dimensyon ng subspace ay ginagawa lamang para sa pag-check ng convergence.
Dimensyon :β
Pumili tayo ng isang random na vector, halimbawa
Kung hindi pa ito normalized, i-normalize ito.
I-project na natin ang ating matrix sa subspace ng isang vector na ito:
Ito ang ating projection ng matrix sa ating Krylov subspace kapag naglalaman ito ng isang vector lamang, ang . Ang eigenvalue ng matrix na ito ay 4 nang walang karagdagang hakbang. Maaari nating isipin ito bilang ating zeroth-order na pagtatantya ng mga eigenvalue (sa kasong ito isa lamang) ng . Kahit na ito ay isang mahinang pagtatantya, ito ay nasa tamang order of magnitude.
Dimensyon :β
Lilikha tayo ngayon ng susunod na vector sa ating subspace sa pamamagitan ng operasyon gamit ang sa nakaraang vector:
Ibabawas na natin ang proyeksyon ng vector na ito sa ating nakaraang vector para matiyak ang orthogonality.
Kung hindi pa ito normalized, i-normalize ito. Sa kasong ito, ang vector ay normalized na, kaya
I-project na natin ang ating matrix A sa subspace ng dalawang vector na ito:
Nananatili pa rin tayong may problema sa pagtukoy ng mga eigenvalue ng matrix na ito. Ngunit ang matrix na ito ay bahagyang mas maliit kaysa sa buong matrix. Sa mga problemang may napakalalim na mga matrix, ang pagtatrabaho sa mas maliit na subspace na ito ay maaaring maging lubhang kapaki-pakinabang.
Kahit na hindi pa rin ito isang magandang pagtatantya, mas mabuti ito kaysa sa zeroth order na pagtatantya. Isasagawa natin ito para sa isa pang iterasyon, para matiyak na malinaw ang proseso. Gayunpaman, nasisira nito ang punto ng pamamaraan, dahil magdi-diagonalize tayo ng isang 3x3 na matrix sa susunod na iterasyon, ibig sabihin ay hindi tayo nakatipid ng oras o computational power.
Dimensyon :β
Lilikha tayo ngayon ng susunod na vector sa ating subspace sa pamamagitan ng operasyon gamit ang A sa nakaraang vector: