Wie ist das Orakel in Grovers Suchalgorithmus implementiert?


27

Der Suchalgorithmus von Grover bietet eine nachweisbare quadratische Beschleunigung für die unsortierte Datenbanksuche. Der Algorithmus wird normalerweise durch die folgende Quantenschaltung ausgedrückt:

In den meisten Darstellungen, ein wesentlicher Bestandteil des Protokolls ist das „Orakel gate“ Uω , die „magische Weise “ die Operation |x(1)f(x)|x . Es wird jedoch oftmals nicht gesagt, wie schwierig es tatsächlich sein würde, ein solches Tor zu realisieren. In der Tat könnte es so aussehen, als ob die Verwendung eines "Orakels" nur eine Möglichkeit ist, die Schwierigkeiten unter den Teppich zu kehren.

Woher wissen wir, ob eine solche Orakeloperation tatsächlich realisierbar ist? Und wenn ja, wie komplex ist sie (zum Beispiel in Bezug auf die Komplexität der Gate-Zerlegung)?


5
Darüber habe ich mich auch gewundert. In diesem Experiment zum Beispiel verdrahten sie die Lösung fest in das Orakel, was mir ein bisschen nach Schummeln schmeckt ...
M. Stern

Eine weitere gute Antwort auf diese Frage finden Sie in dieser Antwort zur CS Theory SE.
glS

Antworten:


20

Die Funktion f ist einfach eine beliebige Boolesche Funktion einer Bitfolge: f:{0,1}n{0,1} . Für Anwendungen zur Unterbrechung der Kryptographie wie [1] , [2] oder [3] handelt es sich eigentlich nicht um eine "Datenbanksuche", bei der die gesamte Datenbank irgendwie als Quantenschaltung gespeichert werden müsste, sondern um eine Funktion wie

x{1,if SHA-256(x)=y;0,otherwise,

für festes y , das keine Struktur hat, können wir, anders als zum Beispiel die Funktion, für eine klassische Suche ausnutzen

x{1,if 2xy(mod220481942289),0,otherwise,

Die Struktur kann ausgenutzt werden , um sie auch auf einem klassischen Computer schneller zu invertieren.

Die Frage nach den jeweiligen Kosten kann im Allgemeinen nicht beantwortet werden, da f eine beliebige Schaltung sein kann - es geht nur darum , aus einer klassischen Schaltung eine Quantenschaltung zu machen . Aber normalerweise ist die Funktion f , wie im obigen Beispiel, auf einem klassischen Computer sehr billig auszuwerten, sodass ein Quantencomputer, für den sich alles andere an Grovers Algorithmus im Rahmen Ihres Budgets befindet, nicht besonders belastet werden sollte.

Die einzigen allgemeinen Kosten zusätzlich zu f sind ein zusätzliches bedingtes NICHT-Gatter

C:|a|b|a|ab
wo ist xor, und ein zusätzlicher Hilfs-Qubit dafür. Insbesondere wenn wir einen Stromkreis
F:|x|a|junk|x|af(x)|junk
gebaut aus C und der Schaltung für f , dann , wenn wir sie anwenden |x zusammen mit einem zusätzlichen Qubit zunächst in den Staat |=H|1=(1/2)(|0|1)woHein HadamardGatter ist, dann erhalten wir

F|x||junk=12(F|x|0|junkF|x|1|junk)=12(|x|f(x)|junk|x|1f(x)|junk).

f(x)=01f(x)=1

F|x||junk=|x||junk,
f(x)=1 then 1f(x)=0, so
F|x||junk=|x||junk,
and thus in general
F|x||junk=(1)f(x)|x||junk.


5

Well, Grover's original paper, "Quantum mechanics helps in searching for a needle in a haystack" clearly states, it assumes that C(S) can be evaluated in a constant time. Grover's search is not concerned about the implementability, but the polynomial reduction in what's called a query complexity (how many times you consult the oracle, like a classical database)

In fact, the concept of oracle in computing was proposed by Alan Turing to describe constructs for which a description on a UTM might not be realizable (Wikipedia). It is in some sense magical.

But of course, coming back to your question, how do we then actually make the circuit for Grover search (or any oracular) algorithm? Do we need to know the answer in advance to search the result? Well, in some sense you need to. That is exactly what clever improvements on Grover search tries to work on, such that, we need not know the exact answer in advance, but some properties of it. Let me illustrate with an example.

For the pattern recognition problem using Grover's search, if I have 4 patterns on 2 qubits (00, 01, 10, 11) and I want to mark and amplify 11, the diagonal of my oracle unitary should be like (1,1,1,-1) to take care of the pi phase shift for the solution. So, for this simple implementation, for construction the unitary, you need to know the full answer in advance.

A clever improvement of pattern completion if given in the paper "Quantum pattern matching" by Mateas and Omar. In essence, it constructs as many fixed oracles as there are alphabets in the set. So for our binary string, there will be an oracle which marks out all 1s, and another that marks out all 0s. The oracles are invoked conditionally based on what I want to search. If I want to search 11, I call oracle 1 on the LSqubit, and oracle 1 again on the MSqubit. By the first oracle, I would amplify the states (01, 11), i.e. states with LSQ as 1, and in the 2nd call, it would amplify (10, 11). So as you see, 11 is the only state that gets amplified twice, ending in a higher measurement probability. Though the compiled quantum circuit would change based on what my input search pattern is, a high-level description of the quantum algorithm remains the same. You can think of the oracles as function calls based on a switch case of the alphabet set invoked for each character in the search string.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.