Langkau ke kandungan utama

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

f:ΣnΣmf:\Sigma^n \rightarrow \Sigma^m

untuk integer positif nn dan m.m. Kita boleh mengehadkan perhatian kepada kes m=nm = n demi kesederhanaan, tetapi tiada manfaat besar dalam membuat andaian ini — algoritma Simon dan analisisnya pada dasarnya sama dalam kedua-dua keadaan.

Masalah Simon

Input: fungsi f:ΣnΣmf:\Sigma^n \rightarrow \Sigma^m
Janji: wujud suatu rentetan sΣns\in\Sigma^n sedemikian sehingga [f(x)=f(y)][(x=y)(xs=y)][f(x) = f(y)] \Leftrightarrow [(x = y) \vee (x \oplus s = y)] untuk semua x,yΣnx,y\in\Sigma^n
Output: rentetan ss

Kita akan menguraikan janji tersebut untuk memahami maknanya sebentar lagi, tetapi mula-mula kita perlu jelas bahawa janji ini mensyaratkan ff 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 ss ialah rentetan semua-sifar 0n,0^n, dan kes kedua ialah ss bukan rentetan semua-sifar.

  • Kes 1: s=0n.s=0^n. Jika ss ialah rentetan semua-sifar, kita boleh memudahkan pernyataan jika dan hanya jika dalam janji supaya ia berbunyi [f(x)=f(y)][x=y].[f(x) = f(y)] \Leftrightarrow [x = y]. Ini bersamaan dengan ff menjadi fungsi satu-ke-satu.

  • Kes 2: s0n.s\neq 0^n. Jika ss bukan rentetan semua-sifar, maka janji yang dipenuhi untuk rentetan ini bermakna ff adalah dua-ke-satu, iaitu untuk setiap rentetan output yang mungkin bagi f,f, terdapat tepat dua rentetan input yang menyebabkan ff menghasilkan rentetan itu. Selain itu, kedua-dua rentetan input tersebut mesti berbentuk ww dan wsw \oplus s untuk suatu rentetan w.w.

Penting untuk diketahui bahawa hanya boleh ada satu rentetan ss yang berfungsi jika janji dipenuhi, jadi sentiasa ada jawapan yang unik dan betul untuk fungsi yang memenuhi janji.

Berikut ialah contoh fungsi berbentuk f:Σ3Σ5f:\Sigma^3 \rightarrow \Sigma^5 yang memenuhi janji untuk rentetan s=011.s = 011.

f(000)=10011f(001)=00101f(010)=00101f(011)=10011f(100)=11010f(101)=00001f(110)=00001f(111)=11010\begin{aligned} f(000) & = 10011 \\ f(001) & = 00101 \\ f(010) & = 00101 \\ f(011) & = 10011 \\ f(100) & = 11010 \\ f(101) & = 00001 \\ f(110) & = 00001 \\ f(111) & = 11010 \end{aligned}

Terdapat 88 rentetan input yang berbeza dan 44 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 011,011, yang bersamaan dengan mengatakan bahawa salah satunya adalah sama dengan yang satu lagi di-XOR dengan s.s.

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 (10011,(10011, 00101,00101, 00001,00001, dan 11010)11010) yang muncul sebagai output f.f. Kita boleh menggantikan keempat-empat rentetan ini dengan rentetan lain, asalkan semuanya berbeza, dan penyelesaian yang betul s=011s = 011 tidak akan berubah.

Penerangan algoritma

Berikut ialah gambar rajah Circuit kuantum yang mewakili algoritma Simon.

Algoritma Simon

Untuk jelasnya, terdapat nn Qubit di bahagian atas yang dikenakan Gate Hadamard dan mm 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; mm Qubit di bahagian bawah semuanya masuk ke dalam gate pertanyaan dalam keadaan 0.\vert 0\rangle.

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 nn Qubit teratas, keadaan menjadi

12nxΣn0mx.\frac{1}{\sqrt{2^n}} \sum_{x\in\Sigma^n} \vert 0^m \rangle \vert x\rangle.

Apabila UfU_f dilakukan, output fungsi ff di-XOR ke keadaan semua-sifar bagi mm Qubit bahagian bawah, jadi keadaan menjadi

12nxΣnf(x)x.\frac{1}{\sqrt{2^n}} \sum_{x\in\Sigma^n} \vert f(x) \rangle \vert x\rangle.

Apabila lapisan Gate Hadamard kedua dilakukan, kita memperoleh keadaan berikut dengan menggunakan formula yang sama untuk tindakan lapisan Gate Hadamard seperti sebelumnya.

