Sekarang kita akan menganalisis algoritma Grover untuk memahami cara kerjanya.
Kita akan mulai dengan apa yang bisa disebut sebagai analisis simbolik, di mana kita menghitung bagaimana operasi Grover G bertindak pada keadaan tertentu, kemudian kita akan menghubungkan analisis simbolik ini dengan gambaran geometris yang membantu untuk memvisualisasikan cara kerja algoritma.
Mari kita mulai dengan mendefinisikan dua himpunan string.
A0A1={x∈Σn:f(x)=0}={x∈Σn:f(x)=1}
Himpunan A1 berisi semua solusi untuk masalah pencarian kita sementara A0 berisi string yang bukan solusi (yang bisa kita sebut sebagai bukan-solusi bila perlu).
Kedua himpunan ini memenuhi A0∩A1=∅ dan A0∪A1=Σn, yang artinya ini adalah bipartisi dari Σn.
Selanjutnya kita akan mendefinisikan dua vektor satuan yang mewakili superposisi seragam atas himpunan solusi dan bukan-solusi.
Secara formal, setiap vektor ini hanya didefinisikan ketika himpunan yang bersesuaian tidak kosong, tetapi mulai sekarang kita akan fokus pada kasus di mana A0 maupun A1 tidak kosong.
Kasus di mana A0=∅ dan A1=∅ mudah ditangani secara terpisah, dan kita akan melakukannya nanti.
Sebagai catatan tambahan, notasi yang digunakan di sini umum: setiap kali kita memiliki himpunan S yang hingga dan tidak kosong, kita dapat menulis ∣S⟩ untuk menyatakan vektor keadaan kuantum yang seragam atas elemen-elemen S.
Mari kita juga mendefinisikan ∣u⟩ sebagai keadaan kuantum seragam atas semua string n-bit:
∣u⟩=N1x∈Σn∑∣x⟩.
Perhatikan bahwa
∣u⟩=N∣A0∣∣A0⟩+N∣A1∣∣A1⟩.
Kita juga punya bahwa ∣u⟩=H⊗n∣0n⟩, sehingga ∣u⟩ mewakili keadaan register Q setelah inisialisasi pada langkah 1 algoritma Grover.
Ini berarti tepat sebelum iterasi G terjadi pada langkah 2, keadaan Q terkandung dalam ruang vektor dua-dimensi yang dibentangkan oleh ∣A0⟩ dan ∣A1⟩, dan selain itu koefisien vektor-vektor ini adalah bilangan nyata.
Seperti yang akan kita lihat, keadaan Q akan selalu memiliki sifat-sifat ini — artinya keadaan adalah kombinasi linear nyata dari ∣A0⟩ dan ∣A1⟩ — setelah sejumlah iterasi operasi G pada langkah 2.
Sekarang kita akan beralih perhatian ke operasi Grover
G=H⊗nZORH⊗nZf,
dimulai dengan observasi menarik tentangnya.
Bayangkan sebentar kita menggantikan fungsi f dengan komposisi f dengan fungsi NOT — atau dengan kata lain, fungsi yang kita dapatkan dengan membalik bit keluaran f.
Kita akan menyebut fungsi baru ini g, dan kita dapat mengekspresikannya menggunakan simbol dengan beberapa cara alternatif.
g(x)=¬f(x)=1⊕f(x)=1−f(x)={10f(x)=0f(x)=1
Perhatikan bahwa
(−1)g(x)=(−1)1⊕f(x)=−(−1)f(x)
untuk setiap string x∈Σn, dan oleh karena itu
Zg=−Zf.
Ini berarti jika kita menggantikan fungsi f dengan fungsi g, algoritma Grover tidak akan berfungsi secara berbeda — karena keadaan yang kita peroleh dari algoritma dalam dua kasus tersebut pasti setara sampai fase global.
Ini bukan masalah!
Secara intuitif, algoritma tidak peduli string mana yang merupakan solusi dan mana yang bukan — ia hanya perlu mampu membedakan solusi dan bukan-solusi agar bekerja dengan benar.
Seperti yang sudah kita catat, keadaan Q tepat sebelum langkah 2 terkandung dalam ruang dua-dimensi yang dibentangkan oleh ∣A0⟩ dan ∣A1⟩, dan kita baru saja membuktikan bahwa G memetakan setiap vektor dalam ruang ini ke vektor lain dalam ruang yang sama.
Ini berarti, untuk keperluan analisis, kita dapat memusatkan perhatian sepenuhnya pada subruang ini.
Untuk lebih memahami apa yang terjadi dalam ruang dua-dimensi ini, mari kita ekspresikan aksi G pada ruang ini sebagai matriks,
yang baris dan kolomnya pertama dan kedua masing-masing bersesuaian dengan ∣A0⟩ dan ∣A1⟩.
Sejauh ini dalam seri ini, kita selalu menghubungkan baris dan kolom matriks dengan keadaan klasik suatu sistem, tetapi matriks juga bisa digunakan untuk mendeskripsikan aksi pemetaan linear pada basis yang berbeda seperti yang kita miliki di sini.
Meskipun tidak terlihat jelas pada pandangan pertama, matriks M adalah yang kita peroleh dengan mengkuadratkan matriks yang tampak lebih sederhana.
Sudut θ ini akan memainkan peran yang sangat penting dalam analisis berikut, jadi penting untuk menekankan pentingnya di sini saat kita melihatnya untuk pertama kali.
Berdasarkan ekspresi matriks ini, kita amati bahwa
Ini karena merotasi dengan sudut θ dua kali setara dengan merotasi dengan sudut 2θ.
Cara lain untuk melihat ini adalah dengan menggunakan ekspresi alternatif
θ=cos−1(N∣A0∣),
bersama dengan rumus sudut ganda dari trigonometri:
cos(2θ)sin(2θ)=cos2(θ)−sin2(θ)=2sin(θ)cos(θ).
Singkatnya, keadaan register Q pada awal langkah 2 adalah
dan efek menerapkan G pada keadaan ini adalah merotasinya dengan sudut 2θ dalam ruang yang dibentangkan oleh ∣A0⟩ dan ∣A1⟩.
Jadi, misalnya, kita memiliki
Sekarang mari kita hubungkan analisis yang baru saja kita lakukan dengan gambaran geometris.
Idenya adalah bahwa operasi G adalah hasil kali dari dua refleksi,
Zf dan H⊗nZORH⊗n.
Dan efek bersih dari melakukan dua refleksi adalah melakukan rotasi.
Mari kita mulai dengan Zf.
Seperti yang sudah kita amati sebelumnya, kita memiliki
Zf∣A0⟩Zf∣A1⟩=∣A0⟩=−∣A1⟩.
Dalam ruang vektor dua-dimensi yang dibentangkan oleh ∣A0⟩ dan ∣A1⟩,
ini adalah refleksi terhadap garis yang sejajar dengan ∣A0⟩, yang kita sebut L1.
Berikut adalah gambar yang menggambarkan aksi refleksi ini pada vektor satuan hipotetis ∣ψ⟩,
yang kita asumsikan sebagai kombinasi linear nyata dari ∣A0⟩ dan ∣A1⟩.
Kedua kita memiliki operasi H⊗nZORH⊗n, yang sudah kita lihat dapat ditulis sebagai
H⊗nZORH⊗n=2∣u⟩⟨u∣−I.
Ini juga merupakan refleksi, kali ini terhadap garis L2 yang sejajar dengan vektor ∣u⟩.
Berikut adalah gambar yang menggambarkan aksi refleksi ini pada vektor satuan ∣ψ⟩.
Ketika kita mengkomposisikan dua refleksi ini, kita mendapatkan rotasi — sebesar dua kali sudut antara garis-garis refleksi — seperti yang diilustrasikan gambar ini.
Ini menjelaskan, dalam istilah geometris, mengapa efek operasi Grover adalah merotasi kombinasi linear dari ∣A0⟩ dan ∣A1⟩ dengan sudut 2θ.