Suche

Der Grover-Algorithmus

Coverbild Illustration

Übersicht

Sekundarstufe

Mathematik, Informatik

Quantencomputing

Auf einen Blick

Schlüsselbegriffe: Quantenalgorithmen, Suche, Komplexität
Alter: 16–18 Jahre
Vorkenntnisse/Fertigkeiten: Quantenzustände, Hadamard-Gatter, Quantum Composer
Zeitumfang: 60–90 Minuten

Autor: Holger Vogts (DE)

Inhalt

Unterrichtsplan
Aufgaben und Hinweise für Lehrkräfte
Das Suchproblem
Klassische Lösung
  • Aufgabe 1, Aufgabe 2
Implementierung der Suchfunktion mit Quantengattern
Grover-Algorithmus: Die Quantencomputer-Lösung
  • Aufgabe 3, Aufgabe 4
Schlussfolgerungen
  • Aufgabe 5

Zusammenfassung

Das Ziel dieser Lektion ist es, ein Verständnis des Grover-Algorithmus für die Suche in unstrukturierten Daten zu entwickeln. Grovers Algorithmus benötigt nur etwa N Schritte, während ein klassischer Algorithmus N Schritte benötigt. Dadurch wird die Beschleunigung von Prozessen durch Quantenalgorithmen („Quantum speed-up“) deutlich.

Da die vollständige mathematische Beschreibung für Schüler recht anspruchsvoll ist, konzentrieren wir uns auf eine geometrische Darstellung, die ein einfacheres Verständnis des Algorithmus ermöglicht.

Illustration zu Quantum Algorithms

Unterrichtsplan
 

Zeit in MinutenUnterrichtsphaseAktivitätMaterial
0–5EinstiegWiederholung der linearen Suche aus Lektion 1.Arbeitsblatt
5–10Aufgabe 1/2Finden der klassischen Lösung (Vergleich mit Lektion 1) und Schreiben der Zahlen in Binärdarstellung.Arbeitsblatt
10–20Verständnis des Orakel-GattersEinführung des Toffoli-Gatters als Orakel und Vergleich mit den CNOT-Gattern aus Bernstein–Vazirani. Je nach Lerngruppe kann dies durch eigenständiges Lesen oder durch Erklärung des Lehrers erfolgen.Arbeitsblatt
(Seite 2 und 3)
20–40Aufgabe 3Schüler*innen bearbeiten den Grover-Algorithmus in einer geometrischen Darstellung. Sie lesen das Kapitel „Quantenlösung“ und übertragen den Algorithmus auf geänderte Zahlen in Aufgabe 3.
Die Ergebnisse sollten vor dem nächsten Abschnitt verglichen und gesichert werden.
Arbeitsblatt
40–50Aufgabe 4Schüler*innen reflektieren ihre Lösung aus dem geometrischen Ansatz.
Dies ist ein zentraler Punkt der Lektion, um zu verstehen, wie Grovers Algorithmus funktioniert und wie er sich von anderen Algorithmen unterscheidet.
Arbeitsblatt
50–60ZusammenfassungGemeinsame Besprechung der Ergebnisse. Die Lehrkraft sollte den Vergleich zu anderen Quantenalgorithmen und zum klassischen Fall hervorheben.Arbeitsblatt
60–EndeAufgabe 5 (optional)Test des Algorithmus im Quantum Composer. Die Wahrscheinlichkeiten können mit den geometrischen Ergebnissen verglichen werden.Arbeitsblatt,
Quantum Composer

Aufgaben und Hinweise für Lehrkräfte

Stell dir vor, du möchtest einen Safe mit einem Zahlenschloss öffnen, das aus vier Ziffern von 0 bis 9 besteht. Du hast keine Ahnung, welche Zahlen richtig sind. Wenn du sehr viel Glück hast, triffst du beim ersten Versuch die richtige Kombination. Wie viele Versuche würdest du im schlimmsten Fall benötigen? Wie viele im Durchschnitt? Erinnere dich an die Suche in unstrukturierten Daten aus Lektion 1 (Version mit und ohne Programmierung).

Arbeitsblatt

Die folgenden Aufgaben können Sie als Arbeitsblatt in pdf oder docx herunterladen.

Das Suchproblem

In Lektion 1 suchten wir nach einer bestimmten Zahl. Diese kann als Nummer betrachtet werden, die mit 1 markiert ist, während alle anderen mit 0 markiert sind. Es gibt also eine Liste von N Zahlen, in der genau eine Zahl den Wert 1 (die richtige Zahl) hat, während alle anderen 0 sind. Die Aufgabe besteht darin, die Position der Zahl zu finden, die 1 ist – und zwar mit möglichst wenigen Abfragen.

