Algoritma Grover
Untuk modul Qiskit dalam Bilik Darjah ini, pelajar perlu mempunyai persekitaran Python yang berfungsi dengan pakej berikut dipasang:
qiskitv2.1.0 atau lebih baharuqiskit-ibm-runtimev0.40.1 atau lebih baharuqiskit-aerv0.17.0 atau lebih baharuqiskit.visualizationnumpypylatexenc
Untuk menyediakan dan memasang pakej di atas, lihat panduan Pasang Qiskit. Untuk menjalankan kerja pada komputer kuantum sebenar, pelajar perlu membuat akaun dengan IBM Quantum® dengan mengikuti langkah-langkah dalam panduan Sediakan akaun IBM Cloud anda.
Modul ini telah diuji dan menggunakan 12 saat masa QPU. Ini adalah anggaran suci hati; penggunaan sebenar anda mungkin berbeza.
# Added by doQumentation — required packages for this notebook
!pip install -q qiskit qiskit-ibm-runtime
# Uncomment and modify this line as needed to install dependencies
#!pip install 'qiskit>=2.1.0' 'qiskit-ibm-runtime>=0.40.1' 'qiskit-aer>=0.17.0' 'numpy' 'pylatexenc'
Pengenalan
Algoritma Grover ialah algoritma kuantum asas yang menangani masalah carian tidak berstruktur: diberikan satu set item dan cara untuk memeriksa sama ada mana-mana item adalah yang anda cari, seberapa cepat anda boleh mencari item yang dikehendaki? Dalam pengkomputeran klasik, jika data tidak tersusun dan tiada struktur yang boleh dieksploitasi, pendekatan terbaik ialah memeriksa setiap item satu persatu, yang menghasilkan kerumitan pertanyaan — secara purata, anda perlu memeriksa kira-kira separuh item sebelum menemui sasaran.

Algoritma Grover, yang diperkenalkan oleh Lov Grover pada tahun 1996, menunjukkan bagaimana komputer kuantum boleh menyelesaikan masalah ini dengan lebih cekap, hanya memerlukan langkah untuk mencari item yang ditanda dengan kebarangkalian tinggi. Ini mewakili pecutan kuadratik berbanding kaedah klasik, yang penting untuk set data yang besar.
Algoritma ini beroperasi dalam konteks berikut:
- Persediaan masalah: Anda mempunyai fungsi yang mengembalikan 1 jika ialah item yang anda inginkan, dan 0 sebaliknya. Fungsi ini sering dipanggil oracle atau kotak hitam, kerana anda hanya boleh mengetahui tentang data dengan membuat pertanyaan .
- Kegunaan kuantum: Walaupun algoritma klasik untuk masalah ini memerlukan, secara purata, pertanyaan, algoritma Grover boleh mencari penyelesaian dalam kira-kira pertanyaan, yang jauh lebih pantas untuk yang besar.
- Cara ia berfungsi (pada tahap tinggi):
- Komputer kuantum mula-mula mencipta superposisi semua keadaan yang mungkin, mewakili semua item yang mungkin sekaligus.
- Kemudian ia berulang kali menggunakan urutan operasi kuantum (lelaran Grover) yang menguatkan kebarangkalian jawapan yang betul dan mengurangkan yang lain.
- Selepas cukup lelaran, pengukuran keadaan kuantum menghasilkan jawapan yang betul dengan kebarangkalian tinggi.
Berikut adalah rajah asas algoritma Grover yang melepasi banyak nuansa. Untuk rajah yang lebih terperinci, lihat makalah ini.

