3.1.6 Die kontrollierte-NOT-Operation
und kann man nutzen, um einzelne Bits und deren Reihenfolge zu ändern. Die Bits interagieren dabei aber nicht miteinander. Um sinnvolle Algorithmen zu Bauen brauchen wir eine Operation, die ein Bit in Abhängigkeit eines anderen verändert. Die -Operation, oder auch kontrollierte-NOT (engl. controlled-NOT), ist die einfachste Operation, die genau das macht. Sie flippt das Zielbit (engl. target) genau dann, wenn das Steuerbit (engl. control) auf 1 gesetzt ist.
Wenn das erste Bit das Steuer- und das zweite das Zielbit ist, schreiben wir . In diesem Fall gilt:
Das entspricht also einem vertauschen der beiden strings und während die anderen beiden unverändert bleiben.
Man kann sich auch als Addition vorstellen: die beiden bits werden aufaddiert (modulo ) und das Ergebnis wird im zweiten Bit gespeichert. Das lässt sich so zusammenfassen:
für jedes wobei “” die Addition modulo darstellt und das Komma die beiden Bits trennt. Die Addition modulo funktioniert wie folgt:
Manchmal nennt man “” auch XOR oder exklusives Oder (engl. exclusive or), also “entweder-oder”, da das Ergebnis nur dann ist, wenn genau eins der beiden Bits ist. Wie üblich kann man durch Linearität von deterministischen Bits auf probabilistische erweitern.
Wir werden auch kontrollierte-NOT Operationen sehen, bei denen das zweite Bit das Steuer- und das erste das erste das Zielbit ist. Analog schreiben wir diese Operation .
Übungsaufgabe 3.4 ( Steuer- und Zielbit vertauschen ).
-
1.
Schreibe die Operation in einer Formel wie in Gl. 3.20.
-
2.
Wie kann man durch und implementieren?
Du kannst eine kontrollierte-NOT-Operation in Quirky hinzufügen, indem du zunächst die Box auf dein Steuerbit ziehst. Danach ziehst du die Box auf den Draht, der dem Zielbit entsprechen soll. Wenn alles klappt, verbinden sich die beiden Boxen und du hast erfolgreich eine kontrollierte-NOT-Operation erstellt. Hast du zum Beispiel das untere Bit als Steuer- und das obere als Zielbit ausgewählt, solltest du folgendes Ergebnis erhalten:
Da das untere (!) Bit das erste, und das obere das zweite Bit ist, entspricht diese Abbildung der -Operation. Hier siehst du ein komplexeres Beispiel, in dem zunächst und anschließend angewendet wird:
Hausaufgabe 3.2 ( aus ’s ).
Problem: Es ist beinahe Mitternacht, aber Bob bastelt immer noch an dem Prototypen seines probabilistischen-Bit Computers herum, den er am nächsten Tag in der Schule vorstellen will. Er ist so beschäftigt damit, seinen Zufallszahlengenerator zu kalibreren, dass er vergisst seinen Papageien Ziggy zu füttern. Um auf sich aufmerksam zu machen, stößt Ziggy Bob’s Kaffetasse um und der ganze Kaffe fließt über Bob’s selbstgebastelte Tastatur, mit der er Operationen auslösen kann. Entsetzt stellt Bob fest, dass die -Taste nicht mehr funktioniert! Zum Glück ist es der -Taste besser ergangen, sie funktioniert noch immer. Fragen: Wie kann Bob die -Operation nur durch -Operationen implementieren? (Wenn du zeigen willst, dass zwei Operationen identisch sind, musst du das dank Linearität nur für die Basiszustände zeigen.)
Hinweis: Du solltest drei CNOT-Operationen benötigen.
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 Gl. 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!