Das Problem kann mathematisch als eine Funktion beschrieben werden, bei der genau ein r aus {0, …, N-1} existiert mit:

 

f ( x ) = { 1 falls x = r 0 für alle anderen x

Klassische Lösung

Aufgabe 1: Klassische Lösung

Angenommen, du weißt nicht, was r ist. Bestimme die durchschnittliche Anzahl an Versuchen von x, die du in die Funktion f eingeben musst, um r zu finden. Welche Strategie würdest du verwenden?

Nutze eine lineare Suche (vgl. Übung 1 in Lektion 1 – Version mit und ohne Programmierung) und O(N) Schritte.

Aufgabe 2: Binärdarstellung

Wir verwenden die binäre Darstellung der Zahlen von 0 bis N-1, also N=2n und r wird als Zeichenkette der Länge n aus 0en und 1en dargestellt.

Gib die Binärdarstellung von r = 5 als 4Bit-Binärzahl an. Wie groß ist N bei 4 Bit?

Die Lösung ist r = 0101, N = 16.

Implementierung der Suchfunktion mit Quantengattern

Um die Suchfunktion zu implementieren, müssen wir ein neues Gatter einführen, das sogenannte Toffoli-Gatter. Dieses ähnelt dem CNOT-Gatter, wirkt aber auf mehrere Eingangs-Qubits, zum Beispiel:

Toffoli-Gatter


Das Toffoli-Gatter führt eine NOT-Operation auf dem Output-Qubit q[2] nur dann aus, wenn beide Input-Qubits (q[0] und q[1]) den Zustand | 1 haben. Wenn das Output-Qubit anfangs im Zustand | 0 ist, entspricht dies einer UND-Operation in einem klassischen Computer. Die folgende Tabelle zeigt den finalen Zustand der Output-Qubits q[2] für alle Kombinationen der beiden Input-Qubits:

q[0]

 

| 0

 

| 0

 

| 1

 

| 1
q[1]

 

| 0

 

| 1

 

| 0

 

| 1
q [2] (final)

 

| 0

 

| 0

 

| 0

 

| 1


Um die versteckte Funktion für die Grover-Suche zu konstruieren, verwenden wir eine Kombination aus einem n-Input-Toffoli-Gatter und NOT-Gattern.

Für die Implementation des Grover Algorithmus verwenden wir ein Beispiel mit 4 Qubits, wobei wir den versteckten String 0101 suchen. Um die Schaltung zu bauen, benötigen wir ein 4-Qubit-Toffoli-Gatter und NOT-Gatter für die Qubits, die der 0 in der versteckten Zeichenkette entsprechen. Diese NOT-Gatter kehren den Zustand dieser beiden Eingänge von | 0 zu | 1 um, so dass das Toffoli-Gatter den Zustand des Output-Qubits nur dann zu | 1 ändert, wenn alle Eingänge der versteckten Zeichenkette entsprechen. Danach werden die Zustände wieder mit NOT-Gattern zurückgesetzt.

Gatter-Schaltung für die versteckte Zeichenkette 0101

Gatter-Schaltung

Der Unterschied zwischen Grover-Algorithmus und Bernstein-Vazirani

In der vorherigen Lektion haben wir gesehen, dass die versteckte Funktion im Bernstein-Vazirani-Algorithmus in einem einzigen Schritt gefunden werden kann. Das lag daran, dass sie sich vollständig mit CNOT-Gattern aufbauen ließ, weshalb die Anwendung von Hadamard-Gattern sofort zur Lösung führte.

Der Grover-Algorithmus hingegen soll das Problem lösen, ob ein bestimmtes Datenelement in einer unstrukturierten Datenmenge existiert. Hier sind Toffoli-Gatter erforderlich, weshalb der Bernstein-Vazirani-Ansatz nicht funktioniert. Jedoch können wir wie beim Deutsch-Algorithmus und Bernstein-Vazirani zunächst alle Input-Qubits auf | 0 setzen und das Output-Qubit auf | 1 . Anschließend werden auf alle Qubits Hadamard-Gatter angewendet:

Qubits

 

Die folgende Tabelle zeigt die Auswirkungen auf die Input-Qubits durch diese Schaltung:
 

Tabelle mit States und Amplitudes

 

Die Anwendung der Hadamard-Gatter erzeugt eine Superposition aller 16 unterschiedlichen Zustände (alle Binärdarstellungen von 0 bis 15). Die Wahrscheinlichkeit für jeden Basiszustand ist 1/16 und die Ausgangsamplitude ist ¼. Dies ist derselbe Ausgangspunkt wie bei den vorherigen Algorithmen.

Die Anwendung der versteckten Funktion hat folgenden Effekt: Alle Koeffizienten der falschen Antworten bleiben gleich, während der Koeffizient der richtigen Antwort nun negativ ist. Dies allein wird uns nicht helfen, die versteckte Zeichenkette zu finden, da die Wahrscheinlichkeit (das Quadrat des Koeffizienten) bei einer Messung zu diesem Zeitpunkt noch gleich wäre.

Durch weitere Operationen auf diesen Superpositionszustand wird der Koeffizient (und damit die Wahrscheinlichkeit) der versteckten Zeichenkette verstärkt, während alle anderen abgeschwächt werden. Im Folgenden ist in einer geometrischen Darstellung gezeigt, wie dies umgesetzt wird.

Grover-Algorithmus: Die Quantencomputer-Lösung

Grovers Algorithmus löst unser Problem mit nur N Anfragen an die Funktion. Der Algorithmus ist in den folgenden Schritten implementiert:

Schritt I:

Erzeuge n Qubits im Zustand |0 und wende ein Hadamard-Gatter auf jedes Qubit an. Dies erzeugt eine Superposition aller möglichen Basiszustände von n Qubits.

Dieser Zustand |ψ kann als Überlagerung des gesuchten (richtigen) Zustands |r und der (normalisierten) Summe aller anderen (falschen) Zustände |w geschrieben werden, wobei |w orthogonal zu |r ist.

Winkel alpha

Beispiel:

Für den Fall von N=4 erhalten wir 
|ψ = 12 ( |00 + |01 + |10 + |11 ) .

Nehmen wir an, dass die gesuchte Zahl  r=210 ist, wird dies wie folgt geschrieben: 
|ψ = 12 |r + 3 2 |w  

mit 
|w = 1 3 ( |00 + |01 + |11 ) .

Der Winkel α  wird als Arkussinus des Koeffizienten des gesuchten Zustands berechnet: 
α = sin−1 ( 12 ) = 30°

Schritt II:

Wende das Orakel-Gatter Zf auf |ψ an. Dieses Gatter führt genau eine Abfrage an die Funktion f aus.

Wie wir im vorherigen Abschnitt gesehen haben, wird der Koeffizient von |r negativ, während der Koeffizient von |w unverändert bleibt. Geometrisch bedeutet dies, dass der Zustandsvektor von |ψ an dem Vektor |w gespiegelt wird.

zwei Winkel alpha

Schritt III:

Spiegele den Zustandsvektor Zf |ψ am Vektor |ψ (wie man in Aufgabe 5 sieht, wird dies durch eine Kombination mehrerer Gatter erzeugt).

Die Kombination von Schritt II und Schritt III heißt Grover-Operation G. Insgesamt wird der resultierende Zustandsvektor um 2α , verglichen zum Ausgangszustand |ψ , in die Richtung des gesuchten Zustands rotiert. Im Beispiel N = 4 haben wir den gesuchten Zustand mit genau einer Grover-Operation erreicht. Im Allgemeinen muss die Grover-Operation wiederholt werden wie im nächsten Schritt.

mehrere Winkel alpha

Schritt IV:

Wiederhole die Grover-Operation (Schritt II und III) t mal (d. h. die Anzahl der Anfragen an f ist t), bis der Zustandsvektor fast parallel zu |r ist und führe eine Messung auf allen n Qubits durch.

Aufgabe 3: Grovers Algorithmus Schritt für Schritt verstehen

Du wirst nun den Grover-Algorithmus schrittweise nachvollziehen und verstehen, wie oft die Grover-Operation wiederholt werden muss.

Wir verwenden n=4, also N=24=16.

Die gesuchte Zahl ist r=50101.

Winkel alpha

Schritt I:

Anwenden der Hadamard-Gatter auf alle vier Qubits im Zustand |0000 ergibt 
|ψ = 1 24 ( |0000 + |0001 + + |1111 ) ,

bzw.  |ψ = 14 |0101 + 15 24 |w .

Berechne den Winkel α aus dem Koeffizienten 124 =14 und zeichne den entsprechenden Vektor |ψ in der Abbildung ein.

Schritt II: Zeichne den Zustandsvektor Zf |ψ durch Spiegelung von |ψ an |w .

Schritt III: Zeichne den Zustandsvektor G |ψ durch Spiegelung von Zf |ψ an |ψ .

Schritt IV: Wiederhole Schritt II und Schritt III (also t=2).

Als Winkel ergibt sich α = sin−1 ( 14 ) 14.5° .

Nach einer Grover-Operation ist der Winkel ungefähr 43,5°; nach der zweiten Grover-Operation 72,5°.

Aufgabe 4: Reflektiere deine Lösung

a) Denkst du, dass zwei Wiederholungen der Grover-Operation ausreichend sind? Was würde passieren, wenn man dies häufiger wiederholen würde?

