Tidak.
" Peramal " dalam algoritma Grover adalah fungsi yang, mengingat elemen apa pun , memeriksa apakah adalah elemen yang kita cari, katakanlah . Untuk melakukan ini, oracle tidak memerlukan pengetahuan tentang semua elemen yang ada di database .x k x target x jxkxkxtargetxj
Mungkin membantu untuk mempertimbangkan contoh yang lebih konkret. Katakanlah Anda memiliki basis data nomor telepon empat digit, dengan menunjukkan elemen -th dalam database ini. Anda tertarik untuk mengetahui posisi apa dalam database yang sesuai dengan elemen . Mari kita asumsikan bahwa elemen 10000 dari database adalah satu-satunya elemen seperti itu, yaitu, dan untuk semua .x k k 1234 x 10000 = 1234 x k ≠ 123420000xkk1234x10000=1234xk≠1234k≠10000
Dalam kasus klasik, menjadi basis data tidak disortir, tidak ada cara yang lebih baik daripada menelusuri setiap elemen dalam database, memeriksa masing-masing terhadap target . Untuk melakukan ini, Anda hanya perlu memiliki algoritma yang, diberikan , mengembalikan jika dan sebaliknya. Cara yang setara untuk menyatakan masalah ini adalah dengan mengatakan bahwa kami menginginkan algoritme yang, mengingat daftar pasangan , mengembalikan pasangan sedemikian rupa sehingga adalah yang kita inginkan. Jadi, dalam kasus kami, kami menginginkan algoritma yang memberikan pengembalian1234xkyesxk=1234 { ( k , x k ) } 20000 k = 1 x k { ( k , x k ) } 20000 k = 1 ( 10000 , x 10000 = 1234 ) x kno{(k,xk)}20000k=1xk{(k,xk)}20000k=1(10000,x10000=1234). Perhatikan bahwa ini berarti bahwa fungsi yang memeriksa setiap pasangan hanya memeriksa fitur-fitur bagian dari negara bagian , yaitu bagian . Memang, jika ini bukan masalahnya, semuanya akan sia-sia karena kami tidak akan memulihkan informasi apa pun.xk
Kerangka terakhir masalah ini adalah salah satu yang harus diingat saat memikirkan algoritma Grover.
Dalam kasus kuantum, pasangan menjadi status kuantum (atau hanya bagaimana biasanya dilambangkan), dan fungsi oracle hanya memeriksa bagian informasi yang disimpan dalam cocok dengan target . Output dari prosedur adalah status . Sekarang, bagian dari keadaan ini kita sudah tahu , karena telah di-hardcode dalam oracle: kita tahu bahwa bagian kedua dari informasi yang dikodekan dalam adalah(k,xk)|ψk⟩|k⟩|ψk⟩|ψ10000⟩|ψ10000⟩1234, karena itulah yang kami cari di tempat pertama, dan merupakan informasi yang dikodekan ke dalam oracle itu sendiri.
Namun , status juga membawa informasi tambahan , yaitu posisi dalam database: .
Informasi ini tidak digunakan untuk membangun oracle , dan merupakan informasi yang kami peroleh dengan menjalankan algoritma.|ψ10000⟩ 10000
Akhirnya, perhatikan bahwa oracle tidak tahu apa-apa tentang isi dari database lengkap. Ini hanya mengimplementasikan sebuah fungsi yang memeriksa kondisi tunggal terhadap targetnya. Namun, fakta bahwa gerbang ini bekerja secara koheren berarti bahwa seseorang dapat memasukkan fungsi pemeriksa ini sebagai superposisi dari banyak (mungkin semua) elemen dari database, dan mendapatkan output yang berisi beberapa informasi global tentang semua elemen dalam database.|ψk⟩