5.3 Op zoek met Grover

Na een veilige terugkeer op aarde zijn Hila en Iman goede vrienden geworden met Alice en Bob. Ze besluiten met z’n vieren nieuwjaarsavond samen door te brengen. Deze dag valt toevallig ook samen met de trekking van de jaarlijkse quantumloterij! Ze weten dat maar één van de vier de hoofdprijs kan winnen, maar wie zal dat zijn? Als we onze vier hoofdpersonen labelen met bitstrings, bijvoorbeeld als

Naam x1x_{1} x2x_{2}
Alice 0 0
Bob 0 1
Hila 1 0
Iman 1 1

dan kunnen we de loterij beschrijven met een functie f:{0,1}2{0,1}f\colon\{0,1\}^{2}\to\{0,1\} die de waarde 1 geeft voor de bitstring die overeenkomt met de winnaar. Als bijvoorbeeld f(1,0)=1f(1,0)=1, dan is Hila de winnaar van de loterij van dit jaar.

Hoe kunnen onze vrienden de winnaar bepalen? Met een klassiek algoritme moeten ze de functie tot drie keer evalueren om de winnaar te bepalen. Stel bijvoorbeeld dat ze te weten komen dat f(0,1)=0f(0,1)=0 en f(1,0)=0f(1,0)=0 – dan weten ze nog steeds niet of Alice of Iman de winnaar is! Door ouderwetse redenen die al lang vergeten zijn, staat in de regels van de loterij dat de functie maar één keer geëvalueerd mag worden. Maar de loterij vindth het ook prima als we het fase-orakel OfO_{f} uitvoeren – het is tenslotte een quantumloterij!

Alice en haar vrienden komen bij elkaar en beginnen na te denken. Na een tijdje wordt Bob ongeduldig en hij stelt voor: "Laten we gewoon de eerste stappen van Deutsch-Jozsa en Bernstein-Vazirani volgen – dezelfde truc zal vast nog wel een keer werken…"missing De anderen weten niet echt een beter alternatief, dus ze gaan aan de slag en bereiden de volgende toestand voor:

(HH)(|0|0)=|+|+=12(|00+|01+|10+|11).\displaystyle(H\otimes H)(\left|0\right\rangle\otimes\left|0\right\rangle)=% \left|+\right\rangle\otimes\left|+\right\rangle=\frac{1}{2}\bigl{(}\left|00% \right\rangle+\left|01\right\rangle+\left|10\right\rangle+\left|11\right% \rangle\bigr{)}.

Vervolgens geven ze de toestand door aan de quantumloterij, die het fase-orakel OfO_{f} toepast en de toestand teruggeeft. Laat aa en bb de twee bits zijn die de winnaar aanduiden, d.w.z. f(a,b)=1f(a,b)=1 en alle andere functiewaarden zijn nul. De loterij stuurt dan de volgende twee-qubit-toestand terug:

12(|00+|01+|10+|112|a,b)\displaystyle\quad\frac{1}{2}\bigl{(}\left|00\right\rangle+\left|01\right% \rangle+\left|10\right\rangle+\left|11\right\rangle-2\left|a,b\right\rangle% \bigr{)}
=12(|00+|01+|10+|11)|a,b\displaystyle=\frac{1}{2}\bigl{(}\left|00\right\rangle+\left|01\right\rangle+% \left|10\right\rangle+\left|11\right\rangle\bigr{)}-\left|a,b\right\rangle
=|+|+|a|b,\displaystyle=\left|+\right\rangle\otimes\left|+\right\rangle-\left|a\right% \rangle\otimes\left|b\right\rangle,

waarbij de 2|a,b-2\left|a,b\right\rangle in de eerste regel een van de plustekens vervangt door een minteken. Na het toepassen van een Hadamard-transformatie krijgen ze de volgende toestand:

|0|0H|aH|b\displaystyle\quad\left|0\right\rangle\otimes\left|0\right\rangle-H\left|a% \right\rangle\otimes H\left|b\right\rangle
=|0012(|0+(1)a|1)(|0+(1)b|1)\displaystyle=\left|00\right\rangle-\frac{1}{2}\Bigl{(}\left|0\right\rangle+(-% 1)^{a}\left|1\right\rangle\Bigr{)}\otimes\Bigl{(}\left|0\right\rangle+(-1)^{b}% \left|1\right\rangle\Bigr{)}
=12(|00+(1)a|10+(1)b|01+(1)a+b|11)\displaystyle=-\frac{1}{2}\Bigl{(}-\left|00\right\rangle+(-1)^{a}\left|10% \right\rangle+(-1)^{b}\left|01\right\rangle+(-1)^{a+b}\left|11\right\rangle% \Bigr{)}

Nu zijn onze vrienden in de war en weten ze niet goed wat ze moeten doen. Hila heeft een idee: "Ik vind het minteken voor de |00\left|00\right\rangle maar niks. Waarom passen we geen quantumbewerking toe die er als volgt uitziet?"missing

|00\displaystyle\left|00\right\rangle |00\displaystyle\mapsto-\left|00\right\rangle (5.16)
|01\displaystyle\left|01\right\rangle |01\displaystyle\mapsto\left|01\right\rangle
|10\displaystyle\left|10\right\rangle |10\displaystyle\mapsto\left|10\right\rangle
|11\displaystyle\left|11\right\rangle |11\displaystyle\mapsto\left|11\right\rangle

