Langkau ke kandungan utama
Projek ini dalam fasa beta. Jumpa pepijat? Buat isu GitHub. Ada soalan atau idea? Tanya dalam Discussions — kami suka dengar maklum balas anda!
Bagaimana kualiti terjemahan pada halaman ini?

Penerangan algoritma Grover

Dalam bahagian ini, kita akan menerangkan algoritma Grover. Kita akan mulakan dengan membincangkan gate pertanyaan fasa dan cara membinanya, diikuti dengan penerangan algoritma Grover itu sendiri. Akhirnya, kita akan membincangkan secara ringkas bagaimana algoritma ini secara semulajadi digunakan untuk pencarian.

Gate pertanyaan fasa​

Algoritma Grover menggunakan operasi yang dikenali sebagai gate pertanyaan fasa. Berbeza dengan gate pertanyaan biasa UfU_f, yang ditakrifkan untuk fungsi ff yang diberikan dengan cara biasa yang telah diterangkan sebelum ini, gate pertanyaan fasa untuk fungsi ff ditakrifkan sebagai

Zf∣x⟩=(−1)f(x)∣x⟩Z_f \vert x\rangle = (-1)^{f(x)} \vert x\rangle

untuk setiap rentetan x∈Σnx\in\Sigma^n.

Operasi ZfZ_f boleh dilaksanakan menggunakan satu gate pertanyaan UfU_f seperti yang dicadangkan oleh rajah ini:

Litar kuantum yang melaksanakan gate Z_f menggunakan satu gate pertanyaan bersama fenomena tendangan fasa

Pelaksanaan ini menggunakan fenomena tendangan fasa, dan memerlukan satu qubit ruang kerja tambahan yang diinisialisasi kepada keadaan ∣−⟩\vert -\rangle. Qubit ini kekal dalam keadaan ∣−⟩\vert - \rangle selepas pelaksanaan selesai, dan boleh digunakan semula (untuk melaksanakan gate ZfZ_f berikutnya, misalnya) atau hanya dibuang.

Selain operasi ZfZ_f, kita juga akan menggunakan gate pertanyaan fasa untuk fungsi OR nn-bit, yang ditakrifkan seperti berikut untuk setiap rentetan x∈Σnx\in\Sigma^n.

