5.2.4 Het Bernstein-Vazirani algoritme
Hierboven hebben we besproken hoe we de Hadamard-transformatie kunnen gebruiken om een interessant probleem op te lossen. Gegeven een functie en de belofte dat constant of gebalanceerd is, was het Deutsch-Jozsa algoritme in staat om te bepalen welke van deze twee mogelijkheden het geval was.
In deze paragraaf bespreken we een ander interessant probleem dat we met een variant van dezelfde procedure kunnen oplossen. Net als voorheen beginnen we met een belofte over de onbekende functie waarmee we te maken hebben. Deze keer zullen we, in plaats van aan te nemen dat deze constant of gebalanceerd is, aannemen dat deze functie de volgende speciale vorm heeft:
waarbij een vaste bitstring is die de functie definieert.
Als , zijn er maar twee van zulke functies:
-
•
, in het geval dat , en
-
•
, wat overeenkomt met .
Als zijn er al vier van zulke functies:
-
•
, als ,
-
•
, als ,
-
•
, als , en , wenn , und
-
•
, als . , wenn .
Merk op dat elk van deze functies de som modulo twee van een deelverzameling van de variabelen berekent. Welke deelverzameling? Als , is de bijbehorende variabele onderdeel van de deelverzameling.
In het algemeen zijn er keuzes van de bitring en dus functies met de speciale vorm (5.14). In feite kunnen we Vgl. 5.14 zien als een manier om de bitstring
te verbergen in de functie . Hoeveel evaluaties van de functie hebben we nodig om deze string te achterhalen? Aangezien
kunnen we concluderen dat evaluaties van de functie zeker genoeg zijn. Voor elk klassiek algoritme is dit ook optimaal: elke keer dat je de functie evalueert achterhaal je maar één bit. Aangezien de onbekende bits volledig arbitrair zijn en er van zijn, moet je de functie minstens keer evalueren om ze allemaal te achterhalen.
We zullen nu zien dat we dit met een quantumalgoritme veel beter kunnen doen. Laten we om te beginnen bepalen hoe het fase-orakel voor de functie in Vgl. 5.14 werkt op de basistoestanden:
In de tweede stap hebben we gebruikt dat alleen afhangt van modulo twee (dus of even of oneven is), dus het maakt niet uit of we optelling modulo 2 (‘’) of de gewone optelling gebruiken. Hoe kan dit fase-orakel gerealiseerd worden? Voor ons maakt dat niet zoveel uit, omdat ons algoritme het orakel als een black box zal behandelen. Maar omdat het een leuke oefening is, kun je proberen dit uit te zoeken in de volgende opgave.
Oefenopgave 5.5 (Het fase-orakel realiseren (optioneel)).
In deze opgave ga je het fase-orakel implementeren voor functies van de vorm (5.14).
-
1.
Als zijn er vier van zulke functies, zoals we hierboven al besproken hebben. Kan je voor elk van deze functies een Quirky-circuit vinden dat het fase-orakel implementeert?
-
2.
Leg in woorden of met een plaatje uit hoe je het fase-orakel in het algemene geval kunt implementeren (d.w.z. wanneer en de bits arbitrair zijn).
Solution.
-
1.
Hier zijn de vier functies en hun fase-orakels:
-
•
Voor , , dus het fase-orakel doet niks.
-
•
Voor , , wat hetzelfde is als .
-
•
Voor , , wat hetzelfde is als .
-
•
Voor , , wat hetzelfde is als .
Het is dus duidelijk hoe deze vier bewerkingen eruit zien in Quirky.
-
•
-
2.
Het algemene patroon is vrij duidelijk. Voor een arbitraire functie in de vorm van (5.14) geldt dus:
waar we stellen dat en . In andere woorden, we passen een Z-gate toe op het -de qubit als en alleen als .
We introduceren nu het Bernstein-Vazirani algoritme, dat de verborgen bitstring ontrafelt met behulp van een enkele evaluatie van het fase-orakel van :
-
1.
Start met .
-
2.
Pas de Hadamard-transformatie toe.
-
3.
Pas het fase-orakel dat hoort bij de functie toe.
-
4.
Pas weer de Hadamard-transformatie toe.
-
5.
Meet als laatste alle qubits. De meetuitkomst is exact de bitstring .
Dit algoritme is identiek aan het Deutsch-Jozsa algoritme van Paragraaf 5.2.3 op de laatste stap na, die in dit geval nog simpeler is.
Huiswerkopdracht 5.3 (Bernstein-Vazirani uitvoeren).
Het oranje vakje Oracle in Quirky implementeert het fase-orakel voor een functie van de vorm (5.14) met . Implementeer het Bernstein-Vazirani algoritme in Quirky en gebruik dit om de verborgen bitstring te bepalen.
Hack.
Waarom werkt dit algoritme? Nu is het jouw beurt om de analyse te doen!
Oefenopgave 5.6 (Bernstein-Vazirani nagaan).
De functie komt overeen met de bitstring , zoals we al eerder hebben gezien.
Laat zien dat wanneer je het Bernstein-Vazirani algoritme voor deze functie uitvoert, de meetuitkomst inderdaad altijd is. Controleer dit niet alleen met Quirky, maar schrijf zelf de toestand na elke stap op.
Solution.
In stap 1 beginnen we met: In stap 2 passen we toe en krijgen we: In stap 3 passen we het fase-orakel van toe: In stap 4 passen we weer toe, met als resultaat: In stap 5 meten we beide qubits en krijgen we altijd het meetresultaat .In de volgende huiswerkopdracht kan je het algemene geval analyseren:
Huiswerkopdracht 5.4 (Bernstein-Vazirani nagaan (uitdagend)).
Laat zien dat als je het Bernstein-Vazirani algoritme uitvoert voor een functie van de vorm (5.14), de meetuitkomst is met 100% waarschijnlijkheid.
Hint: Aangezien de eerste vier stappen van het algoritme identiek zijn aan het Deutsch-Jozsa algoritme, wordt de toestand vlak voor de meting gegeven door Vgl. 5.13.
Hack.
Als we de hint volgen, zien we dat we net voor de meting de volgende toestand hebben:
De functie in dit probleem heeft de vorm (zoals in Vgl. 5.14 is gedefinieerd), dus de toestand is gegeven als
Om de waarschijnlijkheid van de meetuitkomst te begrijpen, moeten we de amplitude van de toestand in de bovenstaande uitdrukking analyseren. Aangezien dit overeenkomt met , …, , is de amplitude gegeven door
In de eerste stap hebben we gebruikt dat , …, . In de tweede stap hebben we gebruikt dat .
De amplitude van is 1, dus we kunnen concluderen dat we de uitkomst met een 100% kans krijgen.