Iman voegt toe: "Ik denk dat ik weet hoe ik dit kan maken met behulp van een controlled-Z-bewerking en een handvol NOTs…” In een mum van tijd, komen onze vrienden tot de volgende toestand:

12(|00+(1)a|10+(1)b|01+(1)a+b|11)\displaystyle-\frac{1}{2}\Bigl{(}\left|00\right\rangle+(-1)^{a}\left|10\right% \rangle+(-1)^{b}\left|01\right\rangle+(-1)^{a+b}\left|11\right\rangle\Bigr{)}

Na een klein poosje realiseert Alice zich: "Deze twee-qubit-toestand kan worden geschreven als een tensorproduct!"missing

12(|0+(1)a|1)(|0+(1)b|1)=(HH)|a,b.\displaystyle-\frac{1}{2}\Bigl{(}\left|0\right\rangle+(-1)^{a}\left|1\right% \rangle\Bigr{)}\otimes\Bigl{(}\left|0\right\rangle+(-1)^{b}\left|1\right% \rangle\Bigr{)}=-(H\otimes H)\left|a,b\right\rangle.

Bob zegt enthousiast: "Aha! We hoeven alleen nog maar een Hadamard-transformatie toe te passen en beide qubits te meten. Kan je er ook achter komen wie de winnaar van de quantumloterij van dit jaar wordt?

Huiswerkopdracht 5.5 (Quantumloterij).
  1. 1.

    Schrijf de kwantumoperatie van Vgl. 5.16 uit met behulp van een controlled-Z-bewerking en een paar NOT-bewerkingen.

    Hint: Houd in gedachten dat de controlled-Z-bewerking CZ12CZ_{1\to 2} als volgt werkt op de basistoestanden |x,y\left|x,y\right\rangle: Als x=0x=0 dan doet het niets. Als x=1x=1 dan werkt het als een ZZ op de tweede qubit. Je hebt vorige week geleerd hoe je dit kunt maken in Quirky.

  2. 2.

    Maak het quantumalgoritme dat Alice, Bob, Hila en Iman hebben bedacht in Quirky en bepaal de winnaar van de quantumLoterij van dit jaar.

Hack.
  1. 1.

    We kunnen de quantumbewerking van Vgl. 5.16 schrijven als

    (NOTNOT)CZ12(NOTNOT).\displaystyle(\mathrm{NOT}\otimes\mathrm{NOT})CZ_{1\to 2}(\mathrm{NOT}\otimes% \mathrm{NOT}).

    Dit werkt, omdat CZ12CZ_{1\to 2} als volgt werkt (volgens de hint en wat ZZ doet)

    |00\displaystyle\left|00\right\rangle |00\displaystyle\mapsto\left|00\right\rangle
    |01\displaystyle\left|01\right\rangle |01\displaystyle\mapsto\left|01\right\rangle
    |10\displaystyle\left|10\right\rangle |10\displaystyle\mapsto\left|10\right\rangle
    |11\displaystyle\left|11\right\rangle |11\displaystyle\mapsto-\left|11\right\rangle

    Dit is bijna wat we willen, konden we maar de rollen van 0 en 11 van alle invoer- en uitvoerbits omdraaien. Maar dit is precies wat NOT\mathrm{NOT} doet! Dus we passen NOT\mathrm{NOT} toe op alle bits voor en na de CZ12CZ_{1\to 2}.

  2. 2.

    Het Quirky circuit ziet er als volgt uit:

    [Uncaptioned image]

    Dit betekent dat Iman de winnaar is van de quantumloterij van dit jaar!

Het quantumalgoritme dat onze vrienden net ontdekt hebben is een speciaal geval van het algoritme van Grover. Grovers algoritme lost het volgende probleem op: Gegeven een orakel voor een functie f:{0,1}n{0,1}f\colon\{0,1\}^{n}\to\{0,1\}, vindt het de x1,,xn{0,1}x_{1},\dots,x_{n}\in\{0,1\} waarvoor geldt dat f(x1,,xn)=1f(x_{1},\dots,x_{n})=1. We kunnen dit probleem zien als het vinden van een loterijwinnaar tussen 2n2^{n} deelnemers of, wat eenvoudiger gezegd, het vinden van een item dat voldoet aan een bepaalde interessante eigenschap in een ongestructureerde database (waarmee we bedoelen dat de items in de database niet gesorteerd of vergelijkbaar zijn). Met hetzelfde argument dat we eerder gaven, zal elk klassiek algoritme in het slechtste geval naar alle 2n2^{n} items moeten kijken voordat het klaar is (gemiddeld zal je nog steeds naar ongeveer de helft van de items moeten kijken). Grovers algoritme daarentegen hoeft het orakel maar een paar keer te gebruiken en dat aantal is evenredig met 2n\sqrt{2^{n}} - een hoeveelheid die veel langzamener groeit dan de ‘klassieke’ 2n2^{n}. Het algoritme van Grover is een veelzijdig hulpmiddel dat een kwadratische versnelling geeft voor veel rekenproblemen.