Kvanttitietokoneet

Kvanttitietokoneet varmasti tulevat hiljalleen arkikäyttöön. Millaisia etuja kvanttilaskennalla voitaisiin saada? Vaikuttaako kvanttilaskenta jo nyt meidän arkipäiväiseen elämäämme?

Klassinen tietokone perustuu sähköisten impulssien kulkemiseen. Sähkö kulkee tiukkaan pakatussa elektronisessa komponentissa, prosessorissa. Prosessori osaa tehdä hyvin yksinkertaisia toimintoja, miljardeja kertoja sekunnissa:

  • laske kaksi lukua yhteen (“ADD” komento)
  • vertaile lukujen suuruutta (“CMP”)
  • hyppää toiseen käskyyn, vertailun perusteella (“JZ”, jump if zero)
  • tallenna laskutulos muistiin (“MOV”)
  • lopeta ohjelman ajo

Esimerkki: Laske veron määrä palkasta

Otetaan hyvin yksinkertainen esimerkki, jotta päästään tietokoneen sielunelämään käsiksi aivan pohjatasolla. Veroprosenttia käyttämällä, otetaan palkasta verojen määrä. Jakolasku siis kyseessä. Koska on prosenttilasku, tarvitaan vielä vakioluku 100 mukaan.

vero = (prosentti / 100) * palkka

  • sijoitus (tapahtuu = merkin kohdalla)
  • jakolasku
  • kertolasku
  • 2 muuttujaa: veroprosentti ja palkka
  • 1 vakio: luku 100

Mikä on kvanttilaskennan idea?

Kvanttimekaniikka on luonnontiedettä. Se on joukko malleja ja teorioita, joilla voidaan parhaiten selittää nykyisen käsityksen ja myös modernien havaintolaitteiden mukainen (kvanttitason) fysikaalinen todellisuus. Mittaustulosten ja optisten tutkimusmenetelmien aikoinaan parantuessa voitiin aineen käyttäytymisessä nähdä ilmiöitä, joita klassinen Newtonilainen fysiikka ei enää selittänyt.

Kvanttilaskennan idea on käyttää tämän kvanttimekaniikan avulla rakennettuja erityisiä laitteita tietotekniikan ongelmien ratkaisuun, jotka ovat aiemmin osittain olleet “infeasible” eli normaali supertietokoneillakin liian raskaista laskea loppuun saakka. Kombinatoriset algoritmit

Algoritmin tarve ongelmanratkaisussa

Algoritmit ovat ohjelman osia, jotka ratkaisevat tärkeitä osa-ongelmia. Nyt lienee paikallaan määritellä “ongelma”: tietojenkäsittelyn kannalta ongelma on kysymys, johon voidaan muodostaa vastaus. Vaikka tietokone sinänsä kykenee käsittelemään vain numeroita, tämä ei puolestaan ole ongelma: digitointi tarkoittaa nimenomaan tiedon muuttamista numeeriseksi.

Pikselöintiefekti – digitalisaatio tuo vääjämättä pienen rosoisuuden myös usein mukanaan

Kvantifiointivirheistä tosin voisimme tippua kaivoon, mutta ohitetaan tämä toistaiseksi. Kvantifiointi tarkoittaa sitä systemaattista virhettä, joka syntyy kun “tosimaailmaa” eli meidän oikeaa elinympäristömme muunnetaan digitaaliseksi. Digitaalisuuteen liittyy aina tämä rajallinen tarkkuus: esimerkiksi valokuvat koostuvat pikseleistä, jotka ovat oikeasti elektronisesti tallennettu valon tilannekuva sillä hetkellä jolloin kuva otettiin. Digikuva ei ole täydellinen representaatio kuvaustilanteesta. Asian huomaa hyvin helposti, kun zoomaa digikuvaa: pian pikselit alkavat näyttää aika suurilta laatikoilta. Samaan tyyliin monet muutkin asiat digitaalisessa maailmassa tavallaan menettävät realismia hieman, kun asiat pakotetaan määrämittaisiin laatikoihin.

Kun tietokone, oli se klassinen tai kvanttitietokone, ratkaisee jonkin meille ihmisille tärkeän ongelman, tarvitaan taustalla usein algoritmi. Arkipäiväinen sana “koodaus” sisältää algoritmien kehityksen, vaikka tosiasiassa suuri osa koodauksesta on eräänlaisen liimaamisen kaltaista toimintaa.

