Ada penjelasan yang bagus dari Craig Gidney di sini (ia juga memiliki konten hebat lainnya, termasuk simulator rangkaian, di blog-nya ).
Pada dasarnya, algoritma Grover berlaku ketika Anda memiliki fungsi yang mengembalikan True
untuk salah satu input yang mungkin, dan False
untuk semua yang lain. Tugas algoritma adalah menemukan yang kembali True
.
Untuk melakukan ini, kami menyatakan input sebagai string bit, dan menyandikannya menggunakan status dan dari string qubit. Jadi string bit akan dikodekan dalam empat negara qubit , misalnya.|0⟩|1⟩0011
|0011⟩
Kita juga harus bisa mengimplementasikan fungsi menggunakan gerbang kuantum. Secara khusus, kita perlu menemukan urutan gerbang yang akan mengimplementasikan kesatuan sehinggaU
U|a⟩=−|a⟩,U|b⟩=|b⟩
di mana adalah bit string yang fungsi akan kembali dan adalah setiap yang akan kembali .aTrue
bFalse
Jika kita mulai dengan superposisi dari semua string bit yang mungkin, yang cukup mudah dilakukan dengan hanya Hadamarding segalanya, semua input dimulai dengan amplitudo yang sama dari (di mana adalah panjang string bit yang kita cari, dan karena itu jumlah qubit yang kita gunakan). Tetapi jika kita menerapkan oracle , amplitudo status yang kita cari akan berubah menjadi .12n√nU−12n√
Ini bukan perbedaan yang mudah diamati, jadi kita perlu memperkuatnya. Untuk melakukan ini kita menggunakan Grover Difusi Operator , . Efek dari operator ini pada dasarnya adalah untuk melihat bagaimana setiap amplitudo berbeda dari amplitudo rata-rata, dan kemudian membalikkan perbedaan ini. Jadi jika amplitudo tertentu adalah jumlah tertentu lebih besar dari amplitudo rata-rata, itu akan menjadi jumlah yang sama kurang dari rata-rata, dan sebaliknya.D
Khususnya, jika Anda memiliki superposisi string bit , operator difusi memiliki efekbj
D:∑jαj|bj⟩↦∑j(2μ−αj)|bj⟩
di mana adalah amplitudo rata-rata. Jadi amplitudo apa pun akan berubah menjadi . Untuk melihat mengapa itu memiliki efek ini, dan bagaimana menerapkannya, lihat catatan kuliah ini .μ=∑jαjμ+δμ−δ
Sebagian besar amplitudo akan menjadi sedikit lebih besar dari rata-rata (karena efek dari single ), sehingga mereka akan menjadi sedikit lebih kecil dari rata-rata melalui operasi ini. Bukan perubahan besar.−12n√
Keadaan yang kita cari akan sangat terpengaruh. Amplitudo-nya jauh lebih sedikit daripada rata-rata, sehingga akan menjadi jauh lebih besar rata-rata setelah operator difusi diterapkan. Karena itu, efek akhir dari operator difusi adalah menyebabkan efek interferensi pada status yang memotong amplitudo dari semua jawaban yang salah dan menambahkannya ke jawaban yang benar. Dengan mengulangi proses ini, kita dapat dengan cepat mencapai titik di mana solusi kita sangat menonjol dari kerumunan sehingga kita dapat mengidentifikasinya.12n√
Tentu saja, ini semua menunjukkan bahwa semua pekerjaan dilakukan oleh operator difusi. Pencarian hanyalah sebuah aplikasi yang dapat kita sambungkan.
Lihat jawaban atas pertanyaan lain untuk perincian tentang bagaimana fungsi dan operator difusi diimplementasikan.