12nxΣnyΣn(1)xyf(x)y\frac{1}{2^n} \sum_{x\in\Sigma^n} \sum_{y\in\Sigma^n} (-1)^{x\cdot y} \vert f(x) \rangle \vert y\rangle

Pada ketika ini, analisis menyimpang daripada analisis algoritma-algoritma sebelumnya dalam pelajaran ini.

Kita berminat dengan kebarangkalian untuk pengukuran menghasilkan setiap rentetan yang mungkin yΣn.y\in\Sigma^n. Melalui peraturan untuk menganalisis pengukuran yang diterangkan dalam pelajaran Sistem berganda dalam kursus Asas maklumat kuantum, kita dapati bahawa kebarangkalian p(y)p(y) untuk mendapatkan rentetan yy adalah sama dengan

p(y)=12nxΣn(1)xyf(x)2.p(y) = \left\|\frac{1}{2^n} \sum_{x\in\Sigma^n} (-1)^{x\cdot y} \vert f(x) \rangle \right\|^2.

Untuk memahami kebarangkalian ini dengan lebih baik, kita perlukan sedikit lagi notasi dan terminologi. Pertama, julat fungsi ff ialah set yang mengandungi semua rentetan outputnya.

range(f)={f(x):xΣn}\operatorname{range}(f) = \{ f(x) : x\in \Sigma^n \}

Kedua, untuk setiap rentetan zrange(f),z\in\operatorname{range}(f), kita boleh menyatakan set semua rentetan input yang menyebabkan fungsi menilai kepada rentetan output zz ini sebagai f1({z}).f^{-1}(\{z\}).

f1({z})={xΣn:f(x)=z}f^{-1}(\{z\}) = \{ x\in\Sigma^n : f(x) = z \}

Set f1({z})f^{-1}(\{z\}) dikenali sebagai praimej bagi {z}\{z\} di bawah f.f. Kita boleh mentakrifkan praimej di bawah ff bagi mana-mana set sebagai ganti {z}\{z\} dengan cara yang serupa — ia adalah set semua unsur yang dipetakan oleh ff ke set tersebut. (Notasi ini tidak boleh dikelirukan dengan songsangan fungsi f,f, yang mungkin tidak wujud. Fakta bahawa argumen di sebelah kiri ialah set {z}\{z\} dan bukan unsur zz adalah petanda yang membolehkan kita mengelakkan kekeliruan ini.)

Menggunakan notasi ini, kita boleh memisahkan jumlah dalam ungkapan kebarangkalian di atas untuk mendapatkan

p(y)=12nzrange(f)(xf1({z})(1)xy)z2.p(y) = \left\| \frac{1}{2^n} \sum_{z\in\operatorname{range}(f)} \Biggl(\sum_{x\in f^{-1}(\{z\})} (-1)^{x\cdot y}\Biggr) \vert z \rangle \right\|^2.

Setiap rentetan xΣnx\in\Sigma^n diwakili tepat sekali oleh dua penjumlahan — pada dasarnya kita hanya memasukkan rentetan-rentetan ini ke dalam baldi berasingan bergantung pada rentetan output z=f(x)z = f(x) yang dihasilkan apabila kita menilai fungsi f,f, kemudian menjumlahkan secara berasingan ke atas semua baldi.

Kita kini boleh menilai kuasa dua norma Euclidean untuk mendapatkan

p(y)=122nzrange(f)xf1({z})(1)xy2.p(y) = \frac{1}{2^{2n}} \sum_{z\in\operatorname{range}(f)} \left\vert \sum_{x\in f^{-1}(\{z\})} (-1)^{x\cdot y} \right\vert^2.

Untuk memudahkan lagi kebarangkalian ini, mari kita lihat nilai

xf1({z})(1)xy2(1)\left\vert \sum_{x\in f^{-1}(\{z\})} (-1)^{x\cdot y} \right\vert^2 \tag{1}

untuk pemilihan sewenang-wenangnya bagi zrange(f).z\in\operatorname{range}(f).

Sekiranya s=0n,s = 0^n, maka ff adalah fungsi satu-ke-satu dan sentiasa hanya ada satu unsur xf1({z}),x\in f^{-1}(\{z\}), untuk setiap zrange(f).z\in\operatorname{range}(f). Nilai ungkapan (1)(1) adalah 11 dalam kes ini.

Sebaliknya, jika s0n,s\neq 0^n, maka terdapat tepat dua rentetan dalam set f1({z}).f^{-1}(\{z\}). Secara tepat, jika kita memilih wf1({z})w\in f^{-1}(\{z\}) sebagai salah satu daripada dua rentetan ini, maka rentetan yang satu lagi mesti adalah wsw \oplus s mengikut janji dalam masalah Simon. Menggunakan pemerhatian ini kita boleh memudahkan (1)(1) seperti berikut.

