5.1.3 Fase-orakels
Omdat het bit-orakel een quantumbewerking is, kunnen we het niet alleen toepassen op basistoestanden maar ook op algemene quantumtoestanden. Waarom zouden we zoiets willen doen? Wel, als we het orakel alleen ‘klassieke’ vragen stellen dan is er weinig hoop op het bereiken van een quantumversnelling! Laten we, gegeven deze motivering, eens onderzoeken hoe het bit-orakel voor een arbitraire functie zich gedraagt als het laatste register wordt gezet op . We merken eerst het volgende interessante gegeven op:
Dat wil zeggen, als we een qubit in de toestand inverteren, dan pikken we een minteken op. We kunnen op dezelfde manier berekenen hoe het bit-orakel werkt op een toestand van de vorm . Door lineariteit volgt uit Vgl. 5.5 dat
Met andere woorden, de laatste qubit eindigt weer in de toestand , maar we krijgen een minteken als . In feite hebben we de volgende quantumbewerking uitgevoerd op de eerste qubits:
voor alle bitstrings . We noemen het fase-orakel voor .
Opmerkelijk genoeg werkt het fase-orakel voor een functie op qubits, omdat het de uitvoer opslaat in de amplitude. Dit is anders dan het bit-orakel , dat de uitvoer in een extra qubit opslaat en daarom op qubits werkt.
Op het eerste gezicht lijkt het fase-orakel niet veel te doen, omdat het alleen een algemeen minteken toevoegt als het werkt op een basistoestand, waarvan we door 2.7 weten dat het niet kan worden gemeten. Maar als we het toepassen op een superpositie kan het fase-orakel relatieve mintekens veroorzaken, waardoor we een interessant resultaat krijgen. Als we bijvoorbeeld voor qubits een fase-orakel toepassen op een algemene twee-qubit-toestand
dan krijgen we
Het blijkt dat het fase-orakel inderdaad handig is en vaak veel gemakkelijker toe te passen is in quantumalgoritmes dan het bit-orakel , dus vanaf nu zullen we het bit-orakel niet meer gebruiken.
Oefenopgave 5.2 (Fase-orakel voor een één-bitfunctie).
We weten van 5.1 dat er vier functies met een enkele invoer- en uitvoerbit. Kun je het fase-orakel voor elk van deze functies implementeren in Quirky?
Solution.
Er zijn vier functies: de ’identiteit’-functie , de NOT-functie, de nul-functie en de één-functie.- •
- •
- •
-
•
Voor de één-functie met geldt:
wat we kunnen bereiken door de eerste twee orakels achter elkaar uit te voeren:
Het eerste orakel geeft inderdaad een minteken als , terwijl het tweede orakel een minteken geeft als , dus in beide gevallen krijgen we een minteken:
Waar we lineariteit hebben gebruikt om het minteken naar voren te brengen.
Huiswerkopdracht 5.1 (Bepaal de functie vanuit het fase-orakel).
Beschouw het volgende twee-qubitcircuit (zoals gewoonlijk is de onderste draad de eerste qubit):
Voor welke functie is dit het fase-orakel?
Hint: Gebruik dat , wat volgt uit 4.5.
Hack.
Het circuit komt overeen met de volgende twee-qubitbewerking:
Hoe werkt dit op een basistoestand van twee qubits?
Als , wordt het tweede qubit niet geflipt door de controlled-NOT-bewerking, dus:
want . Maar als , wordt het tweede qubit wel geflipt door de controlled-NOT-bewerking, dus:
(in de een na laatste stap hebben we de hint gebruikt). Dus:
en hieruit kunnen we aflezen dat precies het fase-orakel voor de -functie implementeert.
Laten we kort samenvatten wat we tot nu toe hebben bereikt: Met behulp van bit-orakels kunnen we een quantumcomputer vragen om een functie te evalueren op precies dezelfde manier als we dat zouden vragen aan een gewone computer die op een inverteerbare manier werkt (vergelijk Vgl. 5.4 en 5.5). Dit is belangrijk, want het betekent dat we geen appels met peren vergelijken als we vragen hoeveel keer we het bit orakel moeten vragen om iets te weten te komen over versus hoeveel keer we moeten evalueren op een gewone computer om hetzelfde te weten te komen. En omdat we net hebben laten zien dat het fase-orakel altijd geïmplementeerd kan worden met behulp van het bit orakel , maakt het geen verschil als we in plaats daarvan vragen stellen aan het fase-orakel .