(Ik heb een inleiding tot quantumcomputing geschreven die je hier kunt vinden. Als je helemaal nieuw bent op dit gebied, is dat een betere plek om te beginnen.)
Als je je wilt verdiepen in quantum computing, kun je er niet omheen: je zult het troebele concept van de quantum gate onder de knie moeten krijgen. Zoals alles in quantum computing, om nog maar te zwijgen van de quantummechanica, zijn quantumpoorten gehuld in een onbekende mist van jargon en matrixwiskunde die het quantummysterie weerspiegelt. Mijn doel in dit artikel is om een paar lagen van dat mysterie af te pellen. Maar ik zal u de spanning besparen: niemand kan zich er volledig van ontdoen. Tenminste, niet in 2018. Het enige wat we vandaag kunnen doen, is de opvallende overeenkomsten en alarmerende verschillen tussen klassieke poorten en kwantumpoorten onthullen, en de implicaties voor de nabije en verre toekomst van computergebruik verkennen.
opvallende overeenkomsten
Als er niets anders is, zijn klassieke logische poorten en kwantumlogische poorten beide logische poorten. Dus laten we daar beginnen. Een logische poort, klassiek of kwantum, is een fysische structuur of systeem dat een reeks binaire inputs (0’s en 1’s, appels en sinaasappels, spin-up elektronen en spin-down elektronen, noem maar op) neemt en één binaire output uitspuugt: een 1, een sinaasappel, een spin-up elektron, of zelfs één van twee toestanden van superpositie. Wat de uitvoer regelt is een Booleaanse functie. Dat klinkt deftig en onheilspellend, maar geloof me, dat is het niet. Je kunt een Booleaanse functie zien als niets meer dan een regel voor hoe te antwoorden op ja/nee-vragen. Zo simpel is het. De poorten worden dan gecombineerd tot circuits, en de circuits tot CPU’s of andere computationele componenten. Dit geldt of we het nu hebben over Babbage’s Difference Engine, ENIAC, gepensioneerd schaakkampioen Deep Blue, of de nieuwste kamervullende, ijzingwekkende, krantenkoppen makende quantumcomputer.
Alarmerend verschil
Klassieke poorten werken op klassieke bits, terwijl quantumpoorten werken op quantumbits (qubits). Dit betekent dat kwantumpoorten gebruik kunnen maken van twee belangrijke aspecten van de kwantummechanica die voor klassieke poorten volstrekt onbereikbaar zijn: superpositie en verstrengeling. Dit zijn de twee concepten waarover je het vaakst zult horen in de context van quantumcomputing, en dit is waarom. Maar er is een minder bekend concept dat misschien wel even belangrijk is: omkeerbaarheid. Simpel gezegd, quantum poorten zijn omkeerbaar. Je zult veel leren over omkeerbaarheid als je verder gaat in quantum computing, dus het is de moeite waard om er echt in te duiken. Voor nu kun je het zo zien – alle kwantumpoorten hebben een knop om het ongedaan te maken, terwijl veel klassieke poorten dat niet hebben, althans nog niet. Dit betekent dat kwantumpoorten, althans in principe, nooit informatie verliezen. Qubits die verstrikt zijn geraakt op weg naar de kwantumpoort blijven verstrikt op weg naar buiten, waardoor hun informatie gedurende de hele overgang veilig wordt bewaard. Veel van de klassieke poorten die in conventionele computers worden gebruikt, verliezen daarentegen wel informatie, en kunnen daarom hun stappen niet terugzetten. Interessant genoeg gaat die informatie uiteindelijk niet verloren voor het universum, maar sijpelt zij naar uw kamer of uw schoot als de warmte in uw klassieke computer.
V staat voor vector
We kunnen het niet over kwantumpoorten hebben zonder het over matrices te hebben, en we kunnen het niet over matrices hebben zonder het over vectoren te hebben. Dus laten we verder gaan. In de taal van de kwantummechanica en de informatica worden vectoren afgebeeld in een, toegegeven, nogal vreemde verpakking die ket heet, wat komt van de tweede helft van het woord braket. En ze zien er zo uit. Hier is een ket vector: |u>, waarbij u de waarden in de vector voorstelt. Om te beginnen gebruiken we twee kets, |0> en |1>, die staan voor qubits in de vorm van elektronen in de spin-up (|0>) en spin-down (|1>) toestanden. Deze vectoren kunnen een willekeurig aantal getallen omvatten, bij wijze van spreken. Maar in het geval van een binaire toestand, zoals een spin up/down elektronenqubit, hebben ze er maar twee. Dus in plaats van er uit te zien als torenhoge kolomvectoren, zien ze er uit als getallen die twee hoog zijn gestapeld. Zo ziet 0> eruit:
/ 1 /
0 /
Nu, wat poorten/matrices doen is deze toestanden, deze vectoren, deze kets, deze kolommen van getallen, transformeren in gloednieuwe toestanden. Bijvoorbeeld, een poort kan een op-toestand (|0>) transformeren in een neer-toestand (|1>), als bij toverslag:
/ 1 \ → / 0 \
0 / \ 1 /
M staat voor matrix
Deze transformatie van de ene vector in de andere vindt plaats door de nauwelijks begrepen magie van matrixvermenigvuldiging, die totaal anders is dan het soort vermenigvuldiging dat we allemaal leerden op de pre-quantumschool. Maar als je dit soort wiskunde eenmaal onder de knie hebt, is het uiterst de moeite waard, omdat je het keer op keer kunt toepassen op talloze anders onbegrijpelijke vergelijkingen die de niet-ingewijden verbijsterd achterlaten. Als je nog meer motivatie nodig hebt, bedenk dan dat het door de taal van de matrixwiskunde was dat Heisenberg de geheimen van het allesomvattende onzekerheidsprincipe ontsloot.
Hoe dan ook, als je niet bekend bent met deze straalbrandstof van een wiskundig gereedschap, zullen je ogen glazig worden als ik deze post ga vullen met grote vierkante reeksen van getallen op dit punt. En dat kunnen we niet laten gebeuren. Dus laten we nog een paar alinea’s wachten op de matrix wiskunde en notatie. Voor nu volstaat het te zeggen dat we in het algemeen een matrix gebruiken als stand-in voor een quantum gate. De grootte en de angstfactor van de matrix hangen af van het aantal qubits waarmee hij werkt. Als er maar één qubit getransformeerd moet worden, zal de matrix eenvoudig zijn, gewoon een 2×2 matrix met vier elementen. Maar de grootte van de matrix neemt toe met twee, drie of meer qubits. Dit komt omdat een exponentiële vergelijking, die het onthouden waard is, de grootte van de matrix (en dus de verfijning van de kwantumpoort) bepaalt:
2^n x 2^n = the total number of matrix elements
Hierbij is n het aantal qubits waarmee de kwantumpoort werkt. Zoals je kunt zien, gaat dit getal door het dak als het aantal qubits (n) toeneemt. Met één qubit, is het 4. Met twee, is het 16. Met drie, is het 64. Met vier, is het… hopeloos. Dus voor nu, hou ik het bij één qubit, en het is Pauli op het lijf geschreven.
De Pauli poorten
De Pauli poorten zijn vernoemd naar Wolfgang Pauli, die niet alleen een coole naam heeft, maar ook zichzelf heeft weten te vereeuwigen in twee van de bekendste principes van de moderne natuurkunde: het gevierde Pauli uitsluitingsprincipe en het gevreesde Pauli effect.
De Pauli-poorten zijn gebaseerd op de beter bekende Pauli-matrices (aka Pauli spin matrices) die ongelooflijk nuttig zijn voor het berekenen van veranderingen in de spin van een enkel elektron. Aangezien elektronspin de favoriete eigenschap is om te gebruiken voor een qubit in de kwantumpoorten van vandaag, zijn Pauli matrices en poorten precies in ons straatje. In elk geval is er in wezen één Pauli-poort/matrix voor elke as in de ruimte (X, Y en Z).
Dus je kunt je voorstellen dat elk van hen de macht heeft om de richting van de spin van een elektron te veranderen langs de corresponderende as in de 3D-ruimte. Zoals alles in de kwantumwereld zit er natuurlijk een addertje onder het gras: dit is niet onze gewone 3D-ruimte, want die bevat een denkbeeldige dimensie. Maar dat laten we nu even buiten beschouwing, zullen we?
Mooi gezegd, de Pauli poorten zijn zo’n beetje de eenvoudigste quantumpoorten die je ooit zult tegenkomen. (Tenminste, de X en Z poorten. De Y is een beetje vreemd.) Dus zelfs als je nog nooit in je leven een matrix hebt gezien, maakt Pauli ze handelbaar. Zijn poorten werken op één, en slechts één, qubit per keer. Dit vertaalt zich in eenvoudige, 2 x 2 matrices met slechts 4 elementen per stuk.
De Pauli X-poort
De Pauli X-poort is een droom die uitkomt voor degenen die bang zijn voor matrix wiskunde. Geen denkbeeldige getallen. Geen mintekens. En een eenvoudige bewerking: negatie. Dat is logisch, want de Pauli X-poort komt overeen met een klassieke NOT-poort. Daarom wordt de X-poort ook vaak de quantum NOT poort genoemd.
In de echte wereld verandert de X-poort in het algemeen de spin-up toestand |0> van een elektron in een spin-down toestand |1> en vice-versa.
|0> --> |1> OR |1> --> |0>
Een hoofdletter “X” staat vaak voor de Pauli X-poort of matrix zelf. Zo ziet X er uit:
/ 0 1 \
1 0 /
In termen van de juiste notatie is het toepassen van een quantumpoort op een qubit een kwestie van het vermenigvuldigen van een ketvector met een matrix. In dit geval vermenigvuldigen we de spin-up ket vector |0> met de Pauli X-poort of matrix X. Zo ziet X|0> er uit:
/ 0 1 / 1
1 0 / \0/
Merk op dat je de matrix altijd links van de ket plaatst. Zoals je misschien al gehoord hebt, is matrixvermenigvuldiging, in tegenstelling tot gewone vermenigvuldiging, niet commutatief, wat ingaat tegen alles wat we op school geleerd hebben. Het is alsof 2 x 4 niet altijd gelijk is aan 4 x 2. Maar dat is hoe matrixvermenigvuldiging werkt, en als je het eenmaal doorhebt, zul je zien waarom. Ondertussen, met de zo belangrijke volgorde van de elementen in gedachten, ziet de volledige notatie voor het toepassen van de quantum NOT-gate op onze qubit (in dit geval de spin-up toestand van een elektron) er als volgt uit:
X|0> = / 0 1 /1 = /0 = |1>
1 0 / \0/ \1/
Op een spin-down vector toegepast, ziet de volledige notatie er als volgt uit:
X|1> = / 0 1 /0 = /1 = |0>
1 0 / \1/ \0/
Ondanks alle vreemde notatie gebeurt hier in feite dat een qubit in de vorm van een enkel elektron door een quantumpoort gaat en er aan de andere kant uitkomt met zijn spin volledig omgedraaid.
De Pauli Y- en Z-poorten
Ik zal je de wiskunde bij deze twee besparen. Maar u moet ze op z’n minst terloops kennen.
Van de drie Pauli poorten is de Pauli Y-poort de sjiekste. Hij lijkt veel op de X-poort, maar dan met een i (yep, de krankzinnige vierkantswortel van -1) in plaats van de gewone 1, en een negatief teken rechtsboven. Zo ziet Y eruit:
/ 0 -i
i 0 /
De Pauli Z-poort is veel gemakkelijker te volgen. Het lijkt een beetje op het spiegelbeeld van de X-poort hierboven, maar met een negatief teken in de mix. Zo ziet Z eruit:
/ 1 0 /
0 -1 /
De Y-poort en de Z-poort veranderen ook de draaiing van ons qubit-elektron. Maar ik zou me waarschijnlijk in de esoterische mysteries van de Bloch-sfeer moeten verdiepen om echt uit te leggen hoe, en ik heb op dit moment een andere poort om doorheen te gaan…
De Hadamard-poort
Weliswaar lijken de Pauli-poorten in sommige opzichten veel op klassieke logische poorten, maar de Hadamard-poort, of H-poort, is een bonafide kwantumbeest. Hij duikt overal op in quantumcomputing, en niet voor niets. De Hadamard-poort heeft het karakteristieke kwantumvermogen om een bepaalde kwantumtoestand, zoals spin-up, om te zetten in een troebele, zoals een superpositie van zowel spin-up als spin-down tegelijkertijd.
Als je eenmaal een spin-up of spin-down elektron door een H-poort stuurt, wordt het als een cent die op zijn uiteinde staat, met precies 50/50 kans dat het kop (spin-up) of munt (spin-down) eindigt als het wordt omgegooid en gemeten. Deze H-poort is uiterst nuttig voor het uitvoeren van de eerste berekening in elk kwantumprogramma, omdat het vooraf ingestelde, of geïnitialiseerde, qubits terug transformeert in hun natuurlijke vloeibare toestand om hun volledige kwantumkrachten te benutten.
Andere kwantumpoorten
Er zijn een aantal andere kwantumpoorten die je zeker zult tegenkomen. Veel van hen werken op meerdere qubits tegelijk, wat leidt tot 4×4 of zelfs 8×8 matrices met complex genummerde elementen. Deze zijn behoorlijk lastig als je nog geen serieuze matrixvaardigheden onder de knie hebt. Dus ik zal je de details besparen.
De belangrijkste poorten waarmee je vertrouwd zult willen zijn, zijn degene die we in de onderstaande grafiek hebben behandeld: