Grover-Algorithmus

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Der Grover-Algorithmus ist ein Quantenalgorithmus zur Suche in einer unsortierten Datenbank mit N Einträgen in \mathcal O\left(\sqrt{N}\right) Schritten und mit \mathcal O\left(\log N\right) Speicherbedarf (siehe O-Notation). Er wurde von Lov Grover im Jahre 1996 veröffentlicht[1] und ist der bislang einzige bekannte Beweis, dass Quantenrechner prinzipiell schneller als klassische Computer sind.[2]

Auf einem klassischen Computer ist der prinzipiell schnellstmögliche Suchalgorithmus in einer unsortierten Datenbank die lineare Suche, die \mathcal O(N) Rechenschritte erfordert. Der Grover-Algorithmus liefert damit eine quadratische Beschleunigung, was für große N beträchtlich ist.

Wie die meisten Quantenalgorithmen ist der Grover-Algorithmus ein probabilistischer Algorithmus, d. h., er gibt die korrekte Antwort mit hoher Wahrscheinlichkeit, wobei die Wahrscheinlichkeit einer fehlerhaften Antwort durch einfache Wiederholung des Algorithmus verkleinert wird.

Anwendungen[Bearbeiten]

Der Grover-Algorithmus ermöglicht eigentlich nicht die direkte Suche in unsortierten Datenbanken, sondern die Umkehrung einer endlichen Funktion y = f(x), denn zu einem gegebenen Wert y entspricht ein Wert x=f^{-1} (y) der Suche nach einem Wert x im Definitionsbereich von f.

Der Grover-Algorithmus kann ebenso zur Berechnung des Mittelwerts und des Medians einer Menge von Zahlen verwendet werden, sowie zur Lösung des Kollisionsproblems. Weiter kann er zur Lösung NP-vollständiger Probleme eingesetzt werden, indem er die Menge aller möglichen Probleme durchläuft. Obwohl damit NP-vollständige Probleme beträchtlich schneller gelöst werden können, ermöglicht auch der Grover-Algorithmus keine Lösung in polynomialer Zeitkomplexität.

Detaillierter Ablauf[Bearbeiten]

Der folgende Ablauf des Algorithmus bezieht sich auf die Suche nach einem einzelnen Sucheintrag. Der Algorithmus kann weiter optimiert werden, um einen von mehreren möglichen Einträgen zu finden, wobei deren Anzahl im Vorfeld bekannt ist.

Voraussetzungen[Bearbeiten]

Gegeben sei eine unsortierte Datenbank mit N Einträgen, die in einem N-dimensionalen Zustandsraum \mathcal{H} durch Nlog_2N Qubits dargestellt wird. Die Einträge seien mit 0, 1, \dots, (N-1) durchnummeriert. Dann wählen wir eine auf \mathcal{H} wirkende Observable \Omega mit N verschiedenen Eigenzuständen

\left\{\left\vert 0\right\rang, \left\vert 1\right\rang, \cdots, \left\vert N-1\right\rang\right\}

(in der Bra-Ket-Notation) und den zugehörigen Eigenwerten

\left\{\lambda_0, \lambda_1, \cdots, \lambda_{N-1} \right\}.

Ferner sei ein unitärer Operator U_\omega gegeben, der eine Subroutine, das sogenannte Orakel, darstellt, die die Datenbankeinträge effizient nach dem Suchkriterium vergleicht. Der Algorithmus legt nicht fest, wie das Orakel arbeitet, es muss allerdings die Superposition der Quantenzustände verarbeiten und den gesuchten Eigenzustand \left\vert\Omega\right\rang erkennen:

 U_\omega \left\vert\omega\right\rang = - \left\vert\omega\right\rang
 U_\omega \left\vert x\right\rang = \left\vert x\right\rang \qquad \forall x \ne \omega

Ziel des Algorithmus ist es, diesen Eigenzustand \left\vert\omega\right\rang, bzw. äquivalent den Eigenwert \omega zu identifizieren.

