Algoritma Simon
Algoritma Simon ialah algoritma pertanyaan kuantum untuk masalah yang dikenali sebagai masalah Simon. Ini adalah masalah janji yang mempunyai ciri serupa dengan masalah Deutsch-Jozsa dan Bernstein-Vazirani, tetapi butiran teknikalnya berbeza.
Algoritma Simon penting kerana ia memberikan kelebihan eksponen kuantum berbanding algoritma klasik (termasuk kebarangkalian), dan teknik yang digunakannya mengilhamkan Peter Shor untuk menemui algoritma kuantum cekap bagi pemfaktoran integer.
Masalah Simon
Fungsi input untuk masalah Simon berbentuk
untuk integer positif dan Kita boleh mengehadkan perhatian kepada kes demi kesederhanaan, tetapi tiada manfaat besar dalam membuat andaian ini — algoritma Simon dan analisisnya pada dasarnya sama dalam kedua-dua keadaan.
Kita akan menguraikan janji tersebut untuk memahami maknanya sebentar lagi, tetapi mula-mula kita perlu jelas bahawa janji ini mensyaratkan mempunyai struktur yang sangat istimewa — jadi kebanyakan fungsi tidak akan memenuhi janji ini. Perlu juga diakui bahawa masalah ini tidak bertujuan untuk mempunyai kepentingan praktikal. Sebaliknya, ia adalah masalah yang agak tiruan, dicipta khas untuk mudah diselesaikan oleh komputer kuantum tetapi sukar bagi komputer klasik.
Terdapat dua kes utama: kes pertama ialah ialah rentetan semua-sifar dan kes kedua ialah bukan rentetan semua-sifar.
-
Kes 1: Jika ialah rentetan semua-sifar, kita boleh memudahkan pernyataan jika dan hanya jika dalam janji supaya ia berbunyi Ini bersamaan dengan menjadi fungsi satu-ke-satu.
-
Kes 2: Jika bukan rentetan semua-sifar, maka janji yang dipenuhi untuk rentetan ini bermakna adalah dua-ke-satu, iaitu untuk setiap rentetan output yang mungkin bagi terdapat tepat dua rentetan input yang menyebabkan menghasilkan rentetan itu. Selain itu, kedua-dua rentetan input tersebut mesti berbentuk dan untuk suatu rentetan
Penting untuk diketahui bahawa hanya boleh ada satu rentetan yang berfungsi jika janji dipenuhi, jadi sentiasa ada jawapan yang unik dan betul untuk fungsi yang memenuhi janji.
Berikut ialah contoh fungsi berbentuk yang memenuhi janji untuk rentetan
Terdapat rentetan input yang berbeza dan rentetan output yang berbeza, setiap satunya muncul dua kali — jadi ini adalah fungsi dua-ke-satu. Selain itu, bagi mana-mana dua rentetan input berbeza yang menghasilkan rentetan output yang sama, kita dapati bahawa XOR bitwise bagi kedua-dua rentetan input tersebut adalah sama dengan yang bersamaan dengan mengatakan bahawa salah satunya adalah sama dengan yang satu lagi di-XOR dengan
Perhatikan bahawa satu-satunya perkara yang penting tentang rentetan output sebenar ialah sama ada ia sama atau berbeza bagi pilihan rentetan input yang berlainan. Contohnya, dalam contoh di atas, terdapat empat rentetan dan yang muncul sebagai output Kita boleh menggantikan keempat-empat rentetan ini dengan rentetan lain, asalkan semuanya berbeza, dan penyelesaian yang betul tidak akan berubah.
Penerangan algoritma
Berikut ialah gambar rajah Circuit kuantum yang mewakili algoritma Simon.
Untuk jelasnya, terdapat Qubit di bahagian atas yang dikenakan Gate Hadamard dan Qubit di bahagian bawah yang masuk terus ke gate pertanyaan. Ia kelihatan sangat serupa dengan algoritma yang telah kita bincangkan dalam pelajaran ini, tetapi kali ini tiada kickback fasa; Qubit di bahagian bawah semuanya masuk ke dalam gate pertanyaan dalam keadaan
Untuk menyelesaikan masalah Simon menggunakan Circuit ini sebenarnya memerlukan beberapa kali jalankan bebas diikuti dengan langkah pemprosesan pascaklasik, yang akan diterangkan kemudian selepas tingkah laku Circuit dianalisis.
Analisis
Analisis algoritma Simon bermula dengan cara yang serupa dengan algoritma Deutsch-Jozsa. Selepas lapisan Gate Hadamard pertama dilakukan pada Qubit teratas, keadaan menjadi
Apabila dilakukan, output fungsi di-XOR ke keadaan semua-sifar bagi Qubit bahagian bawah, jadi keadaan menjadi
Apabila lapisan Gate Hadamard kedua dilakukan, kita memperoleh keadaan berikut dengan menggunakan formula yang sama untuk tindakan lapisan Gate Hadamard seperti sebelumnya.
Pada ketika ini, analisis menyimpang daripada analisis algoritma-algoritma sebelumnya dalam pelajaran ini.
Kita berminat dengan kebarangkalian untuk pengukuran menghasilkan setiap rentetan yang mungkin Melalui peraturan untuk menganalisis pengukuran yang diterangkan dalam pelajaran Sistem berganda dalam kursus Asas maklumat kuantum, kita dapati bahawa kebarangkalian untuk mendapatkan rentetan adalah sama dengan
Untuk memahami kebarangkalian ini dengan lebih baik, kita perlukan sedikit lagi notasi dan terminologi. Pertama, julat fungsi ialah set yang mengandungi semua rentetan outputnya.
Kedua, untuk setiap rentetan kita boleh menyatakan set semua rentetan input yang menyebabkan fungsi menilai kepada rentetan output ini sebagai
Set dikenali sebagai praimej bagi di bawah Kita boleh mentakrifkan praimej di bawah bagi mana-mana set sebagai ganti dengan cara yang serupa — ia adalah set semua unsur yang dipetakan oleh ke set tersebut. (Notasi ini tidak boleh dikelirukan dengan songsangan fungsi yang mungkin tidak wujud. Fakta bahawa argumen di sebelah kiri ialah set dan bukan unsur adalah petanda yang membolehkan kita mengelakkan kekeliruan ini.)
Menggunakan notasi ini, kita boleh memisahkan jumlah dalam ungkapan kebarangkalian di atas untuk mendapatkan
Setiap rentetan diwakili tepat sekali oleh dua penjumlahan — pada dasarnya kita hanya memasukkan rentetan-rentetan ini ke dalam baldi berasingan bergantung pada rentetan output yang dihasilkan apabila kita menilai fungsi kemudian menjumlahkan secara berasingan ke atas semua baldi.
Kita kini boleh menilai kuasa dua norma Euclidean untuk mendapatkan
Untuk memudahkan lagi kebarangkalian ini, mari kita lihat nilai
untuk pemilihan sewenang-wenangnya bagi
Sekiranya maka adalah fungsi satu-ke-satu dan sentiasa hanya ada satu unsur untuk setiap Nilai ungkapan adalah dalam kes ini.
Sebaliknya, jika maka terdapat tepat dua rentetan dalam set Secara tepat, jika kita memilih sebagai salah satu daripada dua rentetan ini, maka rentetan yang satu lagi mesti adalah mengikut janji dalam masalah Simon. Menggunakan pemerhatian ini kita boleh memudahkan seperti berikut.
Jadi, ternyata nilai adalah bebas daripada pilihan yang spesifik dalam kedua-dua kes.
Kita kini boleh menyelesaikan analisis dengan melihat dua kes yang sama seperti sebelumnya secara berasingan.
-
Kes 1: Dalam kes ini fungsi adalah satu-ke-satu, jadi terdapat rentetan dan kita mendapat
Dengan kata-kata, pengukuran menghasilkan rentetan yang dipilih secara seragam rawak.
-
Kes 2: Dalam kes ini adalah dua-ke-satu, jadi terdapat unsur dalam Menggunakan formula di atas kita simpulkan bahawa kebarangkalian untuk mengukur setiap ialah
Dengan kata-kata, kita mendapat rentetan yang dipilih secara seragam rawak daripada set yang mengandungi rentetan. (Kerana tepat separuh daripada rentetan binari panjang mempunyai hasil darab titik binari dengan dan separuh lagi mempunyai hasil darab titik binari dengan seperti yang sudah kita perhatikan dalam analisis algoritma Deutsch-Jozsa untuk masalah Bernstein-Vazirani.)
Pemprosesan pascaklasik
Kita kini tahu apakah kebarangkalian bagi hasil pengukuran yang mungkin apabila kita menjalankan Circuit kuantum untuk algoritma Simon. Adakah maklumat ini cukup untuk menentukan ?
Jawapannya ya, dengan syarat kita sanggup mengulangi proses beberapa kali dan menerima bahawa ia boleh gagal dengan suatu kebarangkalian, yang boleh kita jadikan sangat kecil dengan menjalankan Circuit cukup banyak kali. Idea pokoknya ialah setiap pelaksanaan Circuit memberikan kita bukti statistik tentang dan kita boleh menggunakan bukti itu untuk mencari dengan kebarangkalian yang sangat tinggi jika kita menjalankan Circuit cukup banyak kali.
Katakan kita menjalankan Circuit secara bebas kali, untuk Tiada yang istimewa tentang bilangan iterasi tertentu ini — kita boleh menjadikan lebih besar (atau lebih kecil) bergantung pada kebarangkalian kegagalan yang kita sanggup tolak, seperti yang akan kita lihat. Memilih akan memastikan kita mempunyai lebih daripada % peluang untuk memulihkan
Dengan menjalankan Circuit kali, kita mendapat rentetan Untuk jelasnya, superskrip di sini adalah sebahagian daripada nama rentetan-rentetan ini, bukan eksponen atau indeks kepada bit mereka, jadi kita ada
Kita kini membentuk matriks yang mempunyai baris dan lajur dengan mengambil bit rentetan-rentetan ini sebagai entri bernilai binari.
Sekarang, kita tidak tahu apa itu pada ketika ini — matlamat kita adalah untuk mencari rentetan ini. Tetapi bayangkan sebentar bahawa kita memang tahu rentetan dan kita membentuk vektor lajur daripada bit rentetan seperti berikut.
Jika kita melakukan pendaraban matriks-vektor modulo — bermakna kita melakukan pendaraban seperti biasa dan kemudian mengambil baki entri keputusan selepas dibahagi dengan — kita mendapat vektor semua-sifar.
Iaitu, diperlakukan sebagai vektor lajur seperti yang baru diterangkan, rentetan akan sentiasa menjadi unsur dalam ruang nol matriks dengan syarat kita melakukan aritmetik modulo Ini benar dalam kedua-dua kes dan Lebih tepat lagi, vektor semua-sifar sentiasa berada dalam ruang nol dan ia disertai oleh vektor yang entri-entrinya adalah bit sekiranya
Persoalan yang masih ada ialah sama ada akan ada vektor lain dalam ruang nol selain daripada yang sepadan dengan dan Jawapannya ialah ini menjadi semakin tidak mungkin apabila bertambah — dan jika kita memilih ruang nol tidak akan mengandungi vektor lain selain daripada yang sepadan dengan dan dengan lebih daripada % peluang. Secara lebih umum, jika kita menggantikan dengan untuk pilihan integer positif yang sewenang-wenangnya, kebarangkalian bahawa vektor yang sepadan dengan dan bersendirian dalam ruang nol adalah sekurang-kurangnya
Menggunakan aljabar linear, adalah mungkin untuk mengira secara cekap penerangan ruang nol modulo Khususnya, ia boleh dilakukan menggunakan penghapusan Gaussian, yang berfungsi dengan cara yang sama apabila aritmetik dilakukan modulo seperti dengan nombor nyata atau kompleks. Selagi vektor yang sepadan dengan dan bersendirian dalam ruang nol yang berlaku dengan kebarangkalian tinggi, kita boleh mengenal pasti daripada hasil pengiraan ini.
Kesukaran klasik
Berapa banyak pertanyaan yang diperlukan oleh algoritma pertanyaan klasik untuk menyelesaikan masalah Simon? Jawapannya: banyak, secara amnya.
Terdapat pelbagai pernyataan tepat yang boleh dibuat tentang kesukaran klasik masalah ini, dan berikut adalah salah satunya. Jika kita mempunyai mana-mana algoritma pertanyaan kebarangkalian, dan algoritma itu membuat kurang daripada pertanyaan, iaitu bilangan pertanyaan yang eksponen dalam maka algoritma itu akan gagal menyelesaikan masalah Simon dengan kebarangkalian sekurang-kurangnya
Kadangkala, membuktikan keputusan ketidakmungkinan seperti ini boleh menjadi sangat mencabar, tetapi yang ini tidak terlalu sukar untuk dibuktikan melalui analisis kebarangkalian elementer. Di sini, walau bagaimanapun, kita hanya akan mengkaji secara ringkas intuisi asas di sebaliknya.
Kita cuba mencari rentetan tersembunyi tetapi selagi kita tidak membuat pertanyaan fungsi pada dua rentetan yang mempunyai nilai output yang sama, kita akan mendapat maklumat yang sangat terhad tentang Secara intuitif, yang kita pelajari hanyalah bahawa rentetan tersembunyi bukan XOR eksklusif bagi mana-mana dua rentetan berbeza yang telah kita tanya. Dan jika kita membuat pertanyaan kurang daripada rentetan, masih akan ada banyak pilihan untuk yang belum kita singkirkan kerana tidak ada cukup pasangan rentetan untuk melakukannya. Ini bukan bukti formal, ia hanya idea asasnya.
Jadi, kesimpulannya, algoritma Simon memberikan kita kelebihan yang ketara bagi kuantum berbanding algoritma klasik dalam model pertanyaan. Khususnya, algoritma Simon menyelesaikan masalah Simon dengan bilangan pertanyaan yang linear dalam bilangan bit input fungsi kita, manakala mana-mana algoritma klasik, walaupun ia bersifat kebarangkalian, perlu membuat bilangan pertanyaan yang eksponen dalam untuk menyelesaikan masalah Simon dengan kebarangkalian kejayaan yang munasabah.