(Jeg har skrevet en introduktion til kvantecomputere, som du finder her. Hvis du er helt ny på området, vil det være et bedre sted at starte.)
Hvis du ønsker at komme ind i kvantecomputere, er der ingen vej udenom: Du bliver nødt til at beherske det uklare begreb kvanteporten. Som alt inden for kvantecomputere, for ikke at nævne kvantemekanikken, er kvantegates indhyllet i en ukendt tåge af jargon og matrixmatematik, der afspejler kvantemysteriet. Mit mål i dette indlæg er at skrælle et par lag af dette mysterium af. Men jeg vil spare dig for spændingen: Ingen kan slippe helt af med det. I hvert fald ikke i 2018. Det eneste, vi kan gøre i dag, er at afsløre de slående ligheder og alarmerende forskelle mellem klassiske porte og kvanteporte og undersøge konsekvenserne for den nære og fjerne fremtid inden for databehandling.
Slagende ligheder
Om ikke andet er klassiske logiske porte og kvantelogiske porte begge logiske porte. Så lad os starte der. En logisk gate, hvad enten den er klassisk eller kvantelogisk, er en fysisk struktur eller et fysisk system, der tager et sæt binære input (0’er og 1’er, æbler og appelsiner, spin-up-elektroner og spin-down-elektroner, hvad som helst) og udsender et enkelt binært output: en 1, en appelsin, en spin-up-elektron eller endog en af to superpositionstilstande. Det, der styrer outputtet, er en boolsk funktion. Det lyder smart og uhyggeligt, men tro mig, det er det ikke. Du kan tænke på en boolsk funktion som intet andet end en regel for, hvordan man skal svare på Ja/Nej-spørgsmål. Så enkelt er det. Gates kombineres derefter til kredsløb, og kredsløbene til CPU’er eller andre beregningskomponenter. Dette gælder, uanset om vi taler om Babbage’s Difference Engine, ENIAC, den pensionerede skakmester Deep Blue eller den seneste rumfyldte, benhårde, overskriftsagtige kvantecomputer.
Alarmerende forskelle
Klassiske gates opererer på klassiske bits, mens kvantegates opererer på kvantebits (qubits). Det betyder, at kvantegates kan udnytte to centrale aspekter af kvantemekanikken, som er helt uden for rækkevidde for klassiske gates: superposition og sammenfiltring. Det er de to begreber, som du oftest vil høre om i forbindelse med kvantecomputere, og her er grunden hertil. Men der er et mindre kendt begreb, som måske er lige så vigtigt: reversibilitet. Kvanteportene er ganske enkelt reversible. Du vil lære en masse om reversibilitet, når du kommer længere ind i kvantecomputere, så det er værd at sætte sig grundigt ind i det. Indtil videre kan du tænke på det på denne måde – alle kvantegates har en fortrydelsesknap, mens mange klassiske gates ikke har det, i det mindste ikke endnu. Det betyder, at kvanteporte, i det mindste i princippet, aldrig mister information. Qubits, der er sammenfiltrede på vej ind i kvanteporten, forbliver sammenfiltrede på vej ud, så deres information forbliver sikkert forseglet under hele overgangen. Mange af de klassiske gates, der findes i konventionelle computere, mister derimod information, og de kan derfor ikke følge deres vej tilbage. Interessant nok går denne information i sidste ende ikke tabt for universet, men siver snarere ud i dit værelse eller dit skød som varmen i din klassiske computer.
V er for vektor
Vi kan ikke tale om kvanteporte uden at tale om matricer, og vi kan ikke tale om matricer uden at tale om vektorer. Så lad os komme i gang med det. I kvantemekanikkens og computersprogets sprog afbildes vektorer i en indrømmet ret underlig pakke kaldet en ket, som kommer af anden halvdel af ordet braket. Og de ser ud som de skal. Her er en ket-vektor: |u>, hvor u repræsenterer værdierne i vektoren. Til at begynde med vil vi bruge to kets, |0> og |1>, som vil stå for qubits i form af elektroner i spin-up (|0>) og spin-down (|1>) tilstande. Disse vektorer kan så at sige spænde over et vilkårligt antal tal. Men i tilfælde af en binær tilstand som f.eks. en spin-up/down-elektronqubit har de kun to. Så i stedet for at ligne tårnhøje kolonnevektorer ligner de bare tal, der er stablet i to højder. Sådan ser |0> ud:
/ 1 \
\ 0 /
Nu er det, som gates/matrices gør, at de omdanner disse tilstande, disse vektorer, disse kets, disse talsøjler, til helt nye. En gate kan f.eks. omdanne en op-tilstand (|0>) til en ned-tilstand (|1>), som ved et trylleslag:
/ 1 \ → / 0 \
\ 0 / \ 1 /
M står for matrix
Denne omdannelse af en vektor til en anden sker ved hjælp af den knapt forståede magi, som matrixmultiplikation er, og som er helt anderledes end den form for multiplikation, som vi alle lærte i præ-kvantumskolen. Men når man først har fået styr på denne form for matematik, er den yderst givende, fordi man kan anvende den igen og igen på utallige ellers uforståelige ligninger, der efterlader den uindviede lamslået. Hvis du har brug for mere motivation, skal du blot huske, at det var ved hjælp af matrixmatematikkens sprog, at Heisenberg løsnede hemmelighederne bag det altomfattende usikkerhedsprincip.
Som du ikke er bekendt med dette jetbrændstof af et matematisk værktøj, vil dine øjne blive glaserede, hvis jeg begynder at fylde dette indlæg med store firkantede arrays af tal på dette punkt. Og det kan vi ikke lade ske. Så lad os vente et par afsnit mere med matrixmatematikken og notationen. Indtil videre er det tilstrækkeligt at sige, at vi generelt bruger en matrix som stand-in for en kvante gate. Matrixens størrelse og frygtfaktor afhænger af antallet af qubits, som den opererer på. Hvis der kun er én qubit, der skal transformeres, vil matrixen være dejlig enkel, blot et 2 x 2 array med fire elementer. Men størrelsen af matrixen vokser med to, tre eller flere qubits. Det skyldes, at en decideret eksponentiel ligning, som det er værd at huske, styrer størrelsen af matrixen (og dermed kvantegatens raffinement):
2^n x 2^n = the total number of matrix elements
Her er n antallet af qubits, som kvantegaten opererer på. Som du kan se, går dette tal gennem taget i takt med, at antallet af qubits (n) stiger. Med én qubit er det 4. Med to er det 16. Med tre er det 64. Med fire er det… håbløst. Så indtil videre holder jeg mig til én qubit, og den har Pauli skrevet over det hele.
Pauli-portene
Pauli-portene er opkaldt efter Wolfgang Pauli, som ikke blot har et sejt navn, men som også har formået at udødeliggøre sig selv i to af de mest kendte principper i moderne fysik: det berømte Pauli-eksklusionsprincip og den frygtede Pauli-effekt.
Pauli-portene er baseret på de mere kendte Pauli-matricer (også kaldet Pauli-spinmatricer), som er utroligt nyttige til at beregne ændringer i en enkelt elektrons spin. Da elektronspin er den foretrukne egenskab til brug for en qubit i nutidens kvantegates, er Pauli-matricer og -gates lige noget for os. Under alle omstændigheder er der i alt væsentligt én Pauli gate/matrix for hver akse i rummet (X, Y og Z).
Så du kan forestille dig, at hver af dem svinger magten til at ændre retningen af en elektrons spin langs deres tilsvarende akse i 3D-rummet. Som alt andet i kvanteverdenen er der naturligvis en hage: Dette er ikke vores almindelige 3D-rum, fordi det indeholder en imaginær dimension. Men lad os glemme det for nu, ikke sandt?
Merkeligt nok er Pauli-portene de enkleste kvanteporte, du nogensinde kommer til at møde. (I det mindste er X- og Z-gaten det. Y-gaten er lidt underlig.) Så selv hvis du aldrig har set en matrix i dit liv, gør Pauli dem overskuelige. Hans gates virker på én, og kun én, qubit ad gangen. Det betyder simple 2 x 2 matricer med kun 4 elementer pr. stk.
Pauli X-gate
Pauli X-gate er en drøm, der går i opfyldelse for dem, der frygter matrixmatematik. Ingen imaginære tal. Ingen minustegn. Og en simpel operation: negation. Dette er kun naturligt, fordi Pauli X-gate svarer til en klassisk NOT-gate. Derfor kaldes X-gaten også ofte for kvante-NOT-gaten.
I den virkelige virkelige verden forvandler X-gaten generelt en elektrons spin-up-tilstand |0> til en spin-down-tilstand |1> og omvendt.
|0> --> |1> OR |1> --> |0>
Et stort “X” står ofte for selve Pauli X-gate eller matrixen. Her er, hvordan X ser ud:
/ 0 1 \
\ 1 0 /
Med korrekt notation er det at anvende en kvante gate på en qubit et spørgsmål om at multiplicere en ket vektor med en matrix. I dette tilfælde multiplicerer vi spin-up ket-vektoren |0> med Pauli X-gaten eller matrixen X. Sådan ser X|0> ud:
/ 0 1 \ /1\
\ 1 0 / \0/
Bemærk, at man altid placerer matrixen til venstre for ket’en. Som du måske har hørt, kan matrixmultiplikation, i modsætning til almindelig multiplikation, ikke pendle, hvilket går imod alt det, vi har lært i skolen. Det er som om 2 x 4 ikke altid var lig med 4 x 2. Men det er sådan matrixmultiplikation fungerer, og når du først får styr på det, vil du se hvorfor. I mellemtiden, med den vigtige rækkefølge af elementer i tankerne, ser den fuldstændige notation for anvendelse af kvante NOT-gate på vores qubit (i dette tilfælde en elektrons spin-up-tilstand) således ud:
X|0> = / 0 1 \ /1\ = /0\ = |1>
\ 1 0 / \0/ \1/
Anvendt på en spin-down-vektor ser den fuldstændige notation således ud:
X|1> = / 0 1 \ /0\ = /1\ = |0>
\ 1 0 / \1/ \0/
Trods al den fremmede notation er det, der faktisk sker her i begge disse tilfælde, at en qubit i form af en enkelt elektron passerer gennem en kvanteport og kommer ud på den anden side med sit spin vendt helt om.
Paulis Y- og Z-gates
Jeg vil spare dig for matematikken med disse to. Men du bør i det mindste kende dem i forbifarten.
Af de tre Pauli-gates er Pauli Y-gate den smarte. Den ligner meget X-gaten, men med et i (ja, den vanvittige kvadratrod af -1) i stedet for den almindelige 1 og et negativt tegn øverst til højre. Sådan ser Y-gaten ud:
/ 0 -i \
\ i 0 /
Den Pauli Z-gate er langt nemmere at følge. Den ligner lidt et spejlbillede af X-gaten ovenfor, men med et negativt tegn indlagt i blandingen. Her er, hvordan Z ser ud:
/ 1 0 \
\ 0 -1 /
Y-gaten og Z-gaten ændrer også vores qubit-elektrons spin. Men jeg er nok nødt til at dykke ned i Bloch-kuglens esoteriske mysterier for at forklare hvordan, og jeg har en anden gate at gå igennem i øjeblikket…
Hadamard-gaten
Mens Pauli-gaten i nogle henseender minder meget om klassiske logiske gates, er Hadamard-gaten, eller H-gaten, et ægte kvante-dyr. Den dukker op overalt i kvantecomputere, og det er der en god grund til. Hadamard-gaten har den karakteristiske kvantekapacitet til at omdanne en bestemt kvantetilstand, som f.eks. spin-up, til en uklar tilstand, som f.eks. en superposition af både spin-up og spin-down på samme tid.
Når man sender en spin-up eller spin-down elektron gennem en H-gate, vil den blive som en penny, der står på sin ende, med præcis 50/50 chance for, at den ender med plat (spin-up) eller plat (spin-down), når den væltes og måles. Denne H-gate er ekstremt nyttig til at udføre den første beregning i et kvanteprogram, fordi den forvandler forudindstillede eller initialiserede qubits tilbage til deres naturlige flydende tilstand for at udnytte deres fulde kvantekraft.
Andre kvantegates
Der er en række andre kvantegates, som du helt sikkert vil støde på. Mange af dem opererer på flere qubits ad gangen, hvilket fører til 4×4 eller endog 8×8 matricer med komplekst talte elementer. Disse er temmelig hårde, hvis du ikke allerede har nogle seriøse matrixfærdigheder i bagagen. Så jeg vil spare dig for detaljerne.
De vigtigste gates, som du vil ønske at være bekendt med, er dem, vi dækkede vist i grafen nedenfor:
Du bør vide, at der findes andre gates, så her er en hurtig liste over nogle af de mest udbredte andre kvantegates, bare så du kan få en fornemmelse af jargonen:
- Toffoli gateFredkin gate
- Deutsch gate
- Swap gate (og swap-gate kvadratrod)
- NOT-gate kvadratrod
- Controlled-NOT gate (C-NOT) og andre kontrollerede gates
Der er mange flere. Men lad dig ikke narre af tallene. Ligesom man kan udføre enhver klassisk beregning med en kombination af NOT + OR = NOR-gates eller AND + NOT= NAND-gates, kan man reducere listen over kvantegates til et simpelt sæt universelle kvantegates. Men den gerning gemmer vi til en anden dag.
Fremtidsudsigter gennem kvanteporten
Som det påpeges i en nylig artikel i Quanta Magazine, er kvantecomputerne fra 2018 ikke helt klar til prime time. Før de kan træde ind i ringen med klassiske computere med milliarder af gange så mange logiske gates, skal de stå over for et par af deres egne dæmoner. Den mest dødbringende er nok dekohærens dæmon. Lige nu vil kvantedekohærens ødelægge din kvanteberegning på blot “et par mikrosekunder”. Men jo hurtigere dine kvanteporte udfører deres operationer, jo større er sandsynligheden for, at din kvantealgoritme vil slå dekohærensdæmonen til målstregen, og jo længere vil løbet vare. Ud over hastigheden er en anden vigtig faktor det blotte antal operationer, som kvanteportene udfører for at gennemføre en beregning. Dette er kendt som en beregnings dybde. En anden aktuel opgave er derfor at uddybe kvantespillerne. Ifølge denne logik vil den klassiske computer i takt med, at den hurtigt udviklende kvantecomputer bliver hurtigere, dens beregninger dybere og nedtællingen til dekoherens længere, i sidste ende stå over for en formidabel udfordrer, hvis ikke en efterfølger, i en (muligvis) ikke alt for fjern fremtid.
Hvis du kunne lide denne artikel, ville det glæde mig meget, hvis du trykker på klapknappen 🙂 eller deler den med dine nysgerrige venner. Jeg har meget mere af den slags ovre på min personlige blog (jasonroell.com) eller du kan bare abonnere på min medieprofil og få alle mine artikler tilsendt, så snart jeg skriver dem! (hvor fedt!!)
Anyway, tak igen for at læse og hav en god dag!