Mit dem im letzten Teil vorgestellten Algorithmus können wir ein Problem lösen, das klassisch unlösbar ist: Wir konnten feststellen, ob eine zweiwertige Funktion konstant ist oder nicht, wobei wir sie nur einmal ausgeführt haben. Möglich war dies durch die Zusammenschaltung zweier Qubits und anschließende Überlagerung, wobei wir Interferenzen geschickt ausgenutzt haben.
Dabei haben wir ziemlich viel herumgerechnet und sind zwischen der Komponentendarstellung und der Vektordarstellung der Zustände hin- und hergesprungen, wie es gerade passte. Ich möchte das Ganze jetzt einmal konsequent in der Komponentendarstellung vorführen. Schreiben wir erst einmal auf, was wir schon haben:
Die Hadamard-Matrix, mit der wir die Superposition erzeugen, hat die Form
Die wirken auf die Basisvektoren wie folgt:
Basisvektoren werden also auf andere Basisvektoren abgebildet, d.h. die Basisvektoren werden vertauscht (im Fall von haben wir sogar die Identität). Die sind also Permutationsmatrizen, und man erhält durch genaues Hinsehen die Matrizen:
Da die Permutationsmatrizen sind, sind sie auch automatisch unitär. Der Beweis ist eine schöne Übungsaufgabe!
Hier ist noch einmal unsere Schaltung:
Wir haben also zuerst ein Hadamard-Gatter, dann ein und dann noch einmal ein Hadamard-Gatter. Da die Operationen linear sind, kann man sie zu einer einzigen zusammenfassen, zumindest mathematisch. Dazu müssen wir die entsprechenden Matrizen einfach miteinander multiplizieren. Das ist eigentlich einfach, aber man muss schon aufpassen, dass man keine Fehler macht. Die Matrizen haben wir oben hingeschrieben, und hier kommen jetzt die Ergebnisse:
Erinnern wir uns: und waren die konstanten Funktionen. Wir erhalten hier bei der Kombination mit jeweils die Identitätsmatrix! Wir stören uns dabei nicht an den Minuszeichen vor der 1 im Fall von , denn wir wissen, dass und denselben Zustand beschreiben, lediglich die Phase unterscheidet sich. Im Fall von und werden die beiden Basisvektoren und miteinander vertauscht! Und das haben wir uns in Teil 4 der Reihe zunutze gemacht, als wir den Algorithmus auf angewandt haben. Eine konstante Funktion bildet auf sich selbst ab, eine balancierte Funktion bildet den Zustand auf ab. So konnten wir mit einer Anwendung der Funktion entscheiden, ob sie konstant oder balanciert ist. (Mit oder hätte das nicht funktioniert.)