5.2.3 Der Deutsch-Jozsa-Algorithmus
Sind die obigen Beobachtungen für irgendwas nützlich? Ja, sind sie! Sei eine unbekannte Funktion, die entweder konstant oder balanced ist. Dann gibt es einen einfachen Quantenalgorithmus, welcher feststellen kann, welcher der beiden Fälle zutrifft, der nur ein einziges mal auswertet (also einmal anwendet).
Dieser Algorithmus heißt Deutsch-Jozsa-Algorithmus und funktioniert in fünf einfachen Schritten:
-
1.
Starte mit .
-
2.
Wende die Hadamard-Transformation an.
-
3.
Wende das Phasen-Orakel der entsprechenden Funktion an.
-
4.
Wende wieder die Hadamard-Transformation an.
-
5.
Messe alle Qubits. Wenn alle Ergebnisse Null sind, ist die Funktion konstant. Ansonsten muss sie balanced sein.
Diesen Algorithmus können wir mit klassischen Algorithmen vergleichen, wobei wir bemerken müssen, dass jeder klassische Algorithmus im schlimmsten Fall mindestens mal evaluieren muss. Angenommen, wir kennen die Funktion auf der Hälfte ihrer Eingabe-Bitstrings (also Eingaben) und erhalten in jedem Fall die gleiche Ausgabe. Dann können wir immer noch keine Aussage darüber treffen, ob die Funktion konstant ist, da die Funktion auf der anderen Hälfte der Eingabe-Bitstrings immer das andere Ergebnis ausgibt und somit balanced ist. Das würde also dem Worst-Case (engl. für “schlimmsten Fall”) entsprechen. In diesem Szenario hätten wir Fragen verschwendet, ohne dabei etwas sinnvolles herauszufinden. Um sicher zu gehen, ob konstant oder balanced ist, müssen wir die Funktion auf einer weiteren Eingabe evaluieren. Das ergibt insgesamt Auswertungen von im Vergleich zu Auswertung im Quantenalgorithmus. Bemerke, dass der Unterschied auch für recht kleine Werte wie schon so dramatisch ist, dass man nicht mit einem vertretbaren Zeitaufwand so häufig auswerten könnte (tatsächlich würde vorher die Sonne vollständig ausbrennen und wir müssten in ein neues Sonnensystem gezogen sein).
Zusammengefasst: Wenn eine Funktion ist, die entweder konstant oder balanced ist, dann kann der Deutsch-Jozsa-Algorithmus mit nur einer Auswertung von feststellen, welche der beiden Eigenschaften zutrifft. Das ist exponentiell schneller als jeder klassische Algorithmus, welcher im schlimmsten Fall die Funktion auf Eingaben auswerten müsste.
Hausaufgabe 5.2 (Deutsch-Jozsa ausführen).
Die gelbe Oracle Box in Quirky implementiert das Phasen-Orakel für eine Funktion, die entweder konstant oder balanced ist. Implementiere den Deutsch-Jozsa-Algorithmus in Quirky und finde damit heraus, welcher der beiden Fälle zutrifft.