Sekarang kita akan menganalisis algoritma Grover untuk memahami cara ia berfungsi.
Kita akan mulakan dengan apa yang boleh dihuraikan sebagai analisis simbolik, di mana kita mengira bagaimana operasi Grover G bertindak ke atas keadaan-keadaan tertentu, kemudian kita akan menghubungkan analisis simbolik ini dengan gambaran geometri yang berguna untuk menvisualisasikan cara algoritma berfungsi.
Mari kita mulakan dengan mentakrifkan dua set rentetan.
A0A1={x∈Σn:f(x)=0}={x∈Σn:f(x)=1}
Set A1 mengandungi semua penyelesaian kepada masalah carian kita, manakala A0 mengandungi rentetan yang bukan penyelesaian (yang boleh kita rujuk sebagai bukan penyelesaian apabila sesuai).
Kedua-dua set ini memenuhi A0∩A1=∅ dan A0∪A1=Σn, yang bermakna ini adalah sebuah bipartisi daripada Σn.
Seterusnya kita akan takrifkan dua vektor unit yang mewakili superposisi seragam ke atas set penyelesaian dan bukan penyelesaian.
Secara formal, setiap vektor ini hanya ditakrifkan apabila set yang bersamaannya tidak kosong, tetapi mulai sekarang kita akan fokus pada kes di mana A0 mahupun A1 tidak kosong.
Kes A0=∅ dan A1=∅ mudah dikendalikan secara berasingan, dan kita akan lakukan itu kemudian.
Sebagai catatan tambahan, notasi yang digunakan di sini adalah lazim: setiap kali kita ada set S yang terhingga dan tidak kosong, kita boleh tulis ∣S⟩ untuk merujuk kepada vektor keadaan kuantum yang seragam ke atas unsur-unsur S.
Mari kita juga takrifkan ∣u⟩ sebagai keadaan kuantum seragam ke atas semua rentetan n-bit:
∣u⟩=N1x∈Σn∑∣x⟩.
Perhatikan bahawa
∣u⟩=N∣A0∣∣A0⟩+N∣A1∣∣A1⟩.
Kita juga ada ∣u⟩=H⊗n∣0n⟩, jadi ∣u⟩ mewakili keadaan daftar Q selepas inisialisasi dalam langkah 1 algoritma Grover.
Ini bermakna tepat sebelum iterasi G berlaku dalam langkah 2, keadaan Q terkandung dalam ruang vektor dua dimensi yang dijangkau oleh ∣A0⟩ dan ∣A1⟩, dan tambahan pula pekali vektor-vektor ini adalah nombor nyata.
Seperti yang akan kita lihat, keadaan Q akan sentiasa mempunyai sifat-sifat ini — bermakna keadaan adalah gabungan linear nyata ∣A0⟩ dan ∣A1⟩ — selepas sebarang bilangan iterasi operasi G dalam langkah 2.
Sekarang kita akan menumpukan perhatian kepada operasi Grover
G=H⊗nZORH⊗nZf,
dimulakan dengan pemerhatian menarik mengenainya.
Bayangkan sebentar kita menggantikan fungsi f dengan komposisi f dengan fungsi NOT — atau dengan kata lain, fungsi yang kita dapat dengan membalikkan bit output f.
Kita akan panggil fungsi baru ini g, dan kita boleh ungkapkannya menggunakan simbol dalam beberapa cara alternatif.
g(x)=¬f(x)=1⊕f(x)=1−f(x)={10f(x)=0f(x)=1
Perhatikan bahawa
(−1)g(x)=(−1)1⊕f(x)=−(−1)f(x)
untuk setiap rentetan x∈Σn, dan oleh itu
Zg=−Zf.
Ini bermakna jika kita menggantikan fungsi f dengan fungsi g, algoritma Grover tidak akan berfungsi secara berbeza — kerana keadaan yang kita dapat daripada algoritma dalam kedua-dua kes adalah semestinya setara sehingga satu fasa global.
Ini bukan masalah!
Secara intuitif, algoritma tidak mengambil berat yang mana rentetan adalah penyelesaian dan yang mana bukan — ia hanya perlu dapat membezakan penyelesaian dan bukan penyelesaian untuk berfungsi dengan betul.
Seperti yang telah kita perhatikan, keadaan Q tepat sebelum langkah 2 terkandung dalam ruang dua dimensi yang dijangkau oleh ∣A0⟩ dan ∣A1⟩, dan kita baru sahaja menetapkan bahawa G memetakan sebarang vektor dalam ruang ini ke vektor lain dalam ruang yang sama.
Ini bermakna, untuk tujuan analisis, kita boleh menumpukan perhatian kita secara eksklusif pada subruang ini.
Untuk lebih memahami apa yang berlaku dalam ruang dua dimensi ini, mari kita ungkapkan tindakan G pada ruang ini sebagai matriks,
di mana baris/lajur pertama dan kedua berkaitan dengan ∣A0⟩ dan ∣A1⟩, masing-masing.
Setakat ini dalam siri ini, kita sentiasa menghubungkan baris dan lajur matriks dengan keadaan klasik sesebuah sistem, tetapi matriks juga boleh digunakan untuk menerangkan tindakan pemetaan linear ke atas asas yang berbeza seperti yang kita ada di sini.
Walaupun tidak jelas sama sekali pada pandangan pertama, matriks M adalah apa yang kita peroleh dengan mengkuasakan dua matriks yang kelihatan lebih mudah.
Sudut θ ini akan memainkan peranan yang sangat penting dalam analisis yang berikut, jadi penting untuk menekankan kepentingannya di sini ketika kita melihatnya buat kali pertama.
Dengan mengambil kira ungkapan matriks ini, kita perhatikan bahawa
Ini kerana memutar sebanyak sudut θ dua kali adalah setara dengan memutar sebanyak sudut 2θ.
Cara lain untuk melihat ini ialah dengan menggunakan ungkapan alternatif
θ=cos−1(N∣A0∣),
bersama-sama dengan formula sudut berganda daripada trigonometri:
cos(2θ)sin(2θ)=cos2(θ)−sin2(θ)=2sin(θ)cos(θ).
Secara ringkasnya, keadaan daftar Q pada permulaan langkah 2 adalah
dan kesan menggunakan G ke atas keadaan ini adalah untuk memutarkannya sebanyak sudut 2θ dalam ruang yang dijangkau oleh ∣A0⟩ dan ∣A1⟩.
Jadi, sebagai contoh, kita ada
Sekarang mari kita hubungkan analisis yang baru kita lalui dengan gambaran geometri.
Ideanya ialah operasi G adalah hasil darab dua pantulan,
Zf dan H⊗nZORH⊗n.
Dan kesan bersih daripada melakukan dua pantulan adalah melakukan sebuah putaran.
Mari kita mulakan dengan Zf.
Seperti yang telah kita perhatikan sebelum ini, kita ada
Zf∣A0⟩Zf∣A1⟩=∣A0⟩=−∣A1⟩.
Dalam ruang vektor dua dimensi yang dijangkau oleh ∣A0⟩ dan ∣A1⟩,
ini adalah sebuah pantulan tentang garis yang selari dengan ∣A0⟩, yang akan kita panggil L1.
Berikut adalah rajah yang menggambarkan tindakan pantulan ini ke atas vektor unit hipotetikal ∣ψ⟩,
yang kita anggap adalah gabungan linear nyata ∣A0⟩ dan ∣A1⟩.
Kedua kita ada operasi H⊗nZORH⊗n, yang telah kita lihat boleh ditulis sebagai
H⊗nZORH⊗n=2∣u⟩⟨u∣−I.
Ini juga satu pantulan, kali ini tentang garis L2 yang selari dengan vektor ∣u⟩.
Berikut adalah rajah yang menggambarkan tindakan pantulan ini ke atas vektor unit ∣ψ⟩.
Apabila kita menggabungkan dua pantulan ini, kita memperoleh satu putaran — sebanyak dua kali sudut di antara garis-garis pantulan — seperti yang digambarkan dalam rajah ini.
Ini menjelaskan, dari segi geometri, mengapa kesan operasi Grover adalah untuk memutar gabungan linear ∣A0⟩ dan ∣A1⟩ sebanyak sudut 2θ.