Af Torben Okholm, Alt om Data
Denne artikel er oprindeligt bragt på Alt om Data. Computerworld overtog i november 2022 Alt om Data. Du kan læse mere om overtagelsen her.
Begrebet kvantecomputer har tiltrukket sig opmærksomhed fra store virksomheder, akademikere og hobbyfolk. Denne artikel dækker historien, de forskellige former for kvantecomputer og logikken bag programmeringen. Du skal også stifte bekendtskab med nogle programmeringsværktøjer, som du kan komme i gang med.
Når man skal køre en kvantecomputer, skal det fysiske være i orden, så programmørerne kan manipulere og måle de endelige resultater. Videnskabsfolk har iagttaget kvanteeffekter i fotoner, elektroner og isotoper af mange materialer. Det betyder, at ingeniører bruger superledende materialer som niobium og aluminium til at konstruere anvendelige kvantercomputersystemer.
De logiske gates bliver lavet af siliciumwafers og bliver styret med mikrobølgesendere. Disse løsninger er muligvis ikke de bedste i det lange løb, men det er dem, der kører i øjeblikket. Når man vil bruge kvantecomputere, skal man bruge logik, der drager fordel af to begreber: super-position og entanglement. Når man begynder at udforske disse begreber, kan Bloch Sphere være med til at visualisere, hvad man skal gøre med forskellige gates. Programmerører kan bruge klassiske bit-gates sammen med kvantegates til at oprette de nødvendige algoritmer.
Mainstreammedier hylder kvantecomputere som markant hurtigere end de aktuelle modeller. Det viser sig dog, at de kun er hurtige på specifikke områder: kryptografi, optimering og database-søgninger. I kryptografi er mange algoritmer sikre, fordi faktorisering af store primtal med klassiske computere vil tage så lang tid, at det ikke giver praktisk mening.
Shors kvantealgoritme kan gøre det på få minutter. Optimering og simulationer kan nyde godt af en kvantecomputers evne til at teste mange løsninger på en gang. Databasesøgninger er hurtigere med en faktor fire. Og med hurtigere databasesøgninger bliver maskinindlæring også langt hurtigere.
Kvantecomputernes historie begynder med kvantefysik. I 1900 foreslog Max Planck som den første, at lys bliver båret i diskrete pakker, såkaldte kvanter. Denne opdagelse fik Einstein til at vise, at Planck havde ret.
Når videnskabsfolkene målte den fotoelektriske effekt, kunne de observere pakkernes adfærd. Disse to opdagelser førte senere til kvantefysikken. Men jo dybere videnskaben dykkede ned i tingenes kvantenatur, desto sværere blev det at forklare, hvordan det hænger sammen. I tilfældet kvantecomputere er de mest interessante udviklinger entanglement og superposition.
Superposition er det fænomen, at en partikel eksisterer i mange positioner på samme tid. Det fik forskerne til at konkludere, at det måtte være muligt at lave en kvante-computer. En kvantecomputer er en computer, der kan foretage mange beregninger pr. operation.
Katten i kassen
Den berømte fysiker Schrödinger foretog et tankeeksperiment. Han beskriver en kat og en gasbeholder i en kasse. Gassen vil forgive katten, efter at den radioaktive henfaldelse af et atom frigiver gassen.
Processen er vilkårlig, og iagttagerne kan derfor ikke vide, om katten er død eller levende, før de åbner kassen. I kvantefysik betyder det, at katten er både død og levende, før nogen ser den. Når vi taler om katten, lyder det absurd, men i kvantefysik er det normalt. Det, Schrödinger sagde, var, at der må være en anden forklaring. En, der ikke var opdaget.
Et andet fænomen er entanglement, hvor to partikler har sammenflettede tilstande. Det betyder, at en partikels tilstand altid vil være modsat den anden, også hvis de ikke er sammen. I kvantecomputere skaber softwaren entanglement, og det er et CNOT-gate, der danner denne tilstand.
For at udnytte alle de fænomener, der er demonstreret i kvantefysik, måtte forskerne finde en metode til at bekrive, hvad der sker i mindre målestok. Når man skal programmere en computer, kræver den logiske operationer, også kaldet logiske gates. Kvantegates og klassiske logiske gates er samme sag op til et vist punkt. Kvantegates tilføjer funktioner til ændring af tilstande og entanglement.
Der skulle gå indtil 1970’erne, før verden så det første forsøg på at bruge kvanteeffekter på computere. Shannons informationsteori beskriver klassiske gates og andre aspekter ved databearbejdelse. Det er utilstrækkeligt til kvantecomputere, fordi det ikke specifikt beskriver kvanteeffekter.
![](https://www.computerworld.dk/uploads/aod/2018/08/LXF237.feat2_quantum3-1024x576.jpg)
Kvanteinformationsteori blev forsøgt i 1976. I 1980’erne gjorde forskerne større fremskridt, delvis takket være kvantecomputerkonferencer, der blev afholdt af MIT og IBM. Andre interessante områder omfattede kvantekryptografi og den første universelle kvantecomputer.
Hvis programmørerne skulle gøre brug af alle den målte partikels tilstande, måtte de opfinde et formelt sprog. Kvanteinformationsteori skulle blive bedre. De forskellige gates er grundlaget for sådan en udvikling.
Det er forvirrende at prøve at holde styr på, hvad de forskellige kvantetilstande er. For det første er den måde, de fungerer på, alt andet end intuitiv. For det andet er der mange forskellige roterende akser at holde rede på. Systemet er ikke kompliceret, men det omfatter atypiske tilgange, der er svære at begribe. Med det formål at få alle tilstandsovergangene til at give mening skabte fysikerne Bloch Sphere.
Peter Shor beskrev Shors algoritme i 1994. Denne algoritme løser problemet med at finde primfaktorer for store tal. Grundlaget for al kryptering er, at man ikke kan løse dette problem på en overskuelig tid. Kvantecomputere kan løse problemet på få minutter. Interessen for kvantecomputere steg kolossalt.
Kort efter Shors opdagelse opfandt Lov Grover Grover-algoritmen. Den er bedst kendt som databasesøgealgoritmen, men den er også nyttig til andre opgaver.
I de følgende årtier opfandt forskerne nye funktioner Kvantefejlretning og fejltolerante kvantecomputere var blandt de vigtigste. Den første demonstration af en kvantecomputer fandt sted i 1998. Herefter accelererede udviklingen.
Kryptering kan komme i fare
Et stort spørgsmål er, om krypteringssystemer bliver bragt i fare af kvante-computere. Den største bekymring gælder RSA-kryptering. Systemet er sikkert, fordi det bygger på den omstændighed, at faktorering af et stort tal i dets primfaktorer er for tidskrævende. Når man prøver at finde primtallene, findes der mange strategier, og den enkleste består i at gætte og prøve.
Det er dog ikke nogen praktisk løsning, eftersom et tal på 2.048 bit vil have millioner af løsninger. Nogle strategier kan reducere antallet af mulige løsninger, men selv de stærkeste metoder kræver op til flere millioner år. Med de rigtige algoritmer vil en kvantecomputer kunne reducere det tidsrum til et praktisk niveau.
Man arbejder på at lave andre algoritmer, der ikke kan brydes på denne måde. Det er klogt, men risikoen for, at en kvantecomputer kan klare det før om 15 år, er lav. De kvantecomputere, der findes i dag, er både små og svære at programmere. Og der er kun få og spredte programmeringsmiljøer.
Som du kan læse andetsteds i denne artikel, vil vi stadig indstille nogle få qubit-tilstande og vride tilstandene. At konvertere denne praksis til en effektiv krypteringsbryder ligger langt ude i horisonten.
Bose, Einstein og Joseph går ind i en bar
I dag er der en række kvantecomputere i brug. Forskerne bruger ion-fælder, lysbaserede og mikrobølgestyrede Bose-Einstein-kondensater. Disse typer kræver kontrolmekanismer. Ion-fælderne bruger et elektromagnetisk felt til at fange ionerne. Lasere danner feltet og holder ionen fanget og “pumper” ionens tilstand. Elektronen udsender kun lys, når tilstanden matcher laserens frekvens.
Dette er den logiske 1-tilstand, mens den logiske 0-tilstand er den modsatte. Det gør det enkelt at måle, men det er stadig en udfordring at opnå præcision. Produktion er også kostbar ved hjælp af eksisterende teknologier. I mellemtiden har vi et Bose-Einstein-kondensat, der er en gas, som er afkølet til millikelvin-temperaturer. Når gassen kommer ned på denne temperatur, antager alle elektroner den samme kvantetilstand. Anvendelsesmulighederne for denne løsning er foreløbig begrænset til simulatorer – egentlige computere er stadig kun en drøm.
De interessante typer er de forskellige Josephson junction-typer. Dem har man faktisk kørende i praktiske opsætninger. IBM’s versioner er sågar tilgængelige for alle, der lader sig registrere på Q-experience-websiden.
D-waves maskine bruger Josephson junctions. Det drejer sig om superledende niobium- og aluminiumoxid-gates. Ved temperaturer tæt på det absolutte nulpunkt måler en SQUID deres magnetiske egenskaber. En SQUID er et sensitivt magnetometer. Værdierne viser kvantetilstanden for en junction og gør kredsløbet til en qubit. Det princip, som denne computer bruger, er kvante-annealing.
IBM’s løsning er Nuclear Magnetic Resonance (NMR). Qubitten er stadig et Josephson-gate. Den løsning bruger mikrobølge-transmittere til at interagere med qubitten. Forskellen på de to er, at IBM-løsningen i højere grad kontroller qubits. Det har gjort det nemmere for det canadiske firma D-Wave at producere større chips.
Samtidig begrænser det D-wave til færre applikationer. For eksempel kan et annealing-system hverken køre Shors algoritme eller Grovers. Det er nyttigt til optimering og maskinindlæring. Det er ikke så sært, at Google allerede har sin egen D-wave kvantecomputer.
![](https://www.computerworld.dk/uploads/aod/2018/08/LXF237.feat2_quantum2-1024x576.jpg)
Mere kraft, mindre arbejde
Som tidligere nævnt er algoritmerne i kvantecomputere forskellige. Hvis man skal forstå, hvori forskellen består, må man tænke på den fysik, der er involveret. Som de fleste læsere vil vide, bruger en konventionel computer gates. Systemet bruger boolsk logik til at oprette de algoritmer, der skal beregne alting.
Det vigtigste aspekt er, at det er deterministisk, og derfor har vi kun med visheder at gøre, Svaret er enten ja eller nej – i hvert fald på kredsløbsniveau. Omvendt inddrager kvantecomputere alle de svar, der har en troværdighed knyttet til dem. Intet svar er sikkert – det er snarere sandsynligt. Hvis det skal være effektivt, må algoritmerne være tilpasset herefter.
Kvantegates har en effekt på en eller flere qubits samtidig. Når man måler qubits, foretager systemet som regel en komplet analyse af hele systemet. Hvis man altså søger efter en qubit, vil den være meget synlig i én operation. Bemærk, at én operation består af mange skud fra de samme gates. Det er en af grundene til, at kvantecomputere er hurtigere end en konventional maskine.
Det mest udbredte scenario er at finde det specielle tal ud af mange, for eksempel ved en databasesøgning. Den næstmest udbredte består i at bryde kryptering. Med Shors algoritme kan man måle løsningen ved gatenes handling. De kører inputtet et fast antal gange, før de finder svaret. Det antal ændrer sig ikke, når inputtet er et højere tal.
En klassisk computer tvinger dig til at afprøve alle mulige svar. Det betyder, at når tallet når op på 2048, kan man se frem til måske millioner af år, før opgaven er løst. Flere tal betyder eksponentiel stigning i arbejdsbyrden. Bemærk, at anstrengelsen for at løse problemet ikke stiger i en kvantecomputer.
Kvantesimulatorer
Der findes et væld af simulatorer, der kan hjælpe med at vise, hvordan kvantecomputere virker. Man kan dog aldrig simulere en effektivt, men hvis du vil forstå de underliggende principper, er mange af dem fremragende. Den første, der er værd at prøve, er en Bloch Sphere-simulator. Hvis du ikke har blot den mest rudimentære forståelse for Bloch Sphere, får du svært ved at forstå, hvad gates gør.
Du kan lære mere om det her: http://eecs.ceas.uc.edu/~cahaymm/blochsphere. Der er mange flere simulatorer, og de fleste af dem er resultatet af ph.d.-afhandlinger. Af den grund er de fleste af dem ikke aktive, de er blot gode begyndelser. De få, vi nævner her, er nyttige til selvstudium. JQuantum-simulatoren ligner og opfører sig som et kvantescore.
Den er lidt bøvlet, men hvis du øver dig, bliver den anvendelig og klar. Den understøtter dine egne funktioner. Det er meget nyttigt, når man følger et kursus og vil afprøve sagerne på egen hånd. Den eneste anden måde at opnå det på består i at bruge sin IDE og selv skrive et kvanteprogram. Hvis du har erfaring med Python, kan det lade sig gøre, men vær beredt – simulationen kommer ikke til at blive køn.
Lad os holde Bloch-fest
Så snart man ved, hvor mange tilstande og transitioner man har i hver qubit, er tiden inde til kodning. Men tøv en kende – man kan beskrive gates på en visuel måde. Bloch Sphere er grundlaget for alle gates. Grafen minder lidt om et partitur, og man kalder det derfor et kvantescore (partitur hedder score på engelsk).
Det kan variere lidt afhængigt af platformen, men generelt set er de tværgående strenge qubits. Når man vil ændre en qubits tilstand, placerer man et gate på strengen. Når man vil danne entanglement mellem to qubits, lægger man gatet på én streng og forbinder det til et andet.
Når man vil beskrive en partikels kvantetilstand, bruger man spin som en roterende bold. Mere præcist den vinkel, som “bolden” roterer i. Selvom der ikke er nogen bolde, der roterer i klassisk forstand, beskriver matematikken det udmærket. Når udstyret måler en elektron, bliver den roteret op eller ned i en akse. Systemet kan kun måle i én dimension ad gangen, nemlig x, y og z. Hvis man måler x, mister man al information om spin-tilstanden på z- og y-aksen.
Når man beskriver kvantetilstanden, bruger man en imaginær pil i Bloch Sphere. Toppen af Bloch Sphere repræsenterer qubittens logiske 0, bunden er logisk 1. De er de to eneste tilstande, som systemet kan måle med 100 procent nøjagtighed. For at opnå et resultat i en kvantecomputer laver man mange “skud” og får det mest sandsynlige svar.
En matrix indeholder de koordinater, der viser pilens vinkel. Pilens længde er altid 1. De tal, vi bruger til at beregne sandsynligheden, beskriver aksernes komponenter for pilen. Bloch Sphere styrer gates og deres navngivning. Husk det, når du prøver at forstå sagerne.
De tilgængelige gates afhænger af applikationen og af arten af kvantecomputer. Men de følgende er de mest almindelige. Pauli X Gate roterer tilstanden omkring x-aksen og ændrer værdien af z. Dette gate er også et bit-flip-gate. Pauli Y GATE roterer omkring y-aksen og ændrer både x-værdien og z-værdien. Dette gate er både et bit-flip- og et phase-flip-gate.
![](https://www.computerworld.dk/uploads/aod/2018/08/LXF237.feat2_quantum1-1024x576.jpg)
Indtil nu flipper disse gates kun bits og faser. De har intet at gøre med superposition eller entanglement. Hadamard-gatet sætter qubitten i en superposition, og den har 50 procent chance for at være 0 eller 1, idet den flipper mellem X og Z.
Den virker som en terning, men hvis man bruger to på række, får man altid startværdien. Flere gates, der udvider Hadamard-gatet, er S og dets transformerede bøjning. For at bruge entanglement skal man anvende et CNOT-gate, der som regel er afbildet med et plustegn i en cirkel og en linje ned til en anden qubit. Gatet flipper mål-qubitten, når kontrollen er 1.
Dette er de grundlæggende gates, som du vil møde, når du går i gang. På IBM Q Experience har du mulighed for også at lave underrutiner. Det er dog en bedre ide at bruge et udviklersæt. Der er mange sæt til rådighed, og du kan udvide dit IDE med dem. Eclipse, Netbeans og Visual Studio har moduler.
De bruger adskillige klassiske sprog. Programmeringsværktøjer til Python kan man for eksempel få fra IBM. Bemærk, at rutinerne forbereder scripts til kvantecomputeren. Det kører ikke på den. Gå bare i gang. Du får ikke lavet meget i begyndelsen, men du får det sjovt. Det kan vi godt garantere.
Toolkit fra de store drenge
Hvis du selv vil programmere, kræver det den standard, der hedder OpenQASM. Det er basis for alle udvikler-kits. Mange grupper har udviklet toolkits ved hjælp af denne standard. De bedst kendte kommer fra IBM, D-Wave og Microsoft. IBM besluttede at bruge Python til at lave Qiskit, og du kan downloade dette kit fra Github.
Der er også mange kilder og demonstrations-samlinger til rådighed. Her kan du læse alt om den aktuelle udviklingstilstand. I både Eclipse og Netbeans skal du kun importere koden ind i et projekt og udforske. Glem ikke at installere Python 3.5 eller højere, før du prøver at kompilere. IBM’s QE har disse eksempler i sit Python-toolkit.
Når du har fået kilderne installeret, kan du kun køre simulationer på din egen computer. Hvis du vil køre på en rigtig kvantecomputer, skal du få en konto på IBM Q Experience. Opsætningen er enkel: Alt, hvad du skal gøre, er at åbne en konto og få dit eget API-token fra din konto.
Kopier det så ind i Qconfig.py-filen for det projekt, du arbejder på. Der er et credit-system til brug af de rigtige maskiner. Derfor skal du simulere, indtil du ved, at du gør det rigtigt. Hvis du er virkelig dygtig, kan du nå op på ekspert-niveau.
Og så kan du få adgang til flere enheder og flere eksperimenter. Hvis du bruger Visual Studio, kan du downloade Qvis-filen og tiføje extensionen. Du skal dog stadig bruge Python-support.