Schrittabfolge[Bearbeiten]

  1. Initialisiere das System in den Zustand
    \left\vert s\right\rang = \frac{1}{\sqrt{N}} \sum_x \left\vert x\right\rang
  2. Führe die folgende sog. Grover-Iteration r(N)-mal durch. (Die Funktion r wird weiter unten beschrieben.)
    1. Wende den Operator U_\omega an;
    2. Wende den Operator U_s = 2 \left\vert s\right\rang\ \left\lang s\right\vert - I an.
  3. Führe die Messung von \Omega durch. Das Messergebnis beträgt \lambda_\omega mit einer Wahrscheinlichkeit nahe 1, falls N\gg 1. Mit der Messung von \lambda_\omega ist das System im Zustand \omega.

Geometrische Sicht und Bestimmung der Schrittzahl r(N)[Bearbeiten]

Der Anfangszustand lautet

 |s\rang = \frac{1}{\sqrt{N}} \sum_x |x\rang.

Betrachten wir die von \left\vert s\right\rang und \left\vert\omega\right\rang aufgespannte Ebene. Sei \vert\omega^\times\rang ein Ket-Vektor in dieser Ebene, senkrecht zu \left\vert\omega\right\rang. Da \left\vert\omega\right\rang einer der Basisvektoren ist, folgt

 \lang\omega\mid s\rang = \frac{1}{\sqrt{N}}

Geometrisch bedeutet das, dass \left\vert\omega\right\rang und \left\vert s\right\rang in einem Winkel von \tfrac\pi 2 - \theta zueinander stehen, wobei \theta = \theta(N) gegeben ist durch

 \cos \left(\frac{\pi}{2} - \theta \right) = \frac{1}{\sqrt{N}}

folglich ist

 \sin \theta = \frac{1}{\sqrt{N}}

Der Operator U_\omega ist eine Spiegelung an der zu \left\vert\omega\right\rang orthogonalen Hyperebene; für Vektoren in der von \left\vert s\right\rang und \left\vert\omega\right\rang aufgespannten Ebene wirkt er als Spiegelung an der Geraden durch \vert\omega^\times\rang. Der Operator U_\omega ist eine Spiegelung an der Geraden durch \left\vert s\right\rang. Der Zustandsvektor bleibt also nach der Anwendung von U_s und U_\omega in der durch \left\vert s\right\rang und \left\vert\omega\right\rang aufgespannten Ebene. Damit rotiert der Operator U_s\ U_\omega bei jedem Schritt der Grover-Iteration den Zustandsvektor um einen Winkel von 2\theta nach \left\vert\omega\right\rang.

Der Algorithmus muss also anhalten, sobald der Zustandsvektor \left\vert\omega\right\rang am nächsten gekommen ist. Weitere Iterationen würden ihn wieder davon weg drehen und damit die Wahrscheinlichkeit der korrekten Antwort wieder verkleinern. Für die optimale Anzahl r an Iterationen zur exakten Übereinstimmung mit \left\vert\omega\right\rang gilt

\frac{\pi}{2} - \theta = 2 \theta r,

also

r(N) = \frac{\pi}{4 \theta(N)} - \frac{1}{2}

Da r aber eine ganze Zahl sein muss, setzen wir r gleich der gerundeten Zahl \tfrac\pi{4\theta}-\tfrac 12. Damit beträgt die Wahrscheinlichkeit, eine falsche Antwort zu messen,  \mathcal O\left(1 - \cos^2\theta\right) = \mathcal O\left(\sin^2\theta\right). Die Irrtumswahrscheinlichkeit bei N Datenbankeinträgen lautet also asymptotisch \mathcal O\left(\tfrac 1N\right), d. h., sie ist vernachlässigbar klein für große N.

Für N\gg 1 gilt \theta\approx N^{-\frac 12}, also

r(N) \longrightarrow \frac{\pi \sqrt N} 4

Erweiterungen[Bearbeiten]

