Kvanttialgoritmit ja micro:bit-kvanttinoppa

Samu Huovinen ja Matti Heikkinen

Tässä artikkelissa esitellään lukiolaisten rakentama microbit-kvanttinoppa, joka oli lukiolaisten kilpailutyö kesän 2020 Shanghain kansainvälisillä nuorten tiedemessuilla. Artikkeli kuvaa miten kvanttitietokoneen suorittamia algoritmeja, ns. kvanttialgoritmeja, voidaan ohjelmoida lukiotason STEAM-projektissa.  Microbit-kvanttinoppa hyödyntää oikeassa kvanttitietokoneessa suoritettavaa kvanttialgoritmia nopan silmälukujen 1-6 arvonnassa. Ohjelma arpoo silmäluvun siten, että jokaisella mahdollisella lopputuloksella on sama esiintymistodennäköisyys.



Videossa on demonstraatio kvanttinopan käytöstä: Kun käyttäjä painaa micro:bitin nappia A, lähetetään kvanttitietokoneelle pyyntö arpoa kvanttinopalla nopan silmäluku. Arvonnan ollessa vielä kesken micro:bitin led-kehällä kiertävät vihreät valot symbolisoivat kvanttitilan koherenssia, eli tilannetta, jossa kvanttipiirin kolmen kubitin kvanttitilaa ei olla vielä mitattu. Punainen välähdys symbolisoi kubittien tilan määrittymistä mittaustapahtumassa, jonka jälkeen arvonnan tulos tallennetaan klassisen tietokoneen rekisteriin ja tulos esitetään micro:bitin led-näytöllä numerona sekä led-kehällä palavien ledien lukumäärän avulla.

Taustaa

Otaniemen lukiossa järjestettiin keväällä 2020 4.jaksossa kvanttilaskennan lukiokurssi, jossa lukiolaiset opettelivat ohjelmoimaan IBM:n Qiskit – kirjaston avulla oikeita kvanttipiirejä, ja piirin toimintaa ohjaavia kvanttialgoritmeja. Micro:bit -kvanttinoppasovellus rakennettin tältä tietopohjalta kesän 2020 STEAM-kesäkurssilla.

Kvanttitietokoneen muistissa informaatio esitetään kubittien avulla.  Johdanto artikkelissa kuvataan miten kvanttipiiri rakentuu systeemin tilan kuvaamiseksi tarvittavista kubiteista ja ns kvanttiporteista, joiden avulla rakennetaan kubittien väliset kytkennät ja määritetään kyseisen kvanttialgoritmin toiminta. Kun kubittiin operoidaan tietyllä kvanttiportilla, niin tällöin kubitin tila muuttuu. Kubitin tilaa havainnollistetaan usein ns. Blochin pallon pinnalle päättyvänä vektorina. Porttien H, X, Y  tai  Z-kvanttiporttien operaatiot ovat kubittivektorin kiertoja tämän pallon pinnalla. Kun kubittiin operoidaan kvanttiportilla, niin usein päädytään tilanteeseen, jossa yhden kubitin tila voi samanaikaisesti olla tilojen 0 ja 1 yhdistelmä.

Kubitin lopullinen tila määräytyy vasta kun kvanttitietokoneessa mitataan kubitin sisältämä informaatio ja tallennetaan se klassisen tietokoneen muistiin. Kun kubitin tila mitataan, niin kubitti tuhoutuu ja saatu mittaustulos tallennetaan klassisen tietokoneen rekisteriin bitin arvona 0 tai 1. Suorittamalla hyvin suuri määrä identtisiä mittauksia aivan samalla systeemillä, saadaan selville todennäköisimmät lopputilat, joihin kubitit asettautuvat kvanttiporttien vaikutuksesta. Yhtälön kertoimet a ja b liittyvät kummankin tilan esiintymistodennäköisyyksiin: luvun a neliö a^2 on todennäköisyys, että mittaustulokseksi saadaan klassinen bitti 0. Vastaavasti luvun b neliö b^2 ilmaisee todennäköisyyden saada mittaustulokseksi bitti 1.

Seuraavaksi muodostetaan kvanttitietokoneen suorittamalle nopanheitolle kaksi erillaista algoritmia, joilla voidaan arpoa silmäluvut 1 -6. Tavoite voidaan muotoilla seuraavati: Kun kolmen kubitin tila mitataan klassiseen rekisteriin, niin bittien 0 ja 1 yhdistelmän avulla on pystyttävä esittämään kuusi erillaista mittaustulosta samoilla todennäköisyyksillä.

Yksinkertainen kvanttialgoritmi ja nopan heitto

Kuvassa on esitetty miten Qiskit-kirjaston funktoiden avulla on määritelty kolmesta kubitista muodostuva kvanttipiiri.  Piirin määrittelyssä käytetyn python-koodin löydät tästä linkistä.