Nach zwei Wiederholungen befindet sich der Zustand noch nicht exakt im gewünschten Zielzustand, weist aber bereits eine große Amplitude in die richtige Richtung auf. Eine weitere Wiederholung würde den Winkel auf etwa 101,5° verändern, also noch etwas näher an den Zielzustand heranführen. Mehr Wiederholungen würden das Ergebnis jedoch wieder verschlechtern, da sich der Zustand dann wieder von der gewünschten Richtung entfernt.
 

b) Der Grover-Algorithmus findet die richtige Lösung nur mit einer hohen Wahrscheinlichkeit, aber nicht zwingend exakt. Erkläre dies anhand deiner Lösung.

Eine exakte Lösung würde erfordern, dass der Quantenzustand exakt dem gesuchten Zustand entspricht. Bei n = 4 ist das aufgrund der entstehenden Winkelwerte nicht möglich. Nach zwei oder drei Grover-Operationen ist jedoch die Wahrscheinlichkeit, das richtige Ergebnis zu messen, deutlich größer als die, ein falsches Ergebnis zu erhalten, da die Amplitude in der richtigen Richtung wesentlich höher ist (siehe Schlussfolgerungen im Arbeitsblatt zur Überprüfung der Lösung).
 

c) Wie ändert sich der Winkel α, wenn n erhöht wird? Was bedeutet dies für die notwendige Anzahl an Wiederholungen?

