Computers zijn tegenwoordig niet meer weg te denken. Supercomputers verwerken miljoenen zoekresultaten of berekenen wat het weer over een paar dagen zal zijn. Naast sneller zijn computers tegenwoordig ook kleiner dan ooit. Zo bestond één van de eerste computers uit ongeveer 18000 vacuümbuizen, 800 kilometer draad en woog zo’n 30 ton! Daarom verbaast het wellicht dat de computers van vandaag in principe niet wezenlijk verschillen van de allereerste modellen. Net als zijn voorouders manipuleert de pc ‘nulletjes en eentjes’ tot het gewenste resultaat. Maar daar komt misschien verandering in met de quantumcomputer.
Bits
Om het principe van een quantum computer toe te lichten is het wellicht nuttig om eerst eens te kijken naar hoe een ‘gewone’ computer werkt. Zoals je ongetwijfeld weet, slaat een computer informatie op in de vorm van bits. Deze fundamentele vorm van informatie heeft twee mogelijke ‘toestanden’ die meestal worden aangeduid met 0 of 1. Hoe ziet zo’n 0 of 1 er uit? Dat kan bijvoorbeeld de richting van een magnetisch veldje zijn, zoals in het geheugen van een computer. Of het kan wél een putje of géén putje zijn in het oppervlak van een cd.
De snelheid van een computer gaat hand in hand met het aantal onderdelen. Hier komt natuurlijk een keer een einde aan wanneer deze onderdelen zo klein worden als afzonderlijke moleculen. Veel eerder al kom je andere problemen tegen. De natuurwetten op een kleine schaal zijn namelijk heel anders dan we gewend zijn van macroscopische objecten. De natuurkundige theorie die dit beschrijft is de quantummechanica.
Quantummechanica
De wetten van de quantummechanica laten zich wellicht het best beschrijven aan de hand van een experiment. Stel je bijvoorbeeld een scherm voor met twee evenwijdige spleten erin met daarachter een detectiescherm. Schiet je op dit scherm, dan zullen de kogels alleen door één van de twee spleten voorbij het scherm kunnen komen. De kogels bewegen immers in een rechte lijn. Echter, doe je een dergelijk experiment met kleine deeltjes als elektronen, dan zul je iets opmerkelijks zien. De stipjes op het detectiescherm vormen langzaam een patroon, maar een heel andere dan die van de kogels. Op sommige plekken komen veel meer elektronen aan dan op andere plekken. Sommige elektronen komen zelfs op plekken die niet in een rechte lijn te bereiken zijn! Dit gedrag kennen we van golven waarbij het deel van de golf dat door de ene spleet gaat, interfereert met het andere deel van de golf.
Maar, is dan de vraag, gaat het elektron dan door beide spleten waarna het met zichzelf interfereert? Ja! En het wordt nog vreemder. Zodra de ‘elektrongolf’ het detectiescherm bereikt, vormt het niet een uitgesmeerd patroon zoals een golf, maar slechts een enkel stipje. Het is alsof het elektron zich voortbeweegt als een golf, maar probeer je het waar te nemen, dan gedraagt het zich ineens alsof het een deeltje is. Dit wordt de ‘golfdeeltjedualiteit’ genoemd.
Qubits
Wanneer je nu hele kleine systemen als bits zou gebruiken, vertonen deze allerlei quantumgedrag. Deze bits worden dan ook wel quantumbits of ‘qubits’ genoemd. Bij Technische Natuurkunde in Delft wordt veel met deze qubits gewerkt. Een voorbeeld van een qubit zou kunnen zijn een elektrisch stroompje in een heel klein ringetje. Dit vormt een bit aangezien de stroom de ene of de andere kant op kan bewegen. Volgens de quantummechanica beweegt de stroom zowel de ene kant als de andere kant op, wanneer je deze niet meet. De qubit is dus niet 0 óf 1, maar 0 én 1! Pas wanneer je de stroom meet, kiest deze een kant, en meet je dus 0 óf 1. Dit lijkt een beetje op de golfdeeltjedualiteit waarin de meting ook zo’n speciale rol speelt. In de quantummechanica kan een deeltje dus niet alleen op meerdere plaatsen tegelijk zijn net als een golf, maar kan het ook verschillende snelheden hebben.
Zolang je de qubit niet meet, weet je dus niet of het een 0 of een 1 is. Op het eerste gezicht lijkt dit heel onhandig en denk je misschien dat we het maar beter bij gewone bits kunnen houden: dan maar wat grotere computers. Echter in 1982 kwam de Amerikaanse natuurkundige Richard Feynman met een voorstel hoe je wel degelijk een computer met qubits kunt maken. Het idee voor de zogenaamde ‘quantumcomputer’ was geboren.
Voorbeelden van qubits
Quantumdot
In Delft wordt onderzoek gedaan naar twee soorten qubits. Eén daarvan is een microscopisch ringetje waardoor een elektrisch stroompje loopt. Dit ringetje wordt gekoeld, zodat het supergeleidend is. Dit betekent dat het ringetje geen elektrische weerstand heeft en het stroompje dus eeuwig kan bestaan. Door de richting van het magnetisch veld ten gevolge van de stroom te meten, kan de qubit worden uitgelezen.
Een zogenaamde 'fluxqubit' waarbij door het binnenste ringetje een stroompje loopt. Met de buitenste ring wordt het resulterende magnetische veld gemeten.
Een ander voorbeeld van een qubit waar in Delft onderzoek naar wordt gedaan is een enkel elektron. Elk deeltje, zoals bijvoorbeeld een elektron, bezit een klein magneetje dat in een magnetisch veld of de ene of de andere kant op kan staan. Deze twee toestanden vormen de toestanden van de bit. Omdat ze ook tegelijk kunnen voorkomen is dit een qubit. Een elektron wordt op zijn plaats gehouden in een zogenaamde ‘quantumdot’ waar het afhankelijk van de richting van het magneetje uit kan ontsnappen of niet. Door het voor het elektron mogelijk te maken uit de quantumdot te ontsnappen of niet, kan de qubit worden uitgelezen. (Uiteraard is dit afhankelijk van de richting van het magneetje.) De lading van de quantumdot vertelt je dan iets over de richting van het magneetje.
Een artistieke impressie van een elektron gevangen in een quantumdot. Het pijltje geeft de richting van het 'magneetje' van het elektron aan.
Dit zijn maar twee voorbeelden van qubits. In principe kunnen hiervoor alle systemen met twee mogelijke toestanden gebruikt worden die quantumgedrag vertonen. Je kunt bijvoorbeeld denken aan een atoom die zich in de toestand van laagste energie kan bevinden of in een iets hogere toestand. Misschien worden dus atomen of zelfs elektronen de (qu)bits van de computer van de toekomst!
Exponentiële groei
In een computer worden allerlei bewerkingen met bits uitgevoerd. Van een schakeling in een computer is de werking bekend. Je weet dus je wat er gebeurt wanneer je bijvoorbeeld een bewerking op een 0 uitvoert. Wanneer je nu heel voorzichtig een bewerking uitvoert op een qubit (die zowel 0 als 1 is), krijg je als uitvoer de bewerking van de 0 én de 1. Nu komt het grote voordeel van de quantumcomputer: je hebt maar één bewerking uitgevoerd en als resultaat heb je de bewerking van zowel een 0 als een 1!
Bij een schakeling met als invoer 1 bit is dit nog niet zo’n geweldige vooruitgang, al hoef je maar de helft van de bewerkingen uit te voeren. Echter bij het gebruik van meerdere qubits groeit het voordeel exponentieel. Bij een invoer van 2 bits moet je in een gewone computer 4 bewerkingen uitvoeren om het resultaat te krijgen van deze bewerking op alle combinaties (00, 01, 10 en 11) van deze 2 bits. Voor een qubit geldt wederom dat je niet weet wat de toestand is van de qubit waar je de bewerking op uitvoert. Als uitvoer krijg je de bewerking van alle 4 de combinaties. In het algemeen kan een quantumcomputer met n qubits 2n berekeningen tegelijk uitvoeren.
Wiskundiger beschouwing van de werking van een quantumcomputer
Laten we de uitvoer van een schakeling met invoer x aangeven met f(x).
Een voorbeeld: een NOT-schakeling maakt van een 0 een 1 en van een 1 een 0. Dus: f(0) = 1 en f(1) = 0. Je hebt ook schakelingen die meerdere bits als invoer nodig hebben. Een voorbeeld: de AND-schakeling geeft als uitvoer alleen een 1 wanneer beide bits 1 zijn, en anders een 0. Dus: f(0,0) = 0, f(0,1) = 0, f(1,0) = 0 en f(1,1) = 1
Een qubit kan de waarden 0 en 1 tegelijk hebben. De toestand van een qubit is dus niet zomaar 0 of 1. Omdat het niet om een gewone toestand maar een quantumtoestand gaat, geven we deze aan met |0> en |1>. Stel we hebben een qubit die zich in de volgende toestand bevindt: |0> + |1>
Dit betekent dat bij meting met gelijke kans de qubit in toestand 0 en 1 gevonden zal worden. Wanneer we nu een bewerking uitvoeren op deze qubit wordt de uitvoer:
f( |0> + |1> ) = |f(0)> + |f(1)>
Waarbij de uitvoer |f(0)> + |f(1)> betekent dat bij meting met gelijke kans f(0) en f(1) gevonden zal worden. Oftewel beide bewerkingen f(0) en f(1) zijn aanwezig in de uitvoer, terwijl we maar 1 bewerking hebben uitgevoerd! Wanneer we een schakeling hebben met 2 bits als invoer en beide bevinden zich in de toestand |0> + |1> dan wordt de uitvoer:
f( |0> + |1> , |0> + |1> ) = |f(0,1)> + |f(1,0)> + |f(0,0)> + |f(1,1)>
Nu hebben we dus met één enkele bewerking als uitvoer de resultaten van 4 bewerkingen f(0,1), f(1,0), f(0,0) en f(1,1). Algemeen geldt dat je bij een invoer van n qubits 2n bewerkingen tegelijk uitvoert.
Het is echter iets subtieler. Wanneer je bijvoorbeeld bovenstaande bewerking hebt uitgevoerd en je wilt de uitvoer uitlezen, meet je maar één van de combinaties f(1,0), f(0,1), f(0,0) óf f(1,1). En je weet niet eens waarvan dit de bewerking is! Stel je meet een uitvoer 1,0. Dat wil zeggen bij de eerste qubit meet je 1 en de tweede 0. Stel dat dit f(0,1) is, dan ben je niet alleen alle andere bewerkingen f(1,0), f(0,0) en f(1,1) kwijt, maar je weet ook niet dat de 1,0 die je meet f(0,1) is.
Gelukkig zijn er allerlei slimme technieken bedacht om toch met één bewerking alle 4 de uitkomsten te achterhalen. En bij een invoer van 3 qubits alle 8, en bij een invoer van 4 qubits alle 16 etc.
Snel factoriseren
Het ligt echter net iets subtieler. Bij meting van een qubit zul je altijd een 0 of een 1 meten, ook al was de qubit daarvoor 0 én 1. Dus na de 2n bewerkingen zul je maar één uitkomst krijgen, en bovendien weet je niet eens waarvan dit de uitkomst is. Er zijn echter allerlei slimme trucs bedacht om toch gebruik te maken van het exponentiële (2n) voordeel van qubits. Een belangrijke toepassing is bijvoorbeeld het snel factoriseren van grote getallen.
Factoriseren van grote getallen
Wanneer we uiteindelijk een werkende quantumcomputer hebben, wat is hier dan het voordeel van boven een gewone computer? Voor bepaalde problemen is bij een gewone computer verschrikkelijk veel tijd nodig, exponentieel meer tijd dan bij een quantumcomputer! Een voorbeeld hiervan is het factoriseren van grote getallen. Een voorbeeld: ? x ?= 29083
Om te achterhalen welke twee gehele getallen met elkaar vermenigvuldigd 29083 opleveren (‘factoriseren’) is aanzienlijk meer tijd nodig dan voor de berekening van het omgekeerde probleem:
127 x 129 = ?
Dit komt omdat de wiskunde allerlei slimme trucs heeft gevonden om te vermenigvuldigen, maar niet om te factoriseren. Om een getal te factoriseren kun je niet veel meer doen dan allerlei getallen te proberen. Maar het factoriseren van een getal met bijvoorbeeld 1000 cijfers zou op de snelste computer die we hebben langer duren dan de leeftijd van het heelal!
Het feit dat het zo moeilijk is een groot getal te factoriseren wordt gebruikt in de beveiliging. Bij het verzenden van een geheime mail bijvoorbeeld wil je niet dat iemand die deze onderschept hem kan lezen. Wel wil je dat degene voor wie de mail bestemd is hem zonder al te veel moeite kan openen. Bij het beveiligen van berichten wordt daarom handig gebruik gemaakt van de moeilijkheid van het factoriseren van grote getallen en het gemak van vermenigvuldigen.
Peter Shor vond in 1994 een manier om met behulp van het exponentiële gedrag van een quantumcomputer snel grote getallen te factoriseren. Dit is een van de toepassingen van de quantumcomputer waarin deze dramatisch veel sneller is dan een gewone computer. Er zijn nog een aantal van dit soort toepassingen bekend, maar deze zijn dus lang niet voor alle problemen te gebruiken.
Mogelijk probleem voor de quantumcomputer: decoherentie
Er zijn echter nog wel wat andere problemen, waarvan sommige fysici denken dat ze onoverkomelijk roet in het eten zullen gooien, en quantumcomputers nooit de gewone computers zullen vervangen. Vooralsnog wordt er, onder andere aan de TU Delft, veel succesvol onderzoek gedaan. Onlangs is zelfs de eerste berekening aan de hand van een ‘quantumcomputer’ gedaan: 15 is 3 maal 5.
Decoherentie
Zoals uitgelegd in de hoofdtekst speelt in de quantummechanica de meting een speciale en belangrijke rol. Zo kan een qubit zowel 0 als 1 zijn, maar zodra je de qubit meet, zul je óf 0 óf 1 meten. Maar wat is nu een meting? De algemeen geaccepteerde opvatting onder natuurkundigen: Een meting vindt plaats wanneer het quantumsysteem in aanraking komt met een macroscopisch systeem, zoals bijvoorbeeld een meetinstrument. Maar dit macroscopische systeem kan ook iets anders zijn dan het meetinstrument, bijvoorbeeld de omgeving van het quantumsysteem.
Voor de werking van de quantumcomputer kan dit een probleem gaan opleveren. Wanneer een qubit in aanraking komt met zijn (macroscopische) omgeving zal de qubit niet meer 0 én 1 zijn , maar 0 óf 1! Dit fenomeen noemt men ‘decoherentie’. Voor de werking van een quantumcomputer moet decoherentie zo veel mogelijk worden vermeden. Wanneer er veel decoherentie plaatsvindt, is er eigenlijk geen sprake meer van een qubit maar een gewone bit. Dan zal de quantumcomputer niet meer werken.
Pessimisten denken dat bij het aan elkaar koppelen van een aantal qubits er al zoveel decoherentie plaatsheeft dat het nooit mogelijk is een functionele quantumcomputer te bouwen. Eén van de grootste uitdagingen is dan ook om decoherentie zoveel mogelijk te voorkomen, zodat een quantumcomputer gebouwd kan worden bestaande uit zóveel qubits dat er nuttige dingen mee gedaan kunnen worden.
Voor de meer geïnteresseerden