Kun jokaiseen kubittiin q operoidaan Hadamard-portilla eli H-portilla, asettuvat kubitit toisistaan riippumatta tilojen 0 ja 1 superpositioon:

\mid q>\ =\frac{1}{\sqrt{2}}\mid0>\ +\frac{1}{\sqrt{2}}\mid1>\

Kun yksittäisen kubitin tila mitataan, on molempien mahdollisten mittaustulosten 0 ja 1 todennäköisyys sama

P\left(0\right)=P\left(1\right)=\left(\frac{1}{\sqrt{2}}\right)^2\ =\ 0.5

Koska jokaisella kolmella kubitilla on kaksi mahdollista lopputilaa, niin kolmen bitin mittaustulos voi olla 2^3 = 8 erilaista bittien 0 ja 1 yhdistelmää.

Kun kvanttipiirin toiminta simuloidaan linkin ohjelmakoodilla, havaitaan nopanheiton mittaustulokseksi 8 erilaista lopputilaa (000, 001, 010, 011, 100, 101,  110, 111), joilla kaikilla on lähes samat esiintymistodennäköisyydet. Kun nopanheiton tulos väliltä 1 -6 arvotaan kvanttinopalla, jolla on 8 erilaista tilaa, on kvanttinoppaa heitettävä uudelleen, jos tulokseksi saadaan binäärilukuja 0 tai 7 vastaavat lopputilat.

Kehittyneemmän kvanttialgoritmin suunnitteluprosessi ja matematiikka taustalla

Luetellaan nopan heiton haluttu arvojoukko ja jokaista arvoa vastaava binääriluku, jonka sisältämien kolmen bitin arvot on saatu mittaamalla kutakin bittiä vastaavan kubitin tila.  Nopanheiton tuloksen arvojoukoksi on valittu 0 – 5 piirin suunnittelun helpottamiseksi. Taulukossa on vaakariveillä  silmälukua vastaavan binääriluvun bitit ja todennäköisyydet kuinka monesti bitin tila 1 esiintyy pystyriveillä. Esimerkiksi kubitin q2 mittaustulosten 1 jakauma on 2/6 eli 1/3.

Nopan silmäluku   bitti q2 bitti q1 bitti q0
0   0 0 0
1   0 0 1
2   0 1 0
3   0 1 1
4   1 0 0
5   1 0 1
    1/3 1/3 1/2

Huomataan, että nopan heiton arvot 0 – 5 voidaan ilmaista kolmen kubitin tilataulukossa esitetyillä bittien arvoilla. Kubitin tilan mittaustulosta eli vastaavan bitin arvojen o tai  1 esiintymistodennäköisyyksiä voidaan muuttaa ja säätää halutuksi Ry-kvanttiportilla, joka vastaa kubitin kiertoa Blochin pallolla y-akselin ympäri. Kun alkutilassa \mid0> olevaa kubittia kierretään Ry-portilla, muuttuvat samalla kubitin tilavektorin kertoimet eli todennäköisyydet. Esimerkiksi, jos kubitin tila Ry-kierron jälkeen on

\mid q>\ =\frac{\sqrt{6}}{3}\mid 0>\ +\frac{1}{\sqrt{3}}\mid 1>

tarkoittaa tämä, että kubitin tilavektorin kärki on Blochin pallolla ”lähempänä” tilaa \mid0> ja lopputilojen todennäköisyydet

P\left(0\right)=\ \left(\frac{\sqrt{6}}{3}\right)^2=\ \frac{2}{3}\ \ ja\ P\left(1\right)=\left(\frac{1}{\sqrt{3}}\right)^2=\frac{1}{3}

Kubittiin q0 liittyvä bitin mittaustodennäköisyys 0.5 on helppo toteuttaa Hadamard-portilla, joka asettaa kubitin q0 samanaikaisesti tilojen \mid0> ja \mid1> yhdistelmään eli superpositioon.
 
Tehdään uusi taulukko ilman kubittia q0:
 
 
bitti q2 bitti q1
0 0
0 0
0 1
0 1
1 0
1 0
1/3 1/3
 
 
Taulukossa on kolme erilaista kahden bitin kombinaatiota, joten taulukon tilat voidaan esittää suppeammassa muodossa
 
 
bitti q2 bitti q1
0 0
0 1
1 0
1/3 1/3
 
 
Kahden 1/3 -todennäköisyyttä vastaavan kiertoportin käyttö ei kuitenkaan toimi, koska silloin kummankin kubitin mittaustulokseksi voisi tulla yhtä aikaa 1. Tätä tilannetta ei ole arvojoukossa, jolloin tulisi vääriä (liian suuria) lukuja. Muokataan todennäköisyyksiä ja linkitetään kubitit toisiinsa:
 