Beberapa perkara yang perlu diperhatikan tentang algoritma Grover:
- Ia optimum untuk carian tidak berstruktur: tiada algoritma kuantum boleh menyelesaikan masalah dengan kurang daripada pertanyaan.
- Ia hanya memberikan pecutan kuadratik, bukan eksponen — tidak seperti beberapa algoritma kuantum lain (contohnya, algoritma Shor untuk pemfaktoran).
- Ia mempunyai implikasi praktikal, seperti kemungkinan mempercepatkan serangan kekerasan pada sistem kriptografi, walaupun pecepatannya tidak cukup untuk memecahkan kebanyakan penyulitan moden dengan sendirinya.
Bagi pelajar sarjana muda yang biasa dengan konsep pengkomputeran asas dan model pertanyaan, algoritma Grover menawarkan ilustrasi yang jelas tentang bagaimana pengkomputeran kuantum boleh mengatasi pendekatan klasik untuk masalah tertentu, walaupun penambahbaikannya "hanya" kuadratik. Ia juga berfungsi sebagai pintu masuk untuk memahami algoritma kuantum yang lebih maju dan potensi yang lebih luas pengkomputeran kuantum.
Pengamplifikasian amplitud ialah algoritma kuantum tujuan umum, atau subrutin, yang boleh digunakan untuk mendapatkan pecutan kuadratik berbanding beberapa algoritma klasik. Algoritma Grover adalah yang pertama menunjukkan pecutan ini pada masalah carian tidak berstruktur. Merumuskan masalah carian Grover memerlukan fungsi oracle yang menanda satu atau lebih keadaan asas pengiraan sebagai keadaan yang kita mahu cari, dan Circuit pengamplifikasian yang meningkatkan amplitud keadaan yang ditanda, seterusnya menekan keadaan yang lain.
Di sini, kami menunjukkan cara membina oracle Grover dan menggunakan GroverOperator daripada pustaka Circuit Qiskit untuk menyediakan instance carian Grover dengan mudah. Primitif Sampler masa jalan membolehkan pelaksanaan Circuit Grover yang lancar.
Matematik
Andaikan wujud fungsi yang memetakan rentetan binari kepada satu pemboleh ubah binari tunggal, bermaksud
Satu contoh yang ditakrifkan pada ialah
Contoh lain yang ditakrifkan pada ialah
Anda ditugaskan untuk mencari keadaan kuantum yang sepadan dengan argumen dari yang dipetakan ke 1. Dengan kata lain, cari semua supaya (atau jika tiada penyelesaian, laporkan perkara tersebut). Kami merujuk bukan-penyelesaian sebagai . Sudah tentu, kami akan melakukan ini pada komputer kuantum, menggunakan keadaan kuantum, jadi berguna untuk menyatakan rentetan binari ini sebagai keadaan:
Menggunakan notasi keadaan kuantum (Dirac), kita mencari satu atau lebih keadaan khas dalam satu set keadaan yang mungkin, di mana ialah bilangan Qubit, dengan bukan-penyelesaian dinotasikan
Kita boleh menganggap fungsi sebagai disediakan oleh oracle: kotak hitam yang boleh kita tanya untuk menentukan kesannya terhadap keadaan Dalam praktik, kita sering mengetahui fungsinya, tetapi ia mungkin sangat rumit untuk dilaksanakan, bermakna mengurangkan bilangan pertanyaan atau aplikasi boleh menjadi penting. Sebagai alternatif, kita boleh membayangkan paradigma di mana satu pihak membuat pertanyaan kepada oracle yang dikawal oleh pihak lain, supaya kita tidak mengetahui fungsi oracle, kita hanya mengetahui tindakannya terhadap keadaan tertentu daripada pertanyaan.
Ini adalah "masalah carian tidak berstruktur", kerana tiada yang istimewa tentang yang membantu kita dalam pencarian. Outputnya tidak disusun dan penyelesaian tidak diketahui berkelompok, dan sebagainya. Pertimbangkan buku telefon kertas lama sebagai analogi. Carian tidak berstruktur ini ibarat mengimbas melaluinya mencari nombor tertentu, bukan seperti mencari melalui senarai nama yang tersusun mengikut abjad.
Dalam kes di mana satu penyelesaian dicari, secara klasik, ini memerlukan bilangan pertanyaan yang linear dalam . Jelas anda mungkin menemui penyelesaian pada percubaan pertama, atau anda mungkin tidak menemui penyelesaian dalam tekaan pertama, sehingga anda perlu membuat pertanyaan input ke- untuk melihat sama ada ada penyelesaian langsung. Memandangkan fungsi tidak mempunyai struktur yang boleh dieksploitasi, anda akan memerlukan tekaan secara purata. Algoritma Grover memerlukan bilangan pertanyaan atau pengiraan yang berskala seperti
Lakaran litar dalam algoritma Grover
Penjelasan matematik penuh algoritma Grover boleh didapati, contohnya, dalam Asas algoritma kuantum, kursus oleh John Watrous di IBM Quantum Learning. Perlakuan ringkas disediakan dalam lampiran di hujung modul ini. Tetapi buat masa ini, kita hanya akan mengkaji semula struktur keseluruhan Circuit kuantum yang melaksanakan algoritma Grover.
Algoritma Grover boleh dipecahkan kepada peringkat berikut:
- Penyediaan superposisi awal (menggunakan Gate Hadamard pada semua Qubit)
- "Menanda" keadaan sasaran dengan pembalikan fasa
- Peringkat "penyebaran" di mana Gate Hadamard dan pembalikan fasa digunakan pada semua Qubit.
- Kemungkinan pengulangan peringkat penandaan dan penyebaran untuk memaksimumkan kebarangkalian mengukur keadaan sasaran
- Pengukuran
Selalunya, Gate penandaan dan lapisan penyebaran yang terdiri daripada dan secara kolektif dirujuk sebagai "operator Grover". Dalam rajah ini, hanya satu pengulangan operator Grover ditunjukkan.
Gate Hadamard dikenali dan digunakan secara meluas dalam pengkomputeran kuantum. Gate Hadamard mencipta keadaan superposisi. Secara khusus ia ditakrifkan oleh
Operasinya pada mana-mana keadaan lain ditakrifkan melalui kelinearan. Khususnya, lapisan Gate Hadamard membolehkan kita berpindah dari keadaan awal dengan semua Qubit dalam (dinotasikan ) kepada keadaan di mana setiap Qubit mempunyai beberapa kebarangkalian untuk diukur sama ada dalam atau ini membolehkan kita menyelidik ruang semua keadaan yang mungkin secara berbeza daripada dalam pengkomputeran klasik.
Sifat akibat penting Gate Hadamard ialah bertindak kali kedua boleh membatalkan keadaan superposisi tersebut:
Ini akan penting sebentar lagi.
Semak kefahaman anda
Baca soalan di bawah, fikirkan jawapan anda, kemudian klik segitiga untuk mendedahkan penyelesaiannya.
Bermula dari definisi Gate Hadamard, tunjukkan bahawa aplikasi kedua Gate Hadamard membatalkan superposisi tersebut seperti yang dituntut di atas.
Jawapan:
Apabila kita menggunakan X pada keadaan , kita mendapat nilai +1 dan pada keadaan kita mendapat -1, jadi jika kita mempunyai taburan 50-50, kita akan mendapat nilai jangkaan 0.
Gate kurang biasa, dan ditakrifkan mengikut
Akhirnya, Gate ditakrifkan oleh
Perhatikan kesannya ialah membalikkan tanda pada keadaan sasaran yang dan membiarkan keadaan lain tidak terjejas.
Pada tahap abstrak yang sangat tinggi, anda boleh berfikir tentang langkah-langkah dalam litar dengan cara berikut:
- Lapisan Hadamard pertama: meletakkan Qubit ke dalam superposisi semua keadaan yang mungkin.
- : tandakan keadaan sasaran dengan menambah tanda "-" di hadapan. Ini tidak segera mengubah kebarangkalian pengukuran, tetapi ia mengubah cara keadaan sasaran akan berkelakuan dalam langkah seterusnya.
- Lapisan Hadamard lain: Tanda "-" yang diperkenalkan dalam langkah sebelumnya akan mengubah tanda relatif antara beberapa sebutan. Memandangkan Gate Hadamard menukar satu campuran keadaan pengiraan menjadi satu keadaan pengiraan, dan ia menukar menjadi perbezaan tanda relatif ini kini boleh mula memainkan peranan dalam keadaan yang diukur.
- Satu lapisan akhir Gate Hadamard digunakan, kemudian pengukuran dibuat. Kita akan melihat secara lebih terperinci bagaimana ini berfungsi dalam bahagian seterusnya.
Contoh
Untuk lebih memahami cara algoritma Grover berfungsi, mari kita lalui contoh kecil dua Qubit. Ini boleh dianggap pilihan bagi mereka yang tidak fokus pada mekanik kuantum dan notasi Dirac. Tetapi bagi mereka yang berharap untuk bekerja secara substantif dengan komputer kuantum, ini amat disyorkan.
Berikut ialah rajah litar dengan keadaan kuantum berlabel pada pelbagai kedudukan sepanjang laluan. Perhatikan bahawa dengan hanya dua Qubit, hanya terdapat empat keadaan yang mungkin yang boleh diukur dalam mana-mana keadaan: , , , dan .

Andaikan oracle (, tidak diketahui oleh kita) menanda keadaan . Kita akan melalui tindakan setiap set Gate kuantum, termasuk oracle, dan melihat taburan keadaan yang mungkin keluar pada masa pengukuran. Pada permulaan sekali, kita mempunyai
Menggunakan definisi Gate Hadamard, kita mempunyai