Pencarian tak terstruktur
Ringkasan​
Kita akan mulai dengan deskripsi masalah yang diselesaikan algoritma Grover. Seperti biasa, kita akan menggunakan untuk menunjukkan alfabet biner sepanjang diskusi ini.
Misalkan
adalah fungsi dari string biner dengan panjang ke bit. Kita akan berasumsi bahwa kita bisa menghitung fungsi ini secara efisien, tapi selain itu fungsinya sembarang dan kita tidak bisa mengandalkannya memiliki struktur khusus atau implementasi tertentu yang sesuai dengan kebutuhan kita.
Yang dilakukan algoritma Grover adalah mencari string di mana Kita akan menyebut string seperti ini sebagai solusi untuk masalah pencarian. Jika ada beberapa solusi, maka salah satu dari mereka dianggap sebagai output yang benar, dan jika tidak ada solusi, maka jawaban yang benar mengharuskan kita melaporkan bahwa tidak ada solusi.
Tugas ini disebut masalah pencarian tak terstruktur karena kita tidak bisa mengandalkan memiliki struktur tertentu untuk memudahkannya. Kita tidak mencari dalam daftar yang terurut, atau dalam struktur data yang dirancang khusus untuk memfasilitasi pencarian, kita pada dasarnya mencari jarum dalam tumpukan jerami.
Secara intuitif, kita mungkin membayangkan bahwa kita memiliki Circuit Boolean yang sangat rumit yang menghitung dan kita bisa dengan mudah menjalankan Circuit ini pada string input yang dipilih jika kita mau. Tapi karena Circuit-nya sangat rumit, kita tidak punya harapan untuk memahami Circuit tersebut dengan memeriksa (selain memiliki kemampuan untuk mengevaluasinya pada string input yang dipilih).
Salah satu cara untuk melakukan tugas pencarian ini secara klasik adalah dengan mengiterasi semua string mengevaluasi pada setiap satu untuk memeriksa apakah itu solusi atau bukan. Selanjutnya, mari kita tulis
demi kenyamanan. Ada string dalam sehingga mengiterasi semua string tersebut memerlukan evaluasi dari Beroperasi di bawah asumsi bahwa kita terbatas hanya mengevaluasi pada input yang dipilih, ini adalah yang terbaik yang bisa kita lakukan dengan algoritma deterministik jika kita ingin menjamin keberhasilan. Dengan algoritma probabilistik, kita mungkin berharap menghemat waktu dengan memilih string input ke secara acak, tapi kita masih memerlukan evaluasi dari jika kita ingin metode ini berhasil dengan probabilitas tinggi.
Algoritma Grover menyelesaikan masalah pencarian ini dengan probabilitas tinggi hanya dengan evaluasi dari Untuk memperjelas, evaluasi fungsi ini harus terjadi dalam superposisi, mirip dengan algoritma query yang dibahas di pelajaran Quantum query algorithms, termasuk algoritma Deutsch, algoritma Deutsch-Jozsa, dan algoritma Simon. Tidak seperti algoritma-algoritma itu, algoritma Grover mengambil pendekatan iteratif: mengevaluasi pada superposisi string input dan menyelingi evaluasi-evaluasi ini dengan operasi-operasi lain yang memiliki efek menciptakan pola interferensi, menghasilkan solusi dengan probabilitas tinggi (jika ada) setelah iterasi.
Pernyataan masalah formal​
Kita akan memformalisasi masalah yang diselesaikan algoritma Grover menggunakan model query komputasi. Yaitu, kita akan mengasumsikan bahwa kita memiliki akses ke fungsi melalui Gate query yang didefinisikan dengan cara biasa:
untuk setiap dan Ini adalah aksi dari pada state basis standar, dan aksinya secara umum ditentukan oleh linearitas.
Seperti yang dibahas di pelajaran Quantum algorithmic foundations, jika kita memiliki Circuit Boolean untuk menghitung kita bisa mengubah deskripsi Circuit Boolean tersebut menjadi Circuit kuantum yang mengimplementasikan (menggunakan sejumlah qubit ruang kerja yang memulai dan mengakhiri komputasi dalam state ). Jadi, meskipun kita menggunakan model query untuk memformalisasi masalah yang diselesaikan algoritma Grover, algoritma ini tidak terbatas pada model ini; kita bisa menjalankan algoritma Grover pada fungsi mana pun yang kita miliki Circuit Boolean-nya.
Berikut adalah pernyataan masalah yang tepat, yang diberi nama Search karena kita mencari solusi, maksudnya string yang menyebabkan mengevaluasi ke
Perhatikan bahwa ini bukan masalah promise — fungsi adalah sembarang. Namun, akan sangat membantu untuk mempertimbangkan varian promise berikut dari masalah, di mana kita dijamin bahwa ada tepat satu solusi. Masalah ini muncul sebagai contoh masalah promise di pelajaran Quantum query algorithms.
Perhatikan juga bahwa masalah Or yang disebutkan di pelajaran yang sama erat kaitannya dengan Search. Untuk masalah itu, tujuannya adalah sekadar menentukan apakah solusi ada atau tidak, sebagai lawan dari benar-benar menemukan solusinya.