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,0,if SHA-256(x)=y;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,0,if 2x≡y(mod22048−1942289),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⟩|a⊕b⟩
wo ⊕ ist xor, und ein zusätzlicher Hilfs-Qubit dafür. Insbesondere wenn wir einen Stromkreis F:|x⟩|a⟩|junk⟩↦|x⟩|a⊕f(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⟩|junk⟩−F|x⟩|1⟩|junk⟩)=12–√(|x⟩|f(x)⟩|junk′⟩−|x⟩|1⊕f(x)⟩|junk′⟩).
f(x)=01⊕f(x)=1F|x⟩|−⟩|junk⟩=|x⟩|−⟩|junk′⟩,
f(x)=1 then 1⊕f(x)=0, so F|x⟩|−⟩|junk⟩=−|x⟩|−⟩|junk′⟩,
and thus in general F|x⟩|−⟩|junk⟩=(−1)f(x)|x⟩|−⟩|junk′⟩.