Simons Algorithmus
Simons Algorithmus ist ein Quanten-Abfragealgorithmus für ein Problem, das als Simons Problem bekannt ist. Es ist ein Promise-Problem mit einer ähnlichen Grundstruktur wie die Deutsch-Jozsa- und Bernstein-Vazirani-Probleme, aber mit anderen Einzelheiten.
Simons Algorithmus ist bedeutsam, weil er einen exponentiellen Vorteil von Quanten- gegenüber klassischen (einschließlich probabilistischen) Algorithmen bietet, und die darin verwendete Technik inspirierte Peter Shor zur Entdeckung eines effizienten Quantenalgorithmus für die ganzzahlige Faktorisierung.
Simons Problem
Die Eingabefunktion für Simons Problem hat die Form
für positive ganze Zahlen und . Wir könnten uns auf den Fall beschränken, aber es gibt kaum etwas zu gewinnen, wenn wir diese Annahme machen – Simons Algorithmus und seine Analyse sind in beiden Fällen im Wesentlichen gleich.
Wir werden das Versprechen gleich entpacken, um besser zu verstehen, was es besagt, aber zunächst sollte klar sein, dass es erfordert, dass eine sehr spezielle Struktur hat – also werden die meisten Funktionen dieses Versprechen nicht erfüllen. Es ist auch angemessen anzuerkennen, dass dieses Problem nicht für seine praktische Bedeutung gedacht ist. Vielmehr ist es ein etwas künstliches Problem, das maßgeschneidert ist, um für Quantencomputer einfach und für klassische Computer schwer zu sein.
Es gibt zwei Hauptfälle: Der erste Fall ist, dass die Null-Zeichenkette ist, und der zweite Fall ist, dass nicht die Null-Zeichenkette ist.
-
Fall 1: Wenn die Null-Zeichenkette ist, können wir die Genau-dann-Aussage im Versprechen vereinfachen, sodass sie lautet: Das entspricht der Injektivität von .
-
Fall 2: Wenn nicht die Null-Zeichenkette ist, impliziert das erfüllte Versprechen für diese Zeichenkette, dass zweieindeutig ist (two-to-one), d.h. für jede mögliche Ausgabezeichenkette von gibt es genau zwei Eingabezeichenketten, die dazu bringen, diese Zeichenkette auszugeben. Außerdem müssen diese zwei Eingabezeichenketten die Form und für eine Zeichenkette haben.
Es ist wichtig zu erkennen, dass es nur eine Zeichenkette geben kann, die funktioniert, wenn das Versprechen erfüllt ist, sodass es für Funktionen, die das Versprechen erfüllen, immer eine eindeutig korrekte Antwort gibt.
Hier ist ein Beispiel einer Funktion der Form , die das Versprechen für die Zeichenkette erfüllt.
Es gibt verschiedene Eingabezeichenketten und verschiedene Ausgabezeichenketten, jede davon erscheint zweimal – das ist also eine zweieindeutige Funktion. Außerdem ist für je zwei verschiedene Eingabezeichenketten, die dieselbe Ausgabezeichenkette erzeugen, das bitweise XOR dieser zwei Eingabezeichenketten gleich , was gleichbedeutend damit ist, dass eine der beiden gleich der anderen XOR-verknüpft mit ist.
Beachte, dass das Einzige, was an den tatsächlichen Ausgabezeichenketten wichtig ist, ist, ob sie für verschiedene Eingabezeichenketten gleich oder verschieden sind. Im obigen Beispiel erscheinen zum Beispiel vier Zeichenketten ( und ) als Ausgaben von . Wir könnten diese vier Zeichenketten durch andere ersetzen, solange sie alle verschieden sind, und die korrekte Lösung würde sich nicht ändern.
Algorithmusbeschreibung
Hier ist ein Quantencircuit-Diagramm, das Simons Algorithmus darstellt.
Um klar zu sein: Oben sind Qubits, auf die Hadamard-Gates wirken, und unten sind Qubits, die direkt in das Abfrage-Gate gehen. Es sieht den bereits in der Lektion besprochenen Algorithmen sehr ähnlich, aber diesmal gibt es keinen Phase-Kickback; die unteren Qubits gehen alle im Zustand in das Abfrage-Gate.
Um Simons Problem mit diesem Circuit zu lösen, sind tatsächlich mehrere unabhängige Ausführungen erforderlich, gefolgt von einem klassischen Nachbearbeitungsschritt, der später nach der Analyse des Verhaltens des Circuits beschrieben wird.
Analyse
Die Analyse von Simons Algorithmus beginnt ähnlich wie beim Deutsch-Jozsa-Algorithmus. Nachdem die erste Schicht der Hadamard-Gates auf den oberen Qubits ausgeführt wurde, wird der Zustand zu
Wenn ausgeführt wird, wird die Ausgabe der Funktion mit dem Null-Zustand der unteren Qubits XOR-verknüpft, sodass der Zustand wird zu
Wenn die zweite Schicht der Hadamard-Gates ausgeführt wird, erhalten wir mit der gleichen Formel für die Wirkung einer Schicht von Hadamard-Gates wie zuvor den folgenden Zustand.
An diesem Punkt weicht die Analyse von derjenigen für die vorherigen Algorithmen in dieser Lektion ab.
Wir sind an der Wahrscheinlichkeit interessiert, dass die Messungen für jede mögliche Zeichenkette ein bestimmtes Ergebnis liefern. Mithilfe der Regeln für die Analyse von Messungen, die in der Lektion Mehrere Systeme des Kurses Grundlagen der Quanteninformation beschrieben wurden, stellen wir fest, dass die Wahrscheinlichkeit , die Zeichenkette zu erhalten, gleich
ist.
Um diese Wahrscheinlichkeiten besser zu verstehen, brauchen wir noch etwas mehr Notation und Terminologie. Erstens ist das Bild der Funktion die Menge aller Ausgabezeichenketten.
Zweitens können wir für jede Zeichenkette die Menge aller Eingabezeichenketten, die dazu führen, dass die Funktion diese Ausgabezeichenkette ergibt, als ausdrücken.
Die Menge ist als Urbild von unter bekannt. Wir können das Urbild unter einer beliebigen Menge anstelle von auf analoge Weise definieren – es ist die Menge aller Elemente, die auf diese Menge abbildet. (Diese Notation sollte nicht mit der Inversen der Funktion verwechselt werden, die möglicherweise nicht existiert. Die Tatsache, dass das Argument auf der linken Seite die Menge und nicht das Element ist, ist der Hinweis, der uns hilft, diese Verwechslung zu vermeiden.)
Mit dieser Notation können wir die Summe in unserem obigen Ausdruck für die Wahrscheinlichkeiten aufteilen und erhalten
Jede Zeichenkette wird genau einmal durch die beiden Summationen repräsentiert – wir legen diese Zeichenketten je nachdem, welche Ausgabezeichenkette sie erzeugen, wenn wir die Funktion auswerten, in separate Eimer und summieren dann separat über alle Eimer.
Wir können nun die euklidische Norm zum Quadrat auswerten und erhalten
Um diese Wahrscheinlichkeiten weiter zu vereinfachen, betrachten wir den Wert
für eine beliebige Wahl von .
Wenn gilt, dann ist eine injektive Funktion und es gibt immer genau ein Element , für jedes . Der Wert des Ausdrucks ist in diesem Fall .
Wenn hingegen gilt, dann gibt es genau zwei Zeichenketten in der Menge . Genauer gesagt, wenn wir als eine dieser zwei Zeichenketten wählen, dann muss die andere Zeichenkette sein, gemäß dem Versprechen in Simons Problem. Mit dieser Beobachtung können wir wie folgt vereinfachen.
Es stellt sich heraus, dass der Wert in beiden Fällen unabhängig von der spezifischen Wahl von ist.
Wir können nun die Analyse abschließen, indem wir dieselben zwei Fälle wie zuvor separat betrachten.
-
Fall 1: In diesem Fall ist die Funktion injektiv, also gibt es Zeichenketten , und wir erhalten
Mit anderen Worten: Die Messungen ergeben eine gleichmäßig zufällig gewählte Zeichenkette .
-
Fall 2: In diesem Fall ist zweieindeutig, also gibt es Elemente in . Mit der obigen Formel schließen wir, dass die Wahrscheinlichkeit, jedes zu messen, gleich
ist. Mit anderen Worten: Wir erhalten eine gleichmäßig zufällig aus der Menge gewählte Zeichenkette, die Zeichenketten enthält. (Da gilt, haben genau die Hälfte der Binärzeichenketten der Länge das binäre Skalarprodukt mit und die andere Hälfte das binäre Skalarprodukt mit , wie wir bereits bei der Analyse des Deutsch-Jozsa-Algorithmus für das Bernstein-Vazirani-Problem festgestellt haben.)
Klassische Nachbearbeitung
Wir wissen nun, wie hoch die Wahrscheinlichkeiten für die möglichen Messergebnisse sind, wenn wir den Quantencircuit für Simons Algorithmus ausführen. Reicht das aus, um zu bestimmen?
Die Antwort ist ja, vorausgesetzt, wir sind bereit, den Prozess mehrmals zu wiederholen und akzeptieren, dass er mit einer gewissen Wahrscheinlichkeit scheitern kann, die wir durch ausreichend viele Ausführungen des Circuits sehr klein machen können. Die wesentliche Idee ist, dass jede Ausführung des Circuits uns statistische Hinweise auf liefert, und wir können diese Hinweise nutzen, um mit sehr hoher Wahrscheinlichkeit zu finden, wenn wir den Circuit ausreichend oft ausführen.
Nehmen wir an, wir führen den Circuit Mal unabhängig aus, für . Diese bestimmte Anzahl von Iterationen ist nicht besonders – wir könnten je nach der Fehlerwahrscheinlichkeit, die wir tolerieren möchten, größer (oder kleiner) wählen, wie wir sehen werden. Die Wahl stellt sicher, dass wir mit einer Wahrscheinlichkeit von mehr als bestimmen.
Durch -maliges Ausführen des Circuits erhalten wir Zeichenketten . Die Hochindizes hier sind Teil der Namen dieser Zeichenketten, keine Exponenten oder Indizes ihrer Bits:
Wir bilden nun eine Matrix mit Zeilen und Spalten, indem wir die Bits dieser Zeichenketten als binärwertige Einträge verwenden.
Wir kennen zu diesem Zeitpunkt nicht – unser Ziel ist es, diese Zeichenkette zu finden. Stellen wir uns aber kurz vor, wir kennen , und wir bilden einen Spaltenvektor aus den Bits der Zeichenkette wie folgt.
Wenn wir die Matrix-Vektor-Multiplikation modulo durchführen – das heißt, wir führen die Multiplikation wie üblich durch und nehmen dann den Rest der Einträge des Ergebnisses nach Division durch – erhalten wir den Nullvektor.
Das heißt, als Spaltenvektor wie soeben beschrieben betrachtet, wird die Zeichenkette immer ein Element des Nullraums der Matrix sein, vorausgesetzt, wir rechnen modulo . Das gilt sowohl im Fall als auch im Fall . Genauer gesagt ist der Nullvektor immer im Nullraum von enthalten, und er wird durch den Vektor, dessen Einträge die Bits von sind, ergänzt, falls gilt.
Die verbleibende Frage ist, ob es im Nullraum von andere Vektoren geben wird als diejenigen, die und entsprechen. Die Antwort ist, dass dies zunehmend unwahrscheinlich wird, je größer ist – und wenn wir wählen, enthält der Nullraum von mit einer Wahrscheinlichkeit von mehr als keine anderen Vektoren neben denen, die und entsprechen. Allgemeiner gilt: Wenn wir durch für eine beliebige positive ganze Zahl ersetzen, beträgt die Wahrscheinlichkeit, dass die Vektoren, die und entsprechen, allein im Nullraum von sind, mindestens .
Mithilfe linearer Algebra ist es möglich, eine Beschreibung des Nullraums von modulo effizient zu berechnen. Insbesondere kann dies mit dem Gaußschen Eliminationsverfahren erfolgen, das auf die gleiche Weise funktioniert, wenn die Arithmetik modulo erfolgt, wie mit reellen oder komplexen Zahlen. Solange die Vektoren, die und entsprechen, allein im Nullraum von sind – was mit hoher Wahrscheinlichkeit eintritt –, können wir aus den Ergebnissen dieser Berechnung ableiten.
Klassische Schwierigkeit
Wie viele Abfragen braucht ein klassischer Abfragealgorithmus, um Simons Problem zu lösen? Die Antwort ist: viele, im Allgemeinen.
Es gibt verschiedene präzise Aussagen über die klassische Schwierigkeit dieses Problems, und hier ist nur eine davon. Wenn wir einen beliebigen probabilistischen Abfragealgorithmus haben, der weniger als Abfragen stellt – eine Anzahl von Abfragen, die exponentiell in ist –, dann wird dieser Algorithmus Simons Problem mit einer Wahrscheinlichkeit von mindestens nicht lösen.
Manchmal kann der Beweis solcher Unmöglichkeitsergebnisse sehr anspruchsvoll sein, aber dieser ist durch eine elementare probabilistische Analyse nicht allzu schwer zu beweisen. Hier werden wir jedoch nur kurz die grundlegende Intuition dahinter betrachten.
Wir versuchen, die verborgene Zeichenkette zu finden, aber solange wir die Funktion nicht für zwei Zeichenketten mit demselben Ausgabewert abfragen, erhalten wir nur sehr begrenzte Informationen über . Intuitiv gesprochen werden wir nur lernen, dass die verborgene Zeichenkette nicht das exklusive ODER zweier verschiedener Zeichenketten ist, die wir abgefragt haben. Und wenn wir weniger als Zeichenketten abfragen, gibt es immer noch viele Möglichkeiten für , die wir nicht ausgeschlossen haben, weil es nicht genug Paare von Zeichenketten gibt, um das zu tun. Das ist kein formeller Beweis, nur die grundlegende Idee.
Zusammenfassend bietet Simons Algorithmus also einen bemerkenswerten Vorteil von Quanten- gegenüber klassischen Algorithmen im Abfragemodell. Insbesondere löst Simons Algorithmus Simons Problem mit einer Anzahl von Abfragen, die linear in der Anzahl der Eingabebits unserer Funktion ist, während jeder klassische Algorithmus, auch ein probabilistischer, eine Anzahl von Abfragen benötigt, die exponentiell in ist, um Simons Problem mit einer vernünftigen Erfolgswahrscheinlichkeit zu lösen.