Fungsi f hanyalah fungsi boolean sembarang dari string bit: f:{0,1}n→{0,1} . Untuk aplikasi untuk memecahkan kriptografi, seperti [1] , [2] , atau [3] , ini sebenarnya bukan 'pencarian basis data', yang mengharuskan penyimpanan seluruh basis data sebagai rangkaian kuantum, melainkan fungsi seperti
x↦{1,0,if SHA-256(x)=y;otherwise,
untuk fixed y , yang tidak memiliki struktur kita dapat mengeksploitasi untuk pencarian klasik, tidak seperti, katakanlah, fungsi
x↦{1,0,if 2x≡y(mod22048−1942289),otherwise,
yang memiliki struktur yang dapat dieksploitasi untuk membalikkannya lebih cepat bahkan pada komputer klasik.
Pertanyaan tentang biaya tertentu tidak dapat dijawab secara umum karena f dapat berupa sirkuit apa pun — itu hanya masalah membuat sirkuit kuantum dari sirkuit klasik . Tetapi biasanya, seperti pada contoh di atas, fungsi f sangat murah untuk dievaluasi pada komputer klasik, sehingga seharusnya tidak menimbulkan beban yang sangat berat pada komputer kuantum yang segala sesuatu tentang algoritma Grover sesuai anggaran Anda.
Satu-satunya biaya umum di atas f adalah gerbang BUKAN bersyarat ekstra C:|a⟩|b⟩→|a⟩|a⊕b⟩
mana ⊕ adalah xor, dan qubit ekstra tambahan untuk itu. Khususnya, jika kita memiliki sirkuit F:|x⟩|a⟩|junk⟩↦|x⟩|a⊕f(x)⟩|junk′⟩
dibangun dari C dan sirkuit untuk f , maka jika kita menerapkannya ke |x⟩ bersama-sama dengan qubit tambahan awalnya di negara bagian |−⟩=H|1⟩=(1/2–√)(|0⟩−|1⟩)di manaHadalah gerbang Hadamard, maka kita mendapatkan
F|x⟩|−⟩|junk⟩=12–√(F|x⟩|0⟩|junk⟩−F|x⟩|1⟩|junk⟩)=12–√(|x⟩|f(x)⟩|junk′⟩−|x⟩|1⊕f(x)⟩|junk′⟩).
Jika f(x)=0 maka 1⊕f(x)=1 , maka dengan menyederhanakan kita memperoleh F|x⟩|−⟩|junk⟩=|x⟩|−⟩|junk′⟩,
sedangkan jika f(x)=1 maka 1⊕f(x)=0 , maka F|x⟩|−⟩|junk⟩=−|x⟩|−⟩|junk′⟩,
dan dengan demikian secara umumF| x ⟩ | - ⟩ | junk⟩=(-1 )f( x )| x ⟩ | - ⟩ | sampah′⟩ .