Algoritma Simon
Algoritma Simon adalah algoritma kueri kuantum untuk masalah yang dikenal sebagai masalah Simon. Ini adalah masalah janji dengan nuansa serupa masalah Deutsch-Jozsa dan Bernstein-Vazirani, tetapi spesifikasinya berbeda.
Algoritma Simon penting karena memberikan keunggulan eksponensial kuantum atas algoritma klasik (termasuk probabilistik), dan teknik yang digunakannya menginspirasi penemuan Peter Shor tentang algoritma kuantum efisien untuk faktorisasi bilangan bulat.
Masalah Simon
Fungsi input untuk masalah Simon berbentuk
untuk bilangan bulat positif dan Kita bisa membatasi perhatian pada kasus demi kesederhanaan, tetapi tidak banyak yang didapat dari membuat asumsi ini — algoritma Simon dan analisisnya pada dasarnya sama dengan cara manapun.
Kita akan mengurai janjinya untuk lebih memahami apa yang dikatakannya sebentar lagi, tetapi pertama-tama mari kita perjelas bahwa itu mengharuskan memiliki struktur yang sangat khusus — sehingga sebagian besar fungsi tidak akan memenuhi janji ini. Juga tepat untuk mengakui bahwa masalah ini tidak dimaksudkan untuk memiliki kepentingan praktis. Sebaliknya, ini adalah masalah agak buatan yang sengaja dibuat mudah untuk komputer kuantum dan sulit untuk komputer klasik.
Ada dua kasus utama: kasus pertama adalah bahwa adalah string semua-nol dan kasus kedua adalah bukan string semua-nol.
-
Kasus 1: Jika adalah string semua-nol, kita bisa menyederhanakan pernyataan jika-dan-hanya-jika dalam janji sehingga berbunyi Ini setara dengan sebagai fungsi satu-ke-satu.
-
Kasus 2: Jika bukan string semua-nol, maka janji yang dipenuhi untuk string ini menyiratkan bahwa adalah dua-ke-satu, artinya untuk setiap string keluaran yang mungkin dari ada tepat dua string masukan yang menyebabkan mengeluarkan string itu. Selain itu, dua string masukan ini harus berbentuk dan untuk beberapa string
Penting untuk disadari bahwa hanya ada satu string yang bisa cocok jika janji dipenuhi, sehingga selalu ada jawaban yang unik dan benar untuk fungsi yang memenuhi janji.
Berikut adalah contoh fungsi berbentuk yang memenuhi janji untuk string
Ada string masukan yang berbeda dan string keluaran yang berbeda, masing-masing terjadi dua kali — jadi ini adalah fungsi dua-ke-satu. Selain itu, untuk dua string masukan yang berbeda yang menghasilkan string keluaran yang sama, kita melihat bahwa XOR bitwise dari dua string masukan ini sama dengan yang setara dengan mengatakan bahwa salah satunya sama dengan yang lain yang di-XOR dengan
Perhatikan bahwa satu-satunya hal yang penting tentang string keluaran yang sebenarnya adalah apakah mereka sama atau berbeda untuk pilihan string masukan yang berbeda. Misalnya, dalam contoh di atas, ada empat string dan yang muncul sebagai keluaran Kita bisa mengganti empat string ini dengan string yang berbeda, selama semuanya berbeda, dan solusi yang benar tidak akan berubah.
Deskripsi algoritma
Berikut adalah diagram sirkuit kuantum yang mewakili algoritma Simon.
Untuk lebih jelasnya, ada qubit di atas yang dikenai gate Hadamard dan qubit di bawah yang langsung masuk ke gate kueri. Tampilannya sangat mirip dengan algoritma yang sudah kita bahas dalam pelajaran, tetapi kali ini tidak ada phase kickback; semua qubit bawah masuk ke gate kueri dalam keadaan
Untuk memecahkan masalah Simon menggunakan sirkuit ini sebenarnya memerlukan beberapa jalankan independen diikuti oleh langkah pemrosesan pasca-klasik, yang akan dijelaskan nanti setelah perilaku sirkuit dianalisis.
Analisis
Analisis algoritma Simon dimulai dengan cara yang sama dengan algoritma Deutsch-Jozsa. Setelah lapisan pertama gate Hadamard dilakukan pada qubit atas, keadaannya menjadi
Ketika dilakukan, keluaran fungsi di-XOR ke keadaan semua-nol dari qubit bawah, sehingga keadaannya menjadi
Ketika lapisan kedua gate Hadamard dilakukan, kita mendapatkan keadaan berikut menggunakan rumus yang sama untuk aksi lapisan gate Hadamard seperti sebelumnya.
Pada titik ini, analisis menyimpang dari analisis untuk algoritma-algoritma sebelumnya dalam pelajaran ini.
Kita tertarik pada probabilitas pengukuran menghasilkan setiap string yang mungkin Melalui aturan untuk menganalisis pengukuran yang dijelaskan dalam pelajaran Beberapa sistem dari kursus Dasar-dasar informasi kuantum, kita menemukan bahwa probabilitas untuk mendapatkan string sama dengan
Untuk lebih memahami probabilitas ini, kita memerlukan sedikit lebih banyak notasi dan terminologi. Pertama, jangkauan dari fungsi adalah himpunan yang berisi semua string keluarannya.
Kedua, untuk setiap string kita dapat menyatakan himpunan semua string masukan yang menyebabkan fungsi mengevaluasi ke string keluaran ini sebagai
Himpunan dikenal sebagai preimage dari di bawah Kita bisa mendefinisikan preimage di bawah dari himpunan manapun sebagai pengganti dengan cara yang analog — itu adalah himpunan semua elemen yang dipetakan ke himpunan tersebut. (Notasi ini tidak boleh dikacaukan dengan invers dari fungsi yang mungkin tidak ada. Fakta bahwa argumen di sisi kiri adalah himpunan bukan elemen adalah petunjuk yang memungkinkan kita menghindari kebingungan ini.)
Menggunakan notasi ini, kita bisa memisahkan jumlahan dalam ekspresi kita untuk probabilitas di atas untuk mendapatkan
Setiap string direpresentasikan tepat sekali oleh dua penjumlahan — kita pada dasarnya hanya menempatkan string-string ini ke dalam ember terpisah tergantung pada string keluaran mana yang mereka hasilkan saat kita mengevaluasi fungsi kemudian menjumlahkan secara terpisah atas semua ember.
Kita sekarang bisa mengevaluasi kuadrat norma Euclidean untuk mendapatkan
Untuk menyederhanakan probabilitas ini lebih lanjut, mari kita lihat nilai
untuk pilihan arbitrer dari
Jika ternyata maka adalah fungsi satu-ke-satu dan selalu ada hanya satu elemen untuk setiap Nilai ekspresi adalah dalam kasus ini.
Jika, di sisi lain, maka ada tepat dua string dalam himpunan Lebih tepatnya, jika kita memilih sebagai salah satu dari dua string ini, maka string lainnya harus berdasarkan janji dalam masalah Simon. Menggunakan observasi ini kita bisa menyederhanakan sebagai berikut.
Jadi, ternyata nilai tidak bergantung pada pilihan spesifik dalam kedua kasus.
Kita sekarang bisa menyelesaikan analisis dengan melihat dua kasus yang sama seperti sebelumnya secara terpisah.
-
Kasus 1: Dalam kasus ini fungsi adalah satu-ke-satu, sehingga ada string dan kita mendapatkan
Dengan kata lain, pengukuran menghasilkan string yang dipilih secara seragam acak.
-
Kasus 2: Dalam kasus ini adalah dua-ke-satu, sehingga ada elemen dalam Menggunakan rumus dari atas kita menyimpulkan bahwa probabilitas mengukur setiap adalah
Dengan kata lain, kita mendapatkan string yang dipilih secara seragam acak dari himpunan yang berisi string. (Karena tepat setengah dari string biner dengan panjang memiliki hasil kali titik biner dengan dan yang lain memiliki hasil kali titik biner dengan seperti yang sudah kita amati dalam analisis algoritma Deutsch-Jozsa untuk masalah Bernstein-Vazirani.)
Pemrosesan pasca-klasik
Kita sekarang tahu apa probabilitas untuk kemungkinan hasil pengukuran ketika kita menjalankan sirkuit kuantum untuk algoritma Simon. Apakah ini cukup informasi untuk menentukan ?
Jawabannya ya, asalkan kita bersedia mengulangi prosesnya beberapa kali dan menerima bahwa itu bisa gagal dengan beberapa probabilitas, yang bisa kita buat sangat kecil dengan menjalankan sirkuit cukup banyak kali. Ide dasarnya adalah bahwa setiap eksekusi sirkuit memberi kita bukti statistik tentang dan kita bisa menggunakan bukti itu untuk menemukan dengan probabilitas sangat tinggi jika kita menjalankan sirkuit cukup banyak kali.
Misalkan kita menjalankan sirkuit secara independen kali, untuk Tidak ada yang istimewa tentang jumlah iterasi khusus ini — kita bisa mengambil lebih besar (atau lebih kecil) tergantung pada probabilitas kegagalan yang bersedia kita toleransi, seperti yang akan kita lihat. Memilih akan memastikan bahwa kita memiliki lebih dari % kesempatan untuk memulihkan
Dengan menjalankan sirkuit kali, kita mendapatkan string Untuk lebih jelasnya, superskrip di sini adalah bagian dari nama string-string ini, bukan eksponen atau indeks ke bit mereka, jadi kita memiliki
Kita sekarang membentuk matriks yang memiliki baris dan kolom dengan mengambil bit-bit string ini sebagai entri bernilai biner.
Sekarang, kita tidak tahu apa pada titik ini — tujuan kita adalah menemukan string ini. Tetapi bayangkan sebentar bahwa kita tahu string dan kita membentuk vektor kolom dari bit-bit string sebagai berikut.
Jika kita melakukan perkalian matriks-vektor modulo — artinya kita melakukan perkalian seperti biasa kemudian mengambil sisa entri hasilnya setelah dibagi — kita mendapatkan vektor semua-nol.
Artinya, diperlakukan sebagai vektor kolom seperti yang baru saja dijelaskan, string akan selalu menjadi elemen dari ruang nol matriks asalkan kita melakukan aritmetika modulo Ini berlaku baik dalam kasus maupun Lebih tepatnya, vektor semua-nol selalu ada dalam ruang nol dan bergabung dengan vektor yang entrinya adalah bit-bit dalam kasus
Pertanyaan yang tersisa adalah apakah akan ada vektor lain dalam ruang nol selain yang bersesuaian dengan dan Jawabannya adalah ini menjadi semakin tidak mungkin seiring meningkat — dan jika kita memilih ruang nol tidak akan berisi vektor lain selain yang bersesuaian dengan dan dengan lebih dari % kesempatan. Lebih umum, jika kita mengganti dengan untuk pilihan bilangan bulat positif yang arbitrer, probabilitas bahwa vektor yang bersesuaian dengan dan sendirian dalam ruang nol adalah setidaknya
Menggunakan aljabar linear, memungkinkan untuk secara efisien menghitung deskripsi ruang nol modulo Secara khusus, ini bisa dilakukan menggunakan eliminasi Gaussian, yang bekerja dengan cara yang sama ketika aritmetika dilakukan modulo seperti halnya dengan bilangan nyata atau kompleks. Selama vektor yang bersesuaian dengan dan sendirian dalam ruang nol yang terjadi dengan probabilitas tinggi, kita dapat menyimpulkan dari hasil komputasi ini.
Kesulitan klasik
Berapa banyak kueri yang diperlukan algoritma kueri klasik untuk memecahkan masalah Simon? Jawabannya adalah: banyak, pada umumnya.
Ada pernyataan yang berbeda dan tepat yang dapat dibuat tentang kesulitan klasik masalah ini, dan berikut adalah satu di antaranya. Jika kita memiliki algoritma kueri probabilistik manapun, dan algoritma itu membuat kurang dari kueri, yang merupakan jumlah kueri yang eksponensial dalam maka algoritma itu akan gagal memecahkan masalah Simon dengan probabilitas setidaknya
Kadang-kadang, membuktikan hasil impossibilitas seperti ini bisa sangat menantang, tetapi ini tidak terlalu sulit untuk dibuktikan melalui analisis probabilistik elementer. Di sini, bagaimanapun, kita hanya akan secara singkat memeriksa intuisi dasar di baliknya.
Kita mencoba menemukan string tersembunyi tetapi selama kita tidak melakukan kueri ke fungsi pada dua string yang memiliki nilai keluaran yang sama, kita akan mendapatkan informasi yang sangat terbatas tentang Secara intuitif, yang akan kita pelajari hanyalah bahwa string tersembunyi bukan XOR eksklusif dari dua string berbeda yang telah kita kueri. Dan jika kita melakukan kueri kurang dari string, masih akan ada banyak pilihan untuk yang belum kita singkirkan karena tidak ada cukup pasang string untuk melakukannya. Ini bukan bukti formal, ini hanya ide dasarnya.
Jadi, singkatnya, algoritma Simon memberikan kita keunggulan yang mencolok dari kuantum atas algoritma klasik dalam model kueri. Khususnya, algoritma Simon memecahkan masalah Simon dengan jumlah kueri yang linear dalam jumlah bit masukan dari fungsi kita, sedangkan algoritma klasik manapun, bahkan jika itu probabilistik, perlu membuat jumlah kueri yang eksponensial dalam untuk memecahkan masalah Simon dengan probabilitas keberhasilan yang wajar.