Een voorbeeld van een onoplosbaar probleem: Optimalisatieproblemen in routeplanners.
Een typisch voorbeeld van een probleem dat heel moeilijk oplosbaar is, is een navigatieprobleem. Toch is het iets wat Google Maps regelmatig voor je doet: ‘de snelste route vinden’. Het lijkt dan ook alsof Google en de TomTom dit al helemaal in de vingers hebben, en dat is tot op zekere hoogte waar – hun resultaten zijn immers best goed. We weten echter zelden zeker of het resultaat zoals aangegeven op je telefoon daadwerkelijk de kortste route is. Een computer is namelijk nooit in staat om álle mogelijke routes met elkaar te vergelijken. Zo’n probleem heet ook wel een optimalisatieprobleem: het is heel moeilijk om de beste route te vinden tussen álle mogelijke routes.
Een simpel voorbeeld: je wilt van Breda naar Utrecht. De snelste route, weten jij en ik, is over de A2. Een computer weet dit echter niet. Die komt er pas achter als hij enkele routes vergelijkt die hij via een bepaald algoritme selecteert. En daar gaat het mis: het algoritme ‘selecteert’ als het ware de routes zonder echt alle routes met elkaar te vergelijken. Wie zegt dat een route die die eerst een andere kant op gaat niet toevallig sneller is? Een gewone computer in elk geval niet, maar een probleem als dit zou een quantumcomputer theoretisch gezien wel kunnen oplossen. Hoe? Dat antwoord bewaar ik voor een vervolgartikel – laten we nu eerst eens kijken hoe zo’n quantumcomputer precies in elkaar zit.
De opbouw van een quantumcomputer
Nu we weten waarom een quantumcomputer een geweldig apparaat zou kunnen zijn, is de volgende stap om te begrijpen hoe een dergelijke computer daadwerkelijk gebouwd wordt. Daarom gaat de rest van dit artikel over hoe de fundamentele bouwstenen van een quantumcomputer, zogeheten ‘qubits’, gemaakt worden. De werking van zulke qubits komt dan aan bod in deel 2 van deze serie.
Voor we beginnen, is het de moeite waard om een belangrijk detail aan te stippen: een quantumcomputer is slechts voor een héél klein deel ‘quantum’. Voor de meeste taken die je kan bedenken voor een computer, werken klassieke computers al uitstekend. (Er zijn zelfs wiskundige bewijzen die dit beamen.) Dat wil niet zeggen dat in een verre sciencefictionachtige toekomst de hele machines niet één en al op quantummechanica gebaseerd zullen zijn (misschien op het toetsenbord en de monitor na?), maar zo’n verre toekomst is hier niet aan de orde. Nee, in de praktijk van vandaag en waarschijnlijk de komende decennia is het zo dat men binnen de hele berekening het ‘moeilijke probleem’ dat een normale computer niet op kan lossen identificeert, en alleen dát probleem op laat lossen door de ‘quantumcomputer’.
Neem het voorbeeld van het optimalisatieprobleem hierboven. Een normale computer bepaalt alle randvoorwaarden en parameters zoals de startpositie, en andere begrenzingen zoals ‘geen tolwegen’ enzovoort. Vervolgens kan de normale computer het optimaliseren (het vergelijken van de routes) laten doen door de qubits. Het resultaat van de qubits wordt dan weer geanalyseerd door de normale computer, en omgezet in een eindantwoord: de meest optimale route.
Laten we nu beginnen bij het begin: hoe ziet een quantumcomputer eruit? Zie de afbeelding hieronder:
In de afbeelding zien we grote witte cilinders in een metalen rek hangen. Naast de cilinders staan computers die alles bestuurt wat er binnenin en buiten de kolom gebeurt. Deze computer is niet bijzonder: het is niet veel meer dan een gewone huis-, tuin- en keukencomputer. Binnen in de witte cilinder wordt een uiterst goed vacuüm onderhouden. In dat vacuüm zit vervolgens een gouden ‘kroonluchter’ zoals te zien op de foto rechts. Deze gouden kroonluchter is het ophangmechanisme waarin de qubits verwerkt zijn. De daadwerkelijke qubits zitten helemaal onderaan in de kroonluchter, in het gebied aangegeven met het rode vierkantje. Alle andere elementen die je in deze foto ziet zijn niets anders dan kabelhouders en koelelementen. Het koelen is heel belangrijk: om namelijk alles uiteindelijk echt ‘quantum’ te maken, moeten op de een of ander manier alle invloeden als gevolg van warmte – ook wel ‘thermische fluctuaties’ genoemd – verwijderd worden. Thermische fluctuaties zijn namelijk verantwoordelijk voor ‘thermalisatie’: een proces dat quantummechanische effecten uitmiddelt en de computer in feite weer ‘klassiek’ maakt. Dat willen we natuurlijk voorkomen.
Verder zijn de qubits die we in dit artikel (en alle komende artikelen in de serie) zullen beschouwen afhankelijk van de werking van supergeleiders. Zoals je misschien wel weet zijn voor supergeleiding uitzonderlijke lage temperaturen nodig – ook hier weer omdat thermische fluctuaties het proces verstoren. Om een indruk te geven van hóé koud het geheel moet worden: onderaan de kroonluchter is de temperatuur 15 millikelvin – 15 duizendsten van een graad boven het absolute temperatuurnulpunt. Bovenaan de kroonluchter is de temperatuur ongeveer kamertemperatuur. Een enorm verschil!
Onderaan de kroonluchter zit een klein elektronicaplaatje met daarop de daadwerkelijke fysische qubits. Deze qubits kunnen worden aangestuurd met alle goudkleurige kabeltjes, om zo een voorgeprogrammeerde berekening uit te voeren. Na de berekening kan het resultaat uitgelezen worden, via de kabeltjes weer omhoog, naar de normale computer. In die normale computer wordt het meetresultaat geanalyseerd en wordt het antwoord naar de gewenste vorm vertaald.
Het elektronicaplaatje helemaal onderaan de kandelaar ziet eruit als op de foto hieronder. Op de foto zien we de qubits, die eigenlijk niets anders zijn dan twee minuscule condensatorplaatjes (de schaal van vierkante qubits is enkele vierkante micrometers) met een supergeleidend elementje tussen de twee plaatjes. De details over de werking van deze opstelling geef ik later, maar dit is dus alles wat je nodig hebt om een qubit te maken. Natuurlijk is voor een werkende computer nog wel iets meer nodig: op de foto zijn ook allemaal mechanismes te zien die zijn ingebouwd om de qubits uit te kunnen lezen en het resultaat weer terug te brengen naar de normale computer, die er vervolgens van alles mee kan doen.
Schematisch gezien ziet de opbouw van een quantumcomputer er dus zo uit:
In het allerlaatste plaatje zie je hier nog één element dat ik niet beschreven heb: een bolletje met x-, y- en z-assen. Dat plaatje beschrijft hoe een qubit echt werkt, dus hoog tijd om daar iets over te zeggen!
De qubit: een quantumsysteem op basis van twee toestanden
Nu is het eindelijk tijd om het hoofdonderwerp van dit artikel aan te snijden: qubits. Hoe bouw je die, en hoe werken ze? En wellicht wil je ook weten wat het verschil is met een normale computerbit. Die laatste vraag is gelukkig makkelijk te beantwoorden. Een normale bit is een element dat een waarde kan aannemen, zoals een ‘0’ of een ‘1’. In een computer wordt dit gedaan met behulp van kleine stroompjes. Loopt er geen stroom? Dan heb je een ‘0’. Loopt er wel een stroom? Dan heb je een ‘1’. Een qubit is net zoiets, maar die kan ook nog eens ‘allebei tegelijkertijd zijn’. In quantumtermen noemen we dat een superpositie. We bedoelen daarmee dat de qubit bij het uitlezen zowel een ‘0’ als een ‘1’ kan opleveren, en dat het enige wat vastligt de kansen op die twee uitkomsten zijn. Daarnaast kunnen meerder qubits met elkaar ‘verstrengeld’ worden, wat zoiets betekend als dat de kansen voor de ene qubit onlosmakelijk verbonden zijn met die voor een andere qubit.
Dit zijn allemaal eigenschappen die een normale transistor (het element wat een ‘1’ of een ‘0’ is in een gewone computer) niet kan hebben; we hebben hiervoor dus echt quantumdeeltjes nodig. Hoe deze eigenschappen ertoe kunnen leiden dat een computer met qubits problemen op kan lossen die normale computers niet aan kan, verdient een hele serie aparte artikelen. Ik neem er hier genoegen mee om een voorbeeld te noemen: Shors algoritme. Dit is een computeralgoritme (een set aan instructies), gepubliceerd in 1994 door Peter Shor, waarmee een quantumcomputer in staat wordt gesteld om grote getallen te ‘factoriseren’ in hun oorspronkelijke elementen. Met andere woorden: het algoritme kan je vertellen welke twee getallen, met elkaar vermenigvuldigd, een resulterend getal ‘X’ vormen.
Als enige input heeft het programma daarvoor het getal ‘X’ nodig. Dit is heel bijzonder: normale computers zouden dit nooit binnen afzienbare tijd voor elkaar krijgen. Vergelijk het met het zoeken van routes: je moet dan alle mogelijkheden langslopen, en dat zijn er gigantisch veel. Het is deze complexiteit en (tot nu toe) onmogelijkheid die de basis is voor enkele zeer veel gebruikte veiligheidsprotocollen in digitale communicatie, zoals RSA-encryptie. Zodra Shors algoritme op een werkende quantumcomputer met voldoende qubits kan worden geprogrammeerd is die encryptie dus helemaal niet zo veilig meer!
Samenvattend: uiteindelijk is de fundamentele bouwsteen van een quantumcomputer dus een zogeheten qubit. Zo’n qubit is niets anders dan een quantummechanisch systeem dat twee verschillende toestanden kent, net zoals de oude vertrouwde transistors twee toestanden aan kunnen nemen, maar met het verschil dat ook beide toestanden ‘een beetje’ kunnen worden aangenomen. Na het lezen van dit artikel denk je misschien: ‘Goh, dat ziet er overzichtelijk uit. Zijn we er dan bijna?’. Helaas; de moeilijkheid van het verhaal dat ik hier verteld heb zit in de details. Het eerste probleem is dat we daadwerkelijk véél qubits nodig hebben om een interessante berekening te kunnen bewerkstelligen. In afbeelding 3 zien we maar zo’n 7 qubits, en de meeste quantumcomputers van vandaag de dag komen niet veel verder dan dat. Daarnaast blijkt het dat het uitzonderlijk ingewikkeld is om de qubits betrouwbaar en stabiel te maken. Heel kleine schommelingen in temperatuur en onvermijdelijke invloeden van buitenaf maken dat quantumcomputers uitzonderlijk kwetsbaar zijn. Tot dusver is er nog bijna niemand echt in geslaagd om met qubits iets uit rekenen wat een normale computer niet zou kunnen. Men komt echter wel steeds dichterbij!
De qubits in afbeelding 3 hebben een eigen naam: ‘transmon-qubits’. Hoe deze condensatorplaatjes en supergeleidertjes precies een quantummechanisch systeem gebaseerd op twee toestanden vormen is een uitzonderlijk boeiend verhaal. Dat verhaal zullen we uitvoerig behandelen in deel twee van deze serie.
Ben je geïnteresseerd en wil je nu al meer weten? Kijk dan naar de open-acces lectures van Qiskit (IBM research) op youtube.