OR(x)={0x=0n1x≠0n\mathrm{OR}(x) = \begin{cases} 0 & x = 0^n\\[0.5mm] 1 & x \neq 0^n \end{cases}

Secara eksplisit, gate pertanyaan fasa untuk fungsi OR nn-bit beroperasi seperti ini:

ZOR∣x⟩={∣x⟩x=0n−∣x⟩x≠0n.Z_{\mathrm{OR}} \vert x\rangle = \begin{cases} \vert x\rangle & x = 0^n \\[0.5mm] - \vert x\rangle & x \neq 0^n. \end{cases}

Untuk jelaskan, inilah cara ZORZ_{\mathrm{OR}} beroperasi pada keadaan asas standard; tingkah lakunya pada sebarang keadaan ditentukan daripada ungkapan ini melalui kelinearan.

Operasi ZORZ_{\mathrm{OR}} boleh dilaksanakan sebagai litar kuantum dengan memulakan dengan litar Boolean untuk fungsi OR, kemudian membina operasi UORU_{\mathrm{OR}} (iaitu gate pertanyaan standard untuk fungsi OR nn-bit) menggunakan prosedur yang diterangkan dalam pelajaran Asas algoritmik kuantum, dan akhirnya operasi ZORZ_{\mathrm{OR}} menggunakan fenomena tendangan fasa seperti yang diterangkan di atas. Perhatikan bahawa operasi ZORZ_{\mathrm{OR}} tidak bergantung pada fungsi ff dan oleh itu boleh dilaksanakan oleh litar kuantum tanpa gate pertanyaan.

Penerangan algoritma​

Sekarang kita sudah mempunyai kedua-dua operasi ZfZ_f dan ZORZ_{\mathrm{OR}}, kita boleh menerangkan algoritma Grover.

Algoritma ini merujuk kepada nombor tt, iaitu bilangan lelaran yang dilakukan (dan oleh itu bilangan pertanyaan kepada fungsi ff yang diperlukan). Nombor tt ini tidak ditetapkan oleh algoritma Grover seperti yang kita terangkan di sini, dan kita akan membincangkan kemudian dalam pelajaran ini bagaimana ia boleh dipilih.

Algoritma Grover
  1. Inisialisasi daftar nn qubit Q\mathsf{Q} kepada keadaan semua-sifar ∣0n⟩\vert 0^n \rangle kemudian gunakan operasi Hadamard pada setiap qubit dalam Q\mathsf{Q}.
  2. Gunakan tt kali operasi uniter G=H⊗nZORH⊗nZfG = H^{\otimes n} Z_{\mathrm{OR}} H^{\otimes n} Z_f pada daftar Q\mathsf{Q}
  3. Ukur qubit dalam Q\mathsf{Q} berkenaan dengan pengukuran asas standard dan keluarkan rentetan yang terhasil.

Operasi G=H⊗nZORH⊗nZfG = H^{\otimes n} Z_{\mathrm{OR}} H^{\otimes n} Z_f yang diulang dalam langkah 2 akan dipanggil operasi Grover sepanjang baki pelajaran ini. Berikut ialah representasi litar kuantum bagi operasi Grover apabila n=7 ⁣:n=7\!:

Representasi litar kuantum bagi operasi Grover

Dalam rajah ini, operasi ZfZ_f digambarkan lebih besar daripada ZORZ_{\mathrm{OR}} sebagai petunjuk visual tidak formal untuk mencadangkan bahawa ia kemungkinan besar merupakan operasi yang lebih mahal. Khususnya, apabila kita bekerja dalam model pertanyaan, ZfZ_f memerlukan satu pertanyaan manakala ZORZ_{\mathrm{OR}} tidak memerlukan sebarang pertanyaan. Sebaliknya, jika kita mempunyai litar Boolean untuk fungsi f,f, dan kemudian menukarnya kepada litar kuantum untuk Zf,Z_f, kita boleh menjangka bahawa litar kuantum yang terhasil akan lebih besar dan lebih rumit berbanding litar untuk ZOR.Z_{\mathrm{OR}}.

Berikut ialah rajah litar kuantum untuk keseluruhan algoritma apabila n=7n=7 dan t=3t=3. Untuk nilai tt yang lebih besar, kita hanya perlu memasukkan salinan tambahan operasi Grover tepat sebelum pengukuran.

Litar kuantum untuk algoritma Grover apabila t=3

Algoritma Grover boleh digunakan untuk masalah Carian seperti berikut:

  • Pilih nombor tt dalam langkah 2. (Ini dibincangkan kemudian dalam pelajaran.)

  • Jalankan algoritma Grover pada fungsi ff, menggunakan pilihan yang kita buat untuk tt, untuk mendapatkan rentetan x∈Σnx\in\Sigma^n.

  • Tanya fungsi ff pada rentetan xx untuk melihat sama ada ia adalah penyelesaian yang sah:

    • Jika f(x)=1f(x) = 1, maka kita telah menemui penyelesaian, jadi kita boleh berhenti dan mengeluarkan xx.

    • Jika tidak, jika f(x)=0f(x) = 0, maka kita boleh sama ada menjalankan prosedur sekali lagi, mungkin dengan pilihan yang berbeza untuk tt, atau kita boleh memutuskan untuk berhenti dan mengeluarkan "tiada penyelesaian."

Setelah kita menganalisis cara algoritma Grover berfungsi, kita akan lihat bahawa dengan mengambil t=O(N)t = O(\sqrt{N}), kita mendapat penyelesaian kepada masalah pencarian kita (jika ada) dengan kebarangkalian yang tinggi.