Enthält die Datenbank nicht nur einen, sondern k gesuchte Einträge, so funktioniert der Algorithmus ebenfalls, allerdings gilt für die Anzahl r durchzuführender Iterationen nun \tfrac\pi 4\sqrt\tfrac Nk statt \tfrac\pi 4\sqrt N. Ist k unbekannt, so führt man den Grover-Algorithmus in

 \tfrac\pi 4\sqrt\tfrac N1,\; \tfrac\pi 4\sqrt\tfrac N2,\; \tfrac\pi 4\sqrt\tfrac N4,\; \tfrac\pi 4\sqrt\tfrac N8, \ldots

Iterationen durch. Für beliebiges k wird ein gesuchter Eintrag mit genügend hoher Wahrscheinlichkeit gefunden. Die Gesamtzahl von Iterationen beträgt höchstens

 \pi \frac{\sqrt N}4 \left(1 + \frac{1}{\sqrt{2}} + \frac 12 + \cdots\right) = \mathcal O\left(\sqrt N\right)

Optimalität des Grover-Algorithmus[Bearbeiten]

Der Grover-Algorithmus ist optimal in dem Sinne, dass es keinen Quantenalgorithmus mit weniger als \mathcal O\left(\sqrt{N}\right) Rechenschritten geben kann.[3] Dieses Resultat ist wichtig, um die Grenzen des Quantenrechnens zu verstehen. Wäre das Suchproblem beispielsweise im ungünstigsten Fall mit \mathcal O\left(\log^c N\right) Schritten lösbar, so wäre NP in BQP enthalten.

Ebenso ist die Anzahl i. A. notwendiger Iterationen für k gesuchte Einträge, also \pi\sqrt\tfrac N{2k}, optimal.

Qualitatives Argument[Bearbeiten]

Um ein heuristisches Verständnis des quantenmechanischen Verfahrens im Vergleich zum klassischen Vorgehen zu gewinnen, und für Verallgemeinerungen, ist es sinnvoll den folgenden Spezialfall zu betrachten: die gesuchte Information soll auf einem spezifischen Gitterpunkt eines Quadratgitters liegen. Die Suche erfordert also klassisch N Schritte, wenn \sqrt N die Kantenlänge des Quadrates ist. Quantenmechanische Zustände sind dagegen Strahlen im Hilbertraum, d. h., sie sind nur bis auf einen Faktor bestimmt, und wenn man vom Zentrum des Quadrates ausgeht, ist die Richtung \theta des Strahls durch eine Punktmenge gegeben, welche nur dem Umfang und nicht dem Inhalt des Quadrates entspricht, also einer Menge \sim \mathcal O\left(\sqrt N\right). Um einen speziellen Punkt auf dem gewählten Strahl zu finden, muss man nur noch Interferenzexperimente mit anderen quantenmechanischen Zuständen durchführen, was praktisch ohne zusätzlichen Zeitaufwand möglich ist. Die gesuchte Information erhält man also quantenmechanisch in \mathcal O\left(\sqrt N\right) Schritten.

Verwandte Themen[Bearbeiten]

Ein ganz anderes Problem, bei dem Quantencomputer ebenfalls eine wesentliche Beschleunigung bringen, betrifft die Faktorisierung einer sehr großen Zahl (siehe Shor-Algorithmus).

Weblinks[Bearbeiten]

Einzelnachweise[Bearbeiten]

  1. Grover, L. K.: A fast quantum mechanical algorithm for database search, Proceedings, 28th Annual ACM Symposium on the Theory of Computing, (May 1996) p. 212
  2. Zwar ist mit dem Shor-Algorithmus ein polynomiell schneller probabilistischer Faktorisierungsalgorithmus für Quantencomputer bekannt, während kein bekannter klassischer Faktorisierungsalgorithmus polynomielle Laufzeit besitzt; allerdings gibt es bisher keinen mathematischen Beweis, dass nicht doch ein solcher Algorithmus existiert.
  3. Bennett C.H., Bernstein E., Brassard G., Vazirani U.: The strengths and weaknesses of quantum computation. SIAM Journal on Computing 26 (5): 1510–1523 (1997)