Algoritmi on ohjelmointikielellä kirjoitettu ratkaisu spesifiin ongelmaan, esimerkiksi:

  • “etsi pienin luku annetusta joukosta”
  • “laske lukujoukon keskiarvo”
  • “tutki, onko annettu 2-ulotteinen esine (tasossa olevien pisteiden joukko) sellainen että reunat eivät lyö toisiaan korville”

Algoritmeja voidaan ajaa myös käsin, paperilla, ja näin tehtiinkin ennen tietokoneiden saapumista. Mekaaninen laskenta (computation) antaa nimen tietokoneelle. Tietokoneen tarkempi suomenkielinen nimi olisi pikemminkin pikalaskukone tai sähkölaskukone.

Ohjelmoija suunnittelee ja kirjoittaa ohjelman, joka suoritettuna ohjaa laskentaa ja tekee siitä deterministisen: ennakoitavan ja hallittavan. Jos algoritmissa on virhe, usein käy niin, että tietokone ei palaa rutiinista vaan se jäisi pyörimään ikuisesti. Toinen vaihtoehto on, että algoritmi antaa väärän vastauksen.

Tietokone ei siis varsinaisesti ymmärrä tai “tiedä”, kuten me ihmiset asian ymmärrämme — vaan tietokone suorittaa, laskee. Laskentapiirin mekaanisen tason toimintaperiaate ratkaisee, onko tietokone klassinen vai kvanttitietokone.

Sovelluksia – ja miten suuria hyötyjä kvanttilaskenta voi tuoda?

Liikenne voidaan jakaa periaatteessa kahteen ajallisesti erilaiseen alueeseen: reaaliaikatietoa tarvitsevaan ja pitkäaikaissuunnittelua tarvitseviin.

Reaaliaikainen pyrkii usein antamaan jokaiselle yksikölle liikenteessä tietoja, joiden avulla kuljettajat voivat tehdä parempia ratkaisuja. Auton kuski saa tiedon paremmasta reitistä, onnettomuuspaikoista, jne. Pitkäaikaissuunnittelu on enemmän kiinnostunut tulevien seuraavien muutaman vuoden tai vuosikymmenten tilanteesta: paljonko tienkäyttäjiä olisi tiellä; minne ihmiset haluavat mennä tietä pitkin, onko muita asioita joita tulee huomioida? Tiet ovat siinä mielessä mielenkiintousia, että ne asettavat rajoja myös kalustolle joka tietä pitkin voi mennä. Kalusto taas muovaa tietä, mm. pinnan kulutusta. Kaluston keskinäisestä sovusta riippuu tien vetoisuus ja onnettomuuksien määrät.

Ongelmat joita tietokoneavusteisesti tutkitaan ovat mm.:

  • miten päästä nopeiten juuri nyt omasta sijainnista toiseen kaupunkiin (navigaattori, autoon sijoitettava)
  • kuinka kannattaa suunnitella moottoritiet, jotta ne vetäisivät turvallisesti ja tehokkaasti liikennettä?
  • miten kaupungissa kannattaa suunnitella tieverkosto?
  • miten kaupunkien väliset tieverkot kannattaa suunnitella?
  • millainen kiertotie tai laajennus toisi parhaimman tuloksen ongelmatilanteeseen, esimerkiksi liikenteen kasautumiseen?

Reaaliaikainen tieto voidaan ottaa algoritmissa huomioon, tai jättää se huomioimatta. Reaaliaikaista on kaikki data, joka saadaan joko sensoreista tai ihmisen syötteistä, käytännössä siten että data reflektoi ympäristössä tapahtuvaa muutosta välittömästi.

Reaaliaikaista tietoa on esimerkkimme liikenteeseen liittyvissä algoritmeissa mm. liikenteen määrät. Liikennemäärät voivat tulla kameroilta tai autoissa olevien kuskien älypuhelimesta. Tiedoksi saadaan, montako autoa on milläkin alueella liikkeessä eli tien päällä.

Epäsuorasti reaaliaikatiedosta on paljon hyötyä: sen avulla nähdään liikenteen jumittamistilanteet, mahdollisesti onnettomuudet. Jos normaalisti vetoisuus on tietyllä tien segmentillä A, ja nyt se onkin vain 40% A:sta, jokin aiheuttaa merkittävää hidastusta; yleensä kyse on onnettomuudesta, jonka ohitusliikenne kuristuessaan hidastaa virtausta. Kaksi kaistaa antaa tuplamäärän virtausta, kun taas toisen kaistan ollessa tukossa liikenne hidastuu helposti tuon 40% tai enemmänkin.

