3.1.6 De Controlled-NOT-bewerking
De bewerkingen en kunnen samen gebruikt worden om individuele bits te veranderen en ze in een andere volgorde te zetten. Maar ze zorgen er niet voor dat de bits met elkaar kunnen communiceren. Wat we willen is een nieuwe, meer geavanceerde bewerking die de waarde van een bit kan veranderen afhankelijk van de waarde van een andere bit. De eenvoudigste en belangrijkste van zulke bewerkingen is of de controlled-NOT-bewerking. Deze draait het doelbit om als het controlebit op staat.
Als het eerste bit de controle is en het tweede bit het doel, schrijven we deze bewerking als . In dit geval geldt dus:
Dit komt neer op het verwisselen van de strings en , terwijl de andere twee strings met rust worden gelaten.
Een andere manier om over na te denken is als een optelling: het telt de twee bits op (modulo ) en slaat het resultaat op in het tweede bit. Dit kan als volgt beknopt worden samengevat:
voor elke , waarbij ’’ een optelling modulo aangeeft en we een komma gebruiken om de waarden van de twee bits te scheiden. De regels voor optelling modulo 2 zijn als volgt:
Soms wordt ’’ ook wel XOR- of de exclusieve OR-bewerking genoemd, omdat het resultaat is als precies een van de twee bits is. Zoals gebruikelijk kunnen we uitbreiden van deterministische naar probabilistische bits door lineariteit.
Daarnaast zullen we ook gebruik maken van controlled-NOT-bewerkingen waarbij het tweede bit de controle is en het eerste bit het doel. Op vergelijkbare manier duiden we deze bewerking aan met .
Oefenopgave 3.4 ( Controle en doel omdraaien ).
-
1.
Geef op dezelfde manier als in Vgl. 3.20 een formule voor .
-
2.
Hoe kan je uitvoeren door alleen gebruik te maken van en ?
In Quirky kan je een controlled-NOT-bewerking maken door de volgende twee stappen uit te voeren. Sleep eerst het vakje naar een van de draden - dit markeert de draad als het controle bit. Sleep vervolgens het vakje naar de overeenkomstige locatie op de andere draad, wat de draad markeert als doelbit. Er ontstaat een verbinding om aan te geven dat je met succes een controlled-NOT-bewerking hebt gemaakt. Als we bijvoorbeeld het onderste bit als controle en het bovenste bit als doel kiezen, krijgen we het volgende resultaat:
Onthoud dat het onderste (!) bit het eerste bit is en het bovenste bit het tweede bit, dan zien we dat dit overeenkomt met de bewerking . Hier volgt een wat ingewikkelder voorbeeld, waarbij we eerst toepassen en daarna :
Huiswerkopdracht 3.2 ( vanuit s ).
Het probleem: Het is bijna middernacht, maar Bob is nog steeds aan het sleutelen aan zijn prototype van een probabilistische-bitcomputer die hij de volgende dag op school wil presenteren. Hij is zo druk bezig met het kalibreren van de randomness-generator dat hij vergeten is zijn papegaai Ziggy eten te geven. Om Bob’s aandacht te trekken, stoot Ziggy Bob’s koffiekopje om en morst de koffie over zijn op maat gemaakte toetsenbord, waarmee hij verschillende bewerkingen kan activeren. Bob is helemaal geschokt omdat de SWAP-knop niet meer werkt! Gelukkig werkt de CNOT-knop nog wel. De vraag: Hoe kan Bob de -bewerking uitvoeren met alleen controlled-NOT-bewerkingen? (Als je wilt bewijzen dat twee bewerkingen hetzelfde zijn, hoef je dit alleen aan te tonen voor de basistoestanden vanwege uitbreiding door lineariteit).
Hint: Je hebt drie CNOT-bewerkingen nodig.
Hack.
This can be done by three controlled-NOT operations, namely:
We can check that this works by checking that indeed these ’s send to , for all :
where we used the fact that , for any , see Vgl. 3.21. This construction is actually very similar to the XOR swap algorithm that one can run on a classical computer. This is a perfect example where knowing how to program a classical computer can help you develop quantum algorithms!