Memilih jumlah iterasi
Kita telah menetapkan bahwa vektor keadaan register dalam algoritma Grover tetap berada dalam subruang dua-dimensi yang dibentangkan oleh dan setelah langkah inisialisasi dilakukan.
Tujuannya adalah menemukan elemen dan tujuan ini akan tercapai jika kita bisa mendapatkan keadaan β karena jika kita mengukur keadaan ini, kita dijamin mendapatkan hasil pengukuran Mengingat bahwa keadaan setelah iterasi pada langkah 2 adalah
kita harus memilih sedemikian sehingga
sedekat mungkin dengan dalam nilai absolut, untuk memaksimalkan probabilitas mendapatkan dari pengukuran. Untuk sudut manapun, nilai berosilasi seiring meningkat, meskipun tidak harus periodik β tidak ada jaminan kita akan pernah mendapatkan nilai yang sama dua kali.
Secara alami, selain membuat probabilitas mendapatkan elemen dari pengukuran besar, kita juga ingin memilih sekecil mungkin, karena aplikasi operasi memerlukan kueri ke fungsi Karena kita ingin membuat mendekati dalam nilai absolut, cara alami untuk melakukannya adalah memilih sehingga
Memecahkan untuk menghasilkan
Tentu saja, harus bilangan bulat, sehingga kita tidak selalu bisa mencapai nilai ini tepat β tetapi yang bisa kita lakukan adalah mengambil bilangan bulat terdekat dengan nilai ini, yaitu
Ini adalah jumlah iterasi yang direkomendasikan untuk algoritma Grover. Saat kita melanjutkan analisis, kita akan melihat bahwa kedekatan bilangan bulat ini dengan nilai target secara alami mempengaruhi kinerja algoritma.
(Sebagai catatan tambahan, jika nilai target kebetulan tepat di tengah antara dua bilangan bulat, ekspresi ini adalah yang kita dapatkan dengan membulatkan ke atas. Kita bisa secara alternatif membulatkan ke bawah, yang masuk akal karena berarti satu kueri lebih sedikit β tetapi ini bersifat sekunder dan tidak penting untuk keperluan pelajaran.)
Mengingat bahwa nilai sudut diberikan oleh rumus
kita melihat bahwa jumlah iterasi yang direkomendasikan bergantung pada jumlah string di Ini menimbulkan tantangan jika kita tidak tahu berapa banyak solusi yang kita miliki, seperti yang akan kita bahas nanti.
Pencarian unikβ
Pertama, mari kita fokus pada situasi di mana ada satu string sedemikian sehingga Cara lain untuk menyatakannya adalah bahwa kita sedang mempertimbangkan contoh masalah Pencarian Unik. Dalam kasus ini kita memiliki
yang dapat didekati secara nyaman sebagai
ketika menjadi besar. Jika kita substitusi ke dalam ekspresi
kita mendapatkan
Mengingat bahwa bukan hanya jumlah kali operasi dilakukan, tetapi juga jumlah kueri ke fungsi yang diperlukan oleh algoritma, kita melihat bahwa kita sedang menuju untuk mendapatkan algoritma yang memerlukan kueri .
Sekarang kita akan menyelidiki seberapa baik pilihan yang direkomendasikan bekerja. Probabilitas bahwa pengukuran akhir menghasilkan solusi unik dapat diekspresikan secara eksplisit sebagai
Argumen pertama, mengacu pada jumlah item yang dicari, dan argumen kedua, yang dalam hal ini adalah mengacu pada jumlah solusi. Sedikit kemudian kita akan menggunakan notasi yang sama secara lebih umum, di mana ada beberapa solusi.
Berikut adalah tabel probabilitas keberhasilan untuk nilai yang meningkat.
Perhatikan bahwa probabilitas ini tidak meningkat secara ketat. Khususnya, kita memiliki anomali menarik ketika di mana kita mendapatkan solusi dengan kepastian. Namun, dapat dibuktikan secara umum bahwa
untuk semua sehingga probabilitas keberhasilan mendekati dalam batas ketika menjadi besar, seperti yang tampaknya disarankan nilai-nilai di atas. Ini bagus!
Tapi perhatikan, bagaimanapun, bahwa bahkan batas lemah seperti menetapkan kegunaan algoritma Grover. Untuk hasil pengukuran apapun yang kita peroleh dari menjalankan prosedur, kita selalu bisa memeriksa apakah menggunakan satu kueri ke Dan jika kita gagal mendapatkan string unik di mana dengan probabilitas paling banyak dengan menjalankan prosedur sekali, maka setelah jalankan independen dari prosedur kita akan gagal mendapatkan string unik ini dengan probabilitas paling banyak Artinya, menggunakan kueri ke kita akan mendapatkan solusi unik dengan probabilitas setidaknya Menggunakan batas yang lebih baik mengungkapkan bahwa probabilitas menemukan menggunakan metode ini sebenarnya setidaknya
Beberapa solusiβ
Saat jumlah elemen di bervariasi, begitu pula sudut yang bisa memiliki efek signifikan pada probabilitas keberhasilan algoritma. Untuk singkatnya, mari kita tulis untuk menyatakan jumlah solusi, dan seperti sebelumnya kita akan asumsikan bahwa
Sebagai contoh motivasi, bayangkan kita memiliki solusi daripada solusi tunggal, seperti yang kita pertimbangkan di atas. Ini berarti bahwa
yang kira-kira dua kali lipat sudut yang kita miliki dalam kasus ketika besar. Misalkan kita tidak tahu lebih baik, dan memilih nilai yang sama seperti dalam pengaturan solusi unik:
Efeknya akan bencana seperti yang diungkapkan tabel probabilitas berikut.
Kali ini probabilitas keberhasilan mendekati saat mendekati tak hingga. Ini terjadi karena kita secara efektif berputar dua kali lebih cepat dari yang kita lakukan saat ada solusi unik, sehingga kita melewati target dan mendarat di dekat
Namun, jika sebaliknya kita menggunakan pilihan yang direkomendasikan, yaitu
untuk
maka kinerjanya akan lebih baik. Lebih tepatnya, menggunakan pilihan ini mengarah pada keberhasilan dengan probabilitas tinggi.
Menggeneralisasi apa yang diklaim sebelumnya, dapat dibuktikan bahwa
di mana kita menggunakan notasi yang disarankan sebelumnya: menyatakan probabilitas bahwa algoritma Grover yang dijalankan untuk iterasi mengungkapkan solusi ketika ada solusi dari kemungkinan secara total.
Batas bawah pada probabilitas keberhasilan ini sedikit aneh karena lebih banyak solusi berarti batas bawah yang lebih buruk β tetapi dengan asumsi bahwa jauh lebih kecil dari kita tetap menyimpulkan bahwa probabilitas keberhasilan cukup tinggi. Seperti sebelumnya, fakta sederhana bahwa cukup besar menyiratkan kegunaan algoritma.
Kebetulan juga berlaku bahwa
Batas bawah ini mendeskripsikan probabilitas bahwa string yang dipilih secara seragam acak adalah solusi β jadi algoritma Grover selalu setidaknya sebaik tebakan acak. (Faktanya, ketika algoritma Grover adalah tebakan acak.)
Sekarang mari kita lihat jumlah iterasi (dan karenanya jumlah kueri)
untuk
Untuk setiap berlaku bahwa sehingga
Ini berarti bahwa
Ini diterjemahkan menjadi penghematan dalam jumlah kueri seiring meningkat. Khususnya, jumlah kueri yang diperlukan adalah
Jumlah solusi yang tidak diketahuiβ
Jika jumlah solusi tidak diketahui, maka diperlukan pendekatan yang berbeda, karena dalam situasi ini kita tidak memiliki pengetahuan tentang untuk menginformasikan pilihan kita. Sebenarnya ada beberapa pendekatan.
Satu pendekatan sederhana adalah memilih
secara seragam acak. Memilih dengan cara ini selalu menemukan solusi (dengan asumsi ada) dengan probabilitas lebih dari 40%, meskipun ini tidak jelas dan memerlukan analisis yang tidak akan disertakan di sini. Namun masuk akal, terutama ketika kita memikirkan gambaran geometris: merotasi keadaan sejumlah acak kali seperti ini tidak jauh berbeda dari memilih vektor satuan acak dalam ruang yang dibentangkan oleh dan yang kemungkinan besar koefisien cukup besar. Dengan mengulangi prosedur ini dan memeriksa hasilnya dengan cara yang sama seperti yang dijelaskan sebelumnya, probabilitas menemukan solusi dapat dibuat sangat dekat dengan
Ada metode yang lebih baik yang menemukan solusi ketika ada satu menggunakan kueri bahkan ketika jumlah solusi tidak diketahui, dan memerlukan kueri untuk menentukan bahwa tidak ada solusi ketika
Ide dasarnya adalah memilih secara seragam acak dari himpunan secara iteratif, untuk nilai yang meningkat. Khususnya, kita bisa mulai dengan dan meningkatkannya secara eksponensial, selalu menghentikan proses segera setelah solusi ditemukan dan membatasi agar tidak membuang kueri ketika tidak ada solusi. Prosesnya memanfaatkan fakta bahwa lebih sedikit kueri diperlukan ketika lebih banyak solusi ada. Namun diperlukan kehati-hatian, untuk menyeimbangkan laju pertumbuhan dengan probabilitas keberhasilan setiap iterasi. (Mengambil misalnya, bekerja, seperti yang diungkapkan analisis. Menggandakan bagaimanapun, tidak β ini ternyata terlalu cepat peningkatannya.)
Kasus trivialβ
Sepanjang analisis yang baru saja kita lakukan, kita telah mengasumsikan bahwa jumlah solusi bukan nol. Memang, dengan mengacu pada vektor
kita secara implisit telah mengasumsikan bahwa dan keduanya tidak kosong. Di sini kita akan secara singkat mempertimbangkan apa yang terjadi ketika salah satu dari himpunan ini kosong.
Sebelum kita repot-repot menganalisis, mari kita amati hal yang jelas: jika setiap string adalah solusi, maka kita akan melihat solusi ketika kita mengukur; dan ketika tidak ada solusi, kita tidak akan melihat satu pun. Dalam arti tertentu tidak perlu lebih jauh dari ini.
Namun, kita bisa dengan cepat memverifikasi matematika untuk kasus-kasus trivial ini. Situasi di mana salah satu dari dan kosong terjadi ketika konstan; kosong ketika untuk setiap dan kosong ketika untuk setiap Ini berarti bahwa
dan oleh karena itu
Jadi, terlepas dari jumlah iterasi yang kita lakukan dalam kasus-kasus ini, pengukuran akan selalu mengungkapkan string acak seragam