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 ja
liittyvät kummankin tilan esiintymistodennäköisyyksiin: luvun
neliö
on todennäköisyys, että mittaustulokseksi saadaan klassinen bitti 0. Vastaavasti luvun
neliö
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 operoidaan Hadamard-portilla eli H-portilla, asettuvat kubitit toisistaan riippumatta tilojen 0 ja 1 superpositioon:
Kun yksittäisen kubitin tila mitataan, on molempien mahdollisten mittaustulosten 0 ja 1 todennäköisyys sama
Koska jokaisella kolmella kubitilla on kaksi mahdollista lopputilaa, niin kolmen bitin mittaustulos voi olla =
erilaista bittien 0 ja 1 yhdistelmää.
Kun kvanttipiirin toiminta simuloidaan linkin ohjelmakoodilla, havaitaan nopanheiton mittaustulokseksi 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 eli
.
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 olevaa kubittia kierretään Ry-portilla, muuttuvat samalla kubitin tilavektorin kertoimet eli todennäköisyydet. Esimerkiksi, jos kubitin tila Ry-kierron jälkeen on
tarkoittaa tämä, että kubitin tilavektorin kärki on Blochin pallolla ”lähempänä” tilaa ja lopputilojen todennäköisyydet


bitti q2 | bitti q1 |
0 | 0 |
0 | 0 |
0 | 1 |
0 | 1 |
1 | 0 |
1 | 0 |
1/3 | 1/3 |
bitti q2 | bitti q1 |
0 | 0 |
0 | 1 |
1 | 0 |
1/3 | 1/3 |
bitti q2 | bitti q1 |
1 | 0 |
1 | 1 |
0 | 0 |
2/3 | 1/2 * p(kubitti q2) |





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.