xf1({z})(1)xy2=(1)wy+(1)(ws)y2=(1)wy(1+(1)sy)2=1+(1)ys2={4ys=00ys=1\begin{aligned} \left\vert \sum_{x\in f^{-1}(\{z\})} (-1)^{x\cdot y} \right\vert^2 & = \Bigl\vert (-1)^{w\cdot y} + (-1)^{(w\oplus s)\cdot y} \Bigr\vert^2 \\ & = \Bigl\vert (-1)^{w\cdot y} \Bigl(1 + (-1)^{s\cdot y}\Bigr) \Bigr\vert^2 \\ & = \Bigl\vert 1 + (-1)^{y\cdot s} \Bigr\vert^2 \\ & = \begin{cases} 4 & y \cdot s = 0\\[1mm] 0 & y \cdot s = 1 \end{cases} \end{aligned}

Jadi, ternyata nilai (1)(1) adalah bebas daripada pilihan zrange(f)z\in\operatorname{range}(f) yang spesifik dalam kedua-dua kes.

Kita kini boleh menyelesaikan analisis dengan melihat dua kes yang sama seperti sebelumnya secara berasingan.

  • Kes 1: s=0n.s = 0^n. Dalam kes ini fungsi ff adalah satu-ke-satu, jadi terdapat 2n2^n rentetan zrange(f),z\in\operatorname{range}(f), dan kita mendapat

    p(y)=122n2n=12n.p(y) = \frac{1}{2^{2n}} \cdot 2^n = \frac{1}{2^n}.

    Dengan kata-kata, pengukuran menghasilkan rentetan yΣny\in\Sigma^n yang dipilih secara seragam rawak.

  • Kes 2: s0n.s \neq 0^n. Dalam kes ini ff adalah dua-ke-satu, jadi terdapat 2n12^{n-1} unsur dalam range(f).\operatorname{range}(f). Menggunakan formula di atas kita simpulkan bahawa kebarangkalian untuk mengukur setiap yΣny\in\Sigma^n ialah

    p(y)=122nzrange(f)xf1({z})(1)xy2={12n1ys=00ys=1p(y) = \frac{1}{2^{2n}} \sum_{z\in\operatorname{range}(f)} \Biggl\vert \sum_{x\in f^{-1}(\{z\})} (-1)^{x\cdot y} \Biggr\vert^2 = \begin{cases} \frac{1}{2^{n-1}} & y \cdot s = 0\\[1mm] 0 & y \cdot s = 1 \end{cases}

    Dengan kata-kata, kita mendapat rentetan yang dipilih secara seragam rawak daripada set {yΣn:ys=0},\{y\in\Sigma^n : y \cdot s = 0\}, yang mengandungi 2n12^{n-1} rentetan. (Kerana s0n,s\neq 0^n, tepat separuh daripada rentetan binari panjang nn mempunyai hasil darab titik binari 11 dengan ss dan separuh lagi mempunyai hasil darab titik binari 00 dengan s,s, 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 ss?

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 s,s, dan kita boleh menggunakan bukti itu untuk mencari ss dengan kebarangkalian yang sangat tinggi jika kita menjalankan Circuit cukup banyak kali.

Katakan kita menjalankan Circuit secara bebas kk kali, untuk k=n+10.k = n + 10. Tiada yang istimewa tentang bilangan iterasi tertentu ini — kita boleh menjadikan kk lebih besar (atau lebih kecil) bergantung pada kebarangkalian kegagalan yang kita sanggup tolak, seperti yang akan kita lihat. Memilih k=n+10k = n + 10 akan memastikan kita mempunyai lebih daripada 99.999.9% peluang untuk memulihkan s.s.

Dengan menjalankan Circuit kk kali, kita mendapat rentetan y1,...,ykΣn.y^1,...,y^{k} \in \Sigma^n. Untuk jelasnya, superskrip di sini adalah sebahagian daripada nama rentetan-rentetan ini, bukan eksponen atau indeks kepada bit mereka, jadi kita ada

y1=yn11y01y2=yn12y02    yk=yn1ky0k\begin{aligned} y^1 & = y^1_{n-1} \cdots y^1_{0}\\[1mm] y^2 & = y^2_{n-1} \cdots y^2_{0}\\[1mm] & \;\; \vdots\\[1mm] y^{k} & = y^{k}_{n-1} \cdots y^{k}_{0} \end{aligned}

Kita kini membentuk matriks MM yang mempunyai kk baris dan nn lajur dengan mengambil bit rentetan-rentetan ini sebagai entri bernilai binari.

M=(yn11y01yn12y02yn1ky0k)M = \begin{pmatrix} y^1_{n-1} & \cdots & y^1_{0}\\[1mm] y^2_{n-1} & \cdots & y^2_{0}\\[1mm] \vdots & \ddots & \vdots \\[1mm] y^{k}_{n-1} & \cdots & y^{k}_{0} \end{pmatrix}

Sekarang, kita tidak tahu apa itu ss pada ketika ini — matlamat kita adalah untuk mencari rentetan ini. Tetapi bayangkan sebentar bahawa kita memang tahu rentetan s,s, dan kita membentuk vektor lajur vv daripada bit rentetan s=sn1s0s = s_{n-1} \cdots s_0 seperti berikut.

v=(sn1s0)v = \begin{pmatrix} s_{n-1}\\ \vdots\\ s_0 \end{pmatrix}

Jika kita melakukan pendaraban matriks-vektor MvM v modulo 22 — bermakna kita melakukan pendaraban seperti biasa dan kemudian mengambil baki entri keputusan selepas dibahagi dengan 22 — kita mendapat vektor semua-sifar.

Mv=(y1sy2syks)=(000)M v = \begin{pmatrix} y^1 \cdot s\\ y^2 \cdot s\\ \vdots\\[1mm] y^{k} \cdot s \end{pmatrix} = \begin{pmatrix} 0\\ 0\\ \vdots\\[1mm] 0 \end{pmatrix}

Iaitu, diperlakukan sebagai vektor lajur vv seperti yang baru diterangkan, rentetan ss akan sentiasa menjadi unsur dalam ruang nol matriks M,M, dengan syarat kita melakukan aritmetik modulo 2.2. Ini benar dalam kedua-dua kes s=0ns = 0^n dan s0n.s\neq 0^n. Lebih tepat lagi, vektor semua-sifar sentiasa berada dalam ruang nol M,M, dan ia disertai oleh vektor yang entri-entrinya adalah bit ss sekiranya s0n.s\neq 0^n.

Persoalan yang masih ada ialah sama ada akan ada vektor lain dalam ruang nol MM selain daripada yang sepadan dengan 0n0^n dan s.s. Jawapannya ialah ini menjadi semakin tidak mungkin apabila kk bertambah — dan jika kita memilih k=n+10,k = n + 10, ruang nol MM tidak akan mengandungi vektor lain selain daripada yang sepadan dengan 0n0^n dan ss dengan lebih daripada 99.999.9% peluang. Secara lebih umum, jika kita menggantikan k=n+10k = n + 10 dengan k=n+rk = n + r untuk pilihan integer positif rr yang sewenang-wenangnya, kebarangkalian bahawa vektor yang sepadan dengan 0n0^n dan ss bersendirian dalam ruang nol MM adalah sekurang-kurangnya 12r.1 - 2^{-r}.

Menggunakan aljabar linear, adalah mungkin untuk mengira secara cekap penerangan ruang nol MM modulo 2.2. Khususnya, ia boleh dilakukan menggunakan penghapusan Gaussian, yang berfungsi dengan cara yang sama apabila aritmetik dilakukan modulo 22 seperti dengan nombor nyata atau kompleks. Selagi vektor yang sepadan dengan 0n0^n dan ss bersendirian dalam ruang nol M,M, yang berlaku dengan kebarangkalian tinggi, kita boleh mengenal pasti ss 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 2n/2112^{n/2 - 1} - 1 pertanyaan, iaitu bilangan pertanyaan yang eksponen dalam n,n, maka algoritma itu akan gagal menyelesaikan masalah Simon dengan kebarangkalian sekurang-kurangnya 1/2.1/2.

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 s,s, tetapi selagi kita tidak membuat pertanyaan fungsi pada dua rentetan yang mempunyai nilai output yang sama, kita akan mendapat maklumat yang sangat terhad tentang s.s. Secara intuitif, yang kita pelajari hanyalah bahawa rentetan tersembunyi ss bukan XOR eksklusif bagi mana-mana dua rentetan berbeza yang telah kita tanya. Dan jika kita membuat pertanyaan kurang daripada 2n/2112^{n/2 - 1} - 1 rentetan, masih akan ada banyak pilihan untuk ss 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 nn fungsi kita, manakala mana-mana algoritma klasik, walaupun ia bersifat kebarangkalian, perlu membuat bilangan pertanyaan yang eksponen dalam nn untuk menyelesaikan masalah Simon dengan kebarangkalian kejayaan yang munasabah.

Source: IBM Quantum docs — updated 15 Jan 2026
English version on doQumentation — updated 7 Mei 2026
This translation based on the English version of approx. 26 Mac 2026