Reaaliaikainen tieto usein joudutaan jättämään pois suunnitelmista kun tehdään pysyviä liikenteeseen vaikuttavia rakenteita, esimerkiksi tieverkkoja. Teitä itsesässään harvoin voidaan dynaamisesti muokata liikenteen perusteella. Liikennettä voidaan sen sijaan muokata, antamalla navigointiohjeita, joiden perusteella autot voivat kollektiivisesti väistää pahimmat ongelmakohdat (uudelleenreittämällä). Ohjeet tosin eivät usein ole pakottavia, mutta jos autoilija tietää ja luottaa siihen, että kone antaa optimaalisen ratkaisun, ei ole mitään syytä olla noudattamatta tätä.

Silti teidenkin rakentamisessa tilastot ovat auttamassa pitkäaikaisten ja sopivien tieverkkojen toteuttamisessa. Simuloinnin avulla voidaan varautua poikkeustilanteisiin.

Patoja rakentaessa voidaan simuloida erilaisia vedenkorkeuden tasoja, kun tunnetaan ympäröivien vesialueiden korkeusvaihtelua ja sademäärät. Pato pitää mitoittaa siten että saadaan tietyt riskitilanteet vältettyä halutulla varmuusmarginaalilla (todennäköisyydellä). Sama periaate pätee kaupunkien hulevesiä poistavan viemäriverkon suunnittelussa.

Algoritmin suunnittelu klassisessa tietokoneessa

Klassinen tarkoittaa siis nykypäivän normaalia tietokonetta, ei kvanttitietokonetta. Ajattele: Windows, ohjelmointikielenä on vaikka C, C++ tai Java. Tällaisella kokoonpanolla ajetaan suurin osa nykypäivän ohjelmistoista. Webissä kielet ovat hieman eri, mutta laskentamalli on olennaisesti sama; samoin arkkitehtuuri eli tietokoneen fyysinen kokoonpano. Tällaisille kirjoitetaan algoritmeja jotka hoitavat vaikeiden ongelmien ratkaisun.

  • Kuvankäsittelyohjelmassa algoritmeja on erilaisissa kuvafilttereissä: tehosteissa, sävyjen käsittelyfilttereissä, konenäössä
  • Animaation teko on lähes puhtaasti matemaattista tietokoneen kannalta: interpolaatiota, erilaisia käyriä kuten Bezier-käyriä (geometrisia translaatioita), positioiden laskentaa. Rasterointi tarkoittaa kuvan vääntämistä uudenlaiseen muotoon: esimerkiksi rasteroidaan neliskulmainen kuva 40 astetta käännettynä vastapäivään (tasossa). Rasterointialgoritmi päättää, mitkä pikselit piirretään, ja millä värillä ne piirretään; sekä sen, mistä kohtaa lähdekuvaa nämä pikselit poimitaan eli kopioidaan.

Algoritmit ovat ohjelmakoodia, jossa tehdään 3 vaihetta:

  • ensin mietitään, miten ongelma ratkaistaan (vaikea vaihe)
  • kirjoitetaan ratkaisuehdotuksen eli algoritmin idea pseudokoodilla (hieman matematiikan tyyliin)
  • kirjoitetaan lopulta oikea koodi, ottamalla huomioon annetun ohjelmointikielen rakenteet
  • todellisuudessa ohjelmointikielen kääntäjä (engl. “compiler”) tuottaa prosessorissa suoritettavan konekielen, joka huomioi annetun laskentaraudan eli oikean tietokoneen rekisterit ja muistin, sekä op-koodit (konekielen käskyt)
  • ajoympäristö (usein se on virtuaalikone, esim. Javassa virtuaalikonemekanismin nimi on JVM) hoitaa dynaamisen toiminnan, yhdessä käyttöjärjestelmän kanssa

Olennaista on siis laittaa ongelma sellaisiksi palasiksi koodia, että palaset voidaan suorittaa peräjälkeen.

Yksinkertainen esimerkki: satunnaisten lukujen järjestys (sorttaus)

10 satunnaisen luvun järjestys pienimmästä suurimpaan.

Mietitään miten ongelman voisi ratkaista.. Yksi hyvä askel on aina miettiä aivan yksinkertaista ongelman osa-aluetta. Kun on luvuista kyse, sen sijaan että mietitään kymmentä lukua, joille ei välttämättä oikein nouse mitään johtoajatusta, voidaan miettiä aina vain kahta lukua. Verrataan näitä keskenään. Tällöinhän on aina:

  • luku a on pienempi kuin b
  • luku b on pienempi kuin a
  • luvut ovat yhtä suuret