bitti q2 bitti q1
1 0
1 1
0 0
2/3 1/2 * p(kubitti q2)
 
 
Nyt saadaan kubitin q1 mittaustulokselle oikea esiintyvyys. Kun kubitin q2 mittaustulos on 1, asetetaan 1/2 todennäköisyydellä kubitti q1 tilaan 1. Jos kubitin q2 mittaustulos on 0, myös kubitin q1 on tilaksi mitataan 0. Kubitti q2 ohjaa siis kubitin q1 mittaustulosta, eli kubitti q2 on ns. ohjaava kubitti, jonka vaikutus kubitin q1 tilaan voidaan toteuttaa ns. controlled Hadamard-portilla: Kubitti q1 on tilojen \mid0> ja \mid1> superpositiossa, vain jos kubitin q2 tila on 1.
 
Ongelmaksi jää, että kubitti q2:n tulokset ovat päinvastaiset. Tämän voi korjata operoimalla sitä lopuksi X-portilla (NOT), joka kääntää kubitin todennäköisyyden vastakkaiseksi. Nyt jokaisen kubitin mittaustulosten jakaumat ovat ensimmäisessä taulukon mukaiset.
 
 
Seuraavaksi tarkastellaan matematiikkaa Ry-portin taustalla, joka saa kierrossa kubitin q2 tilan 1  todennäköisyydeksi 2/3.
 
Haluttu todennäköisyys kubitin q2 tilalle 1:
\frac{2}{3}
 
Alkutila:
1|0⟩\ +\ 0|1⟩=\left[\begin{matrix} 1\\ 0 \end{matrix}\right]
 
 
Ry-porttin vaikutus pystyvektorin tilaan voidaan kuvata kiertomatriisilla:
\left[\begin{matrix} \cos\frac{\theta}{2}&-\sin\frac{\theta}{2}\\ \sin\frac{\theta}{2}&\cos\frac{\theta}{2} \end{matrix}\right]
 
Operoidaan Ry-kiertomatriisilla tilaan \mid0>:
 
\left[\begin{matrix} \cos\frac{\theta}{2}&-\sin\frac{\theta}{2}\\ \sin\frac{\theta}{2}&\cos\frac{\theta}{2} \end{matrix}\right]\left[\begin{matrix} 1\\ 0 \end{matrix}\right]=\left[\begin{matrix} \cos\frac{\theta}{2}\\ \sin\frac{\theta}{2} \end{matrix}\right]
 
Nyt saadaan tila
\cos\frac{\theta}{2}|0⟩\ +\ \sin\frac{\theta}{2}|1⟩
 
Koska  Ry-portin kiertomatriisin determinantti on 1, vektorin pituus ei muutu, mikä tarkoittaa että mahdollisten lopputilojen 0 ja 1 todennäköisyyksien summa on edelleen 1. Kun kubitin tila mitataan, saadaan klassinen arvo 0 tai 1. Niiden todennäköisyydet voi laskea:
p\left(0\right)=\left(\cos\frac{\theta}{2}\right)^2
p\left(1\right)=1-p\left(0\right)=\left(\sin\frac{\theta}{2}\right)^2
 
Haluttu todennäköisyys on
p\left(1\right)=\frac{2}{3}.
Tästä ratkaistaan \theta:
\left(\sin\frac{\theta}{2}\right)^2=\frac{2}{3}
\sin\frac{\theta}{2}=\sqrt{\frac{2}{3}}
 
\frac{\theta}{2}=\sin^{-1}\left(\sqrt{\frac{2}{3}}\right)
 
\theta=2\sin^{-1}\left(\sqrt{\frac{2}{3}}\right)\approx1.9106332
 
Ry-portilla toteutetaan siis 1.91 radiaanin eli  109 asteen kierto y-akselin ympäri.  Yllä kuvatut kubittien q0, q1 ja q2 tilatarkastelut on siis toteutettavissa seuraavalla kvanttipiirillä. Ohjaavan kubitiin q2 kierto suoritetaan controlled Hadamard-portilla, samalla q1 valitaan kohdekubitiksi.  Kubitin q0 superpositio operoidaan H-portilla.
 
 
 
kvanttialgoritmi

Kun yllä olevan kvanttipiirin toiminta simuloidaan eli kvanttialgoritmi suoritetaan hyvin monta kertaa, niin saadaan arvoja 0-5 (eli silmälukuja 1-6) vastaavat esiintymistodennäköisyydet. Havaitaan, että kaikilla arvoilla 0-5 on lähes samat esiintymistodennäköisyydet. Kehittyneemmän algoritmin toteutus pythonissa

Youtube-videossa led-kehällä varustetettu micro:bit 1 on käyttöliittymä kvanttinopan arvonnalle. Micro:bit 1 lähettää radioviestinä kvanttialgoritmin suorituspyynnön vastaanotin micro:bitille 2, joka välittää viestin kannettavalle tietokoneelle usb-serial-yhteyden kautta.