Mit wachsendem n wird der Winkel kleiner, d. h. die Grover-Operation muss öfter wiederholt werden, um näher in die gewünschte Richtung zu gelangen.

(Dies bedeutet auch, dass man die Anzahl der Wiederholungen so wählen kann, dass man höchstens um α vom Zielzustand abweicht.)

Schlussfolgerungen


Warum benötigt der Grover-Algorithmus nur O ( N ) Schritte?

Allgemein ist der Winkel α gleich sin−1 ( 1N ) , was bei hohem N (und kleinem α) zu 1 N angenähert werden kann.

Nach einer Grover-Operation ist der aktuelle Winkel 3α, nach der zweiten Grover-Operation  5α usw. Für t Grover-Operationen ergibt sich ein Ergebniswinkel von ( 2t + 1 ) α .

Um den richtigen Zustand mit einer hohen Wahrscheinlichkeit zu finden, sollte dieser Winkel nahe  π2 sein.

Mit ( 2t + 1 ) 1 N π2 erhält man t 12 ( N π2 1 ) ,

welches die optimale Anzahl an Grover-Operationen ist.

Wie kann ich sichergehen, die richtige Antwort gefunden zu haben?

Der Grover-Algorithmus liefert das richtige Ergebnis mit hoher Wahrscheinlichkeit. Bei den meisten Zahlen besteht aber auch eine kleine Wahrscheinlichkeit für ein falsches Ergebnis. Man kann das Resultat leicht prüfen, indem man es ins Orakel einsetzt. Falls es nicht stimmen sollte, wiederholt man den Algorithmus – und überprüft erneut.

Aufgabe 5: Überprüfe den Grover-Algorithmus im Quantum Composer

Die Schaltung zeigt die 4-Bit-Gover-Operation mit dem gesuchten Zustand | r = | 0101 .

Schaltung

 

a) Implementiere die Schaltung im Quantum Composer.

b) Die Schaltung implementiert nur eine Anwendung der Grover-Operation. Wiederhole die Grover-Operation und vergleiche das Ergebnis des Composers mit deinem Ergebnis aus Aufgabe 3.

Für eine Wiederholung der Grover-Operation wird das Orakel und die Spiegelung an | ψ wiederholt:

Schaltung


Die Wahrscheinlichkeit des gesuchten Zustands beträgt dann 90,2 %:

Graph mit "probability" und "computational basis states" und einem Peak bei 1010

Bei einer weiteren Wiederholung der Grover-Operation ist die Wahrscheinlichkeit 95,8%.

Close search