Nyt on saatu perusaskeleeseen jo suuntaviivat: on vain 3 “eri tapausta”. Jos a on pienempi kuin b, niin luetellaan [a,b] eli ensin a ja sitten b. Jos sen sijaan juuri päinvastainen pitää paikkansa, luodaan lukujono järjestyksessä [b,a]

Kolmannessa tapauksessa lukujonon muodostamisella ei ole oikeastaan väliä: vain jos haluamme taata ns. keskinäisen järjestyksen säilyttävän järjestysalgoritmin, on tärkeää pitää kiinni lukujen “identiteetistä”. Mutta suurimmassa osassa tapauksista on aivan sama, missä järjestyksessä kaksi yhtäsuurta lukua lueteltaisiin. Siis [a,b] tai [b,a]

Nyt saimme perustapauksen käsiteltyä. Voimme siis muodostaa aina valmist vastauslukujonoa näin kahden luvun tahtia. Mutta toimiiko tämä oikeasti? Entäs jos esimerkiksi olisi annettu lukujono:

1,5,3,6,9,-2,4,4,0,7

Ongelmaksi muodostuu se, että alun kahden oikean vastauksen jälkeen olemmekin tilanteessa [1,5] vs 3

Jos vertaamme nyt 5 ja 3 lukuja, huomaamme että kyllä, edelleen kahden luvun vertailukoneisto toimii! Tässä tapauksessa “swappaamme” nämä kaksi lukua vain keskenään, kuten sääntömme kertoi. Näin voidaan jatkaa kunnes olemme käsitelleet kaikki luvut.

Yksityiskohtina voi tulla pieniä mutkia matkaan, mutta nekin voidaan ratkaista tarkalla ajattelulla ja ohjelmointitaidoilla. Tämä äsken kerrottu menetelmä on ihan virallinen tunnettu algoritmi, nimeltään swap sort.

Klassisen algoritmin keskeiset suunniteluvaiheet ovat:

  • etenemisvaihe (redusoidaan hakuavaruutta)
  • terminointiehto (muutoin algoritmi voi jäädä ikuiseen ajoon)

Algoritmien suunnittelu kvanttitietokoneeseen

Kubitit (engl. qubit – quantum bits) ovat kvanttitietokoneessa laskennan yksiköitä. Ne on mallinnettu nykyään vielä perinteistä bittiajattelua noudattaen. Qubitit toteutetaan kvanttitietokoneissa hieman epädeterministisemmin kuin perinteisten eletronisten tietokoneiden laskenta.

Perinteisessä tietokoneessa laskenta perustuu ohjattuun virtaan (sähkö). Muistista tai rekisteristä (rekisteri on vain nopeampi osa muistia, joka on suoraan prosessorissa) voidaan hakea ja laskea toisen rekisterin kanssa lukuja yhteen; vähentää niitä toisistana, kertoa (kertolasku), tai jakaa. Lukuja ja laskutoimituksista syntyneitä tuloksia voidaan verrata. Tyypillinen vertailuoperaatio on, oliko laskutoimituksesta tuloksena nolla. Jos nolla, niin tehdään hyppy toisaalle (conditional execution).

Kvanttitietokoneessa sen sijaan laskenta perustuu materian ajoittain tuottamaan yhteyteen havaitsijaan (entanglement – coherence).

Materiaa ei voida ohjata askeleittain yhtä tarkasti kuin perinteisessä tietokoneessa. Erona ja hyötynä kvanttitietokoneessa on sen sijaan “automatismi”- eli kvanttitietokone tekee

Ainakin kvanttilaskennan teknologioita voidaan lainata, ja tuoda niitä kotikäyttöön. Eräs tällainen olisi tietoliikenteeseen soveltuva “vahvennus”: kvanttisalaus.

Salakirjoituksen käyttökohde on klassisesti jokin näistä kolmesta:

  • tiedon (datan) salaus
  • integriteetti (muuttamattomuus eli eheys)
  • autentikointi eli subjektin (ihminen tai kone) todennus

Salausmenetelmät ovat modernin tietojenkäsittelyn eräs kulmakivi. Salauksella varmistetaan ihmisten yksityisyyteen liittyvä lainsäädännöllinen suoja. Salausmenetelmien oikea käyttö periaatteessa takaa sen, että tietoihin pääsee käsiksi ainoastaan valtuutetut henkilöt, joilla on oikeus käyttää (tai muuttaa) tietoja. Pelkkä ohjelmistoteknologia ei riitä, vaan myös oikeat ja valvotut prosessit organisaatiossa vaaditaan saumattoman tietosuojan toteutumiseksi.

Salausmenetelmien rooli saattaa vielä tulla voimakkaasti kasvamaan, kun mennään yhä biologisempaan ja tarkempaan tietoon esimerkiksi terveydenhoidossa. Tiedosta voidaan myös jalostaa sellaista, että yksityisyydensuojasta tinkimättä esimerkiksi biologista dataa voidaan käyttää kansanterveyden ja tutkimuksen edistämiseen. Tällöin riittävän suurista populaatio-otoksista yhdistetään tai poimitaan tapauksia, siten että tiedon identiteetti-alkuperä häivytetään, mutta muu tietoaines esimerkiksi tilastoidaan. Näin saadaan hyödyllistä tilastoainesta, ja voidaan tehdä ihmiskuntaa hyödyttäviä valintoja oikean datan perusteella.

Digitalisoituminen on universaalia

Kaikenlainen mittaus, laskenta, ja myös aika pitkälti päätöksenteko digitalisoituu (tai on jo digitalisoitunut). Luinpa tänään, 5.1.2021, eräästä lopputyöstä jossa on tutkittu digitaalisen koiran asentoanturialgoritmin kehittämisestä. Palveluskäytössä olevien poliisikoirien elimistön ja raajojen kuormitusta halutaan mitata tarkasti.

Toisinsanoen, kaikki mitä voit kuvitella ja jopa sekin jota et ole ajatellut, todennäköisesti digitalisoituu.

Tietoturvaloukkauksissa on erityisen räikeitä tapauksia. Silloin kun jotain mittaamattoman sensitiivistä asiaa pääsee vääriin käsiin, vahinko on jo tapahtunut.

Voiko kvanttikryptaus tai kvanttitietokoneiden tarjoama mekaniikka ratkaista fundamenttejä ongelmia?

Eräs iso ongelma “tässäkin ratkaisussa” on tiedon omistajuuden todistamisen ongelma: mitä, jos biologinen alkuperäinen aivo-omistaja-ihminen on aivoiltaan esimerkiksi jo erittäin huonossa kunnossa, hänen tulisi (kenties?) kuitenkin vielä kyetä tiettyihin toimintoihin, joita mahdollisesti tarvitaan kvanttikryptatunkin tiedon käsittelyyn. Tietenkin olisi kätevää voida etukäteen ohjelmoida tiedon saatavuus siten, että se huomioi tämänkin tilanteen.

Eli voidaan ajatella että ajattelutiedon, muistojen, työmuistin suhteen on 2 vaihtoehtoa:

  • tietoinen ‘access’ eli tiedonhaku
  • tiedoton automaattinen tiedonhaku (tieto “on olemassa”, eikä vuoda vääriin käsiin)

Tällöin näiden kahden asian tiimoille syntyy jonkinlainen protokolla, jonka pitäisi olla eettinen ja myös yleisesti ymmärretty. Kvanttiteknologian käyttö varmasti tulee muuttamaan ajatteluamme ja laajentamaan tarvetta pohdiskella etiikkaa, mutta olisi suotavaa lopulta päästä kuitenkin pintatasoltaan helppokäyttöiseen tekniikkaan.

Tieto kulkee Internetissä tietokoneiden välillä määrämuotoisina paketteina. Tietoliikennepakettien salauksen saa nykyteknologiallakin auki, mutta se vaatii vielä niin paljon tietokonetehoa, että paketteja täytyy todennäköisesti säilyttää kopiona, jotta niiden purkaminen onnistuu. Deep packet inspection (DPI) tarkoittaa tällaista Internetin liikenteen avaamista.

Salausmenetelmänä nykyään (2021) käytetään kuitenkin kvanttilaskennan kannalta suhteellisen kevyitä menetelmiä, jotka murtuvat, kunhan kvanttitietokoneiden kaltainen teho on saatavilla “helposti”. Toistaiseksi kvanttitietokoneet ovat vielä harvinaisia, tyypillisesti lisäksi niiden hinta on miljoonan euron paremmalla puolella. Kvanttitietokoneita ei juurikaan vielä valmisteta sarjavalmistusmentelmien, kuten klassisia tietokoneita.

Kvanttitietokone eroaa normaalista tietokoneesta siinä, että CPU nykyisin laskee periaatteessa hyvin deterministisesti: annamme sille käskyjä, palan muistia, rekistereitä, ja CPU laskee tulokset.

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: