Lewati ke konten utama

Algoritma Shor

Sekarang kita akan beralih ke masalah faktorisasi bilangan bulat, dan melihat bagaimana masalah ini bisa diselesaikan secara efisien di komputer kuantum menggunakan estimasi fase. Algoritma yang akan kita dapatkan adalah algoritma Shor untuk faktorisasi bilangan bulat. Shor tidak mendeskripsikan algoritmanya secara khusus dalam hal estimasi fase, tapi itu adalah cara yang alami dan intuitif untuk menjelaskan cara kerjanya.

Kita akan mulai dengan membahas masalah perantara yang dikenal sebagai masalah pencarian orde dan melihat bagaimana estimasi fase memberikan solusi untuk masalah ini. Kita kemudian akan melihat bagaimana solusi efisien untuk masalah pencarian orde memberikan kita solusi efisien untuk masalah faktorisasi bilangan bulat. (Ketika solusi untuk satu masalah memberikan solusi untuk masalah lain seperti ini, kita bilang bahwa masalah kedua mereduksi ke yang pertama — jadi dalam hal ini kita mereduksi faktorisasi bilangan bulat ke pencarian orde.) Bagian kedua dari algoritma Shor ini sama sekali tidak menggunakan komputasi kuantum; ini sepenuhnya klasik. Komputasi kuantum hanya diperlukan untuk menyelesaikan pencarian orde.

Masalah pencarian orde

Beberapa teori bilangan dasar

Untuk menjelaskan masalah pencarian orde dan bagaimana ia bisa diselesaikan menggunakan estimasi fase, akan sangat membantu untuk mulai dengan beberapa konsep dasar teori bilangan, dan memperkenalkan beberapa notasi yang berguna di sepanjang jalan.

Untuk memulai, untuk setiap bilangan bulat positif N,N, definisikan himpunan ZN\mathbb{Z}_N seperti ini.

ZN={0,1,,N1}\mathbb{Z}_N = \{0,1,\ldots,N-1\}

Sebagai contoh, Z1={0},  \mathbb{Z}_1 = \{0\},\; Z2={0,1},  \mathbb{Z}_2 = \{0,1\},\; Z3={0,1,2},  \mathbb{Z}_3 = \{0,1,2\},\; dan seterusnya.

Ini adalah himpunan bilangan, tapi kita bisa menganggapnya lebih dari sekadar himpunan. Khususnya, kita bisa memikirkan operasi aritmetika pada ZN\mathbb{Z}_N seperti penjumlahan dan perkalian — dan jika kita sepakat untuk selalu mengambil jawaban kita modulo NN (yaitu, membagi dengan NN dan mengambil sisa sebagai hasilnya), kita akan selalu tetap dalam himpunan ini ketika kita melakukan operasi ini. Dua operasi spesifik penjumlahan dan perkalian, keduanya diambil modulo N,N, mengubah ZN\mathbb{Z}_N menjadi sebuah ring, yang merupakan jenis objek yang sangat penting dalam aljabar.

Misalnya, 33 dan 55 adalah elemen dari Z7,\mathbb{Z}_7, dan jika kita mengalikannya kita mendapat 35=15,3\cdot 5 = 15, yang meninggalkan sisa 11 ketika dibagi 7.7. Kadang kita mengekspresikan ini sebagai berikut.

351  (mod 7)3 \cdot 5 \equiv 1 \; (\textrm{mod } 7)

Tapi kita juga bisa menulis 35=1,3 \cdot 5 = 1, asalkan sudah jelas bahwa kita bekerja dalam Z7,\mathbb{Z}_7, hanya untuk menjaga notasi kita sesederhana mungkin.

Sebagai contoh, berikut adalah tabel penjumlahan dan perkalian untuk Z6.\mathbb{Z}_6.

+012345001234511234502234501334501244501235501234012345000000010123452024024303030340420425054321\begin{array}{c|cccccc} + & 0 & 1 & 2 & 3 & 4 & 5 \\\hline 0 & 0 & 1 & 2 & 3 & 4 & 5 \\ 1 & 1 & 2 & 3 & 4 & 5 & 0 \\ 2 & 2 & 3 & 4 & 5 & 0 & 1 \\ 3 & 3 & 4 & 5 & 0 & 1 & 2 \\ 4 & 4 & 5 & 0 & 1 & 2 & 3 \\ 5 & 5 & 0 & 1 & 2 & 3 & 4 \\ \end{array} \qquad \begin{array}{c|cccccc} \cdot & 0 & 1 & 2 & 3 & 4 & 5 \\\hline 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 1 & 0 & 1 & 2 & 3 & 4 & 5 \\ 2 & 0 & 2 & 4 & 0 & 2 & 4 \\ 3 & 0 & 3 & 0 & 3 & 0 & 3 \\ 4 & 0 & 4 & 2 & 0 & 4 & 2 \\ 5 & 0 & 5 & 4 & 3 & 2 & 1 \\ \end{array}

Di antara NN elemen dari ZN,\mathbb{Z}_N, elemen-elemen aZNa\in\mathbb{Z}_N yang memenuhi gcd(a,N)=1\gcd(a,N) = 1 adalah istimewa. Seringkali himpunan yang berisi elemen-elemen ini dinotasikan dengan tanda bintang seperti ini.

ZN={aZN:gcd(a,N)=1}\mathbb{Z}_N^{\ast} = \{a\in \mathbb{Z}_N : \gcd(a,N) = 1\}

Jika kita memusatkan perhatian pada operasi perkalian, himpunan ZN\mathbb{Z}_N^{\ast} membentuk sebuah grup — khususnya sebuah grup abelian — yang merupakan jenis objek penting lainnya dalam aljabar. Ini adalah fakta dasar tentang himpunan-himpunan ini (dan grup hingga pada umumnya), bahwa jika kita memilih sembarang elemen aZNa\in\mathbb{Z}_N^{\ast} dan berulang kali mengalikan aa dengan dirinya sendiri, kita akan selalu akhirnya mendapat angka 1.1.

Untuk contoh pertama, ambil N=6.N=6. Kita punya bahwa 5Z65\in\mathbb{Z}_6^{\ast} karena gcd(5,6)=1,\gcd(5,6) = 1, dan jika kita mengalikan 55 dengan dirinya sendiri kita mendapat 1,1, seperti yang dikonfirmasi tabel di atas.

52=1(working within Z6)5^2 = 1 \quad \text{(working within $\mathbb{Z}_6$)}

Sebagai contoh kedua, ambil N=21.N = 21. Jika kita menelusuri bilangan dari 00 hingga 20,20, yang memiliki GCD sama dengan 11 dengan 2121 adalah sebagai berikut.

Z21={1,2,4,5,8,10,11,13,16,17,19,20}\mathbb{Z}_{21}^{\ast} = \{1,2,4,5,8,10,11,13,16,17,19,20\}

Untuk setiap elemen ini, dimungkinkan untuk memangkatkan bilangan tersebut ke pangkat bilangan bulat positif untuk mendapat 1.1. Berikut adalah pangkat terkecil yang berhasil:

11=182=1163=126=1106=1176=143=1116=1196=156=1132=1202=1\begin{array}{ccc} 1^{1} = 1 \quad & 8^{2} = 1 \quad & 16^{3} = 1 \\[1mm] 2^{6} = 1 \quad & 10^{6} = 1 \quad & 17^{6} = 1 \\[1mm] 4^{3} = 1 \quad & 11^{6} = 1 \quad & 19^{6} = 1 \\[1mm] 5^{6} = 1 \quad & 13^{2} = 1 \quad & 20^{2} = 1 \end{array}

Tentu saja kita bekerja dalam Z21\mathbb{Z}_{21} untuk semua persamaan ini, yang tidak kita tulis — kita anggap itu implisit untuk menghindari kerumitan. Kita akan terus melakukan itu di sepanjang sisa pelajaran.

Pernyataan masalah dan hubungan dengan estimasi fase

Sekarang kita bisa menyatakan masalah pencarian orde.

Pencarian orde

Input: bilangan bulat positif NN dan aa yang memenuhi gcd(N,a)=1\gcd(N,a) = 1
Output: bilangan bulat positif terkecil rr sedemikian sehingga ar1a^r \equiv 1 (mod N)(\textrm{mod } N)

Atau, dalam hal notasi yang baru kita perkenalkan di atas, kita diberi aZN,a \in \mathbb{Z}_N^{\ast}, dan kita mencari bilangan bulat positif terkecil rr sedemikian sehingga ar=1.a^r = 1. Bilangan rr ini disebut orde dari aa modulo N.N.

Untuk menghubungkan masalah pencarian orde dengan estimasi fase, mari kita pikirkan tentang operasi yang didefinisikan pada sebuah sistem yang keadaan klasiknya bersesuaian dengan ZN,\mathbb{Z}_N, di mana kita mengalikan dengan elemen tetap aZN.a\in\mathbb{Z}_N^{\ast}.

Max=ax(for each xZN)M_a \vert x\rangle = \vert ax \rangle \qquad \text{(for each $x\in\mathbb{Z}_N$)}

Untuk jelasnya, kita melakukan perkalian dalam ZN,\mathbb{Z}_N, jadi tersirat bahwa kita mengambil hasil kali modulo NN di dalam ket pada sisi kanan persamaan.

Misalnya, jika kita ambil N=15N = 15 dan a=2,a=2, maka aksi M2M_2 pada basis standar {0,,14}\{\vert 0\rangle,\ldots,\vert 14\rangle\} adalah sebagai berikut.

M20=0M25=10M210=5M21=2M26=12M211=7M22=4M27=14M212=9M23=6M28=1M213=11M24=8M29=3M214=13\begin{array}{ccc} M_{2} \vert 0 \rangle = \vert 0\rangle \quad & M_{2} \vert 5 \rangle = \vert 10\rangle \quad & M_{2} \vert 10 \rangle = \vert 5\rangle \\[1mm] M_{2} \vert 1 \rangle = \vert 2\rangle \quad & M_{2} \vert 6 \rangle = \vert 12\rangle \quad & M_{2} \vert 11 \rangle = \vert 7\rangle \\[1mm] M_{2} \vert 2 \rangle = \vert 4\rangle \quad & M_{2} \vert 7 \rangle = \vert 14\rangle \quad & M_{2} \vert 12 \rangle = \vert 9\rangle \\[1mm] M_{2} \vert 3 \rangle = \vert 6\rangle \quad & M_{2} \vert 8 \rangle = \vert 1\rangle \quad & M_{2} \vert 13 \rangle = \vert 11\rangle \\[1mm] M_{2} \vert 4 \rangle = \vert 8\rangle \quad & M_{2} \vert 9 \rangle = \vert 3\rangle \quad & M_{2} \vert 14 \rangle = \vert 13\rangle \end{array}

Ini adalah operasi uniter asalkan gcd(a,N)=1;\gcd(a,N)=1; ini mengacak elemen-elemen basis standar {0,,N1},\{\vert 0\rangle,\ldots,\vert N-1\rangle\}, jadi sebagai matriks ia adalah matriks permutasi. Jelas dari definisinya bahwa operasi ini deterministik, dan cara sederhana untuk melihat bahwa ia invertibel adalah dengan memikirkan orde rr dari aa modulo N,N, dan menyadari bahwa invers dari MaM_a adalah Mar1.M_a^{r-1}.

Mar1Ma=Mar=Mar=M1=IM_a^{r-1} M_a = M_a^r = M_{a^r} = M_1 = \mathbb{I}

Ada cara lain untuk memikirkan invers yang tidak memerlukan pengetahuan tentang rr (yang, bagaimanapun juga, adalah yang ingin kita hitung). Untuk setiap elemen aZNa\in\mathbb{Z}_N^{\ast} selalu ada elemen unik bZNb\in\mathbb{Z}_N^{\ast} yang memenuhi ab=1.ab=1. Kita notasikan elemen bb ini dengan a1,a^{-1}, dan ia bisa dihitung secara efisien; perluasan dari algoritma GCD Euclid melakukannya dengan biaya kuadratik dalam lg(N).\operatorname{lg}(N). Dan dengan demikian

Ma1Ma=Ma1a=M1=I.M_{a^{-1}} M_a = M_{a^{-1}a} = M_1 = \mathbb{I}.

Jadi, operasi MaM_a bersifat deterministik sekaligus invertibel. Itu berarti ia digambarkan oleh matriks permutasi, dan karenanya uniter.

Sekarang mari kita pikirkan tentang vektor eigen dan nilai eigen dari operasi Ma,M_a, dengan asumsi bahwa aZN.a\in\mathbb{Z}_N^{\ast}. Seperti yang baru saja diargumentasikan, asumsi ini memberi tahu kita bahwa MaM_a adalah uniter.

Ada NN nilai eigen dari Ma,M_a, mungkin termasuk nilai eigen yang sama yang diulang beberapa kali, dan secara umum ada beberapa kebebasan dalam memilih vektor eigen yang bersesuaian — tapi kita tidak perlu mengkhawatirkan semua kemungkinan itu. Mari kita mulai sederhana dan hanya mengidentifikasi satu vektor eigen dari Ma.M_a.

ψ0=1+a++ar1r\vert \psi_0 \rangle = \frac{\vert 1 \rangle + \vert a \rangle + \cdots + \vert a^{r-1} \rangle}{\sqrt{r}}

Bilangan rr adalah orde dari aa modulo N,N, di sini dan di seluruh sisa pelajaran. Nilai eigen yang terkait dengan vektor eigen ini adalah 11 karena tidak berubah saat kita kalikan dengan a.a.

Maψ0=a++ar1+arr=a++ar1+1r=ψ0M_a \vert \psi_0 \rangle = \frac{\vert a \rangle + \cdots + \vert a^{r-1} \rangle + \vert a^r \rangle}{\sqrt{r}} = \frac{\vert a \rangle + \cdots + \vert a^{r-1} \rangle + \vert 1 \rangle}{\sqrt{r}} = \vert \psi_0 \rangle

Ini terjadi karena ar=1,a^r = 1, jadi setiap keadaan basis standar ak\vert a^k \rangle digeser ke ak+1\vert a^{k+1} \rangle untuk kr1,k\leq r-1, dan ar1\vert a^{r-1} \rangle digeser kembali ke 1.\vert 1\rangle. Secara informal, ini seperti kita sedang mengaduk ψ0\vert \psi_0 \rangle perlahan, tapi ia sudah sepenuhnya teraduk sehingga tidak ada yang berubah.

Berikut adalah contoh lain dari vektor eigen Ma.M_a. Yang ini lebih menarik dalam konteks pencarian orde dan estimasi fase.

ψ1=1+ωr1a++ωr(r1)ar1r\vert \psi_1 \rangle = \frac{\vert 1 \rangle + \omega_r^{-1} \vert a \rangle + \cdots + \omega_r^{-(r-1)}\vert a^{r-1} \rangle}{\sqrt{r}}

Atau, kita bisa menulis vektor ini menggunakan penjumlahan sebagai berikut.

ψ1=1rk=0r1ωrkak\vert \psi_1 \rangle = \frac{1}{\sqrt{r}} \sum_{k = 0}^{r-1} \omega_r^{-k} \vert a^k \rangle

Di sini kita melihat bilangan kompleks ωr=e2πi/r\omega_r = e^{2\pi i/r} muncul secara alami, karena cara kerja perkalian dengan aa modulo N.N. Kali ini nilai eigen yang bersesuaian adalah ωr.\omega_r. Untuk melihat ini, kita bisa menghitung terlebih dahulu sebagai berikut.

Maψ1=1rk=0r1ωrkMaak=1rk=0r1ωrkak+1=1rk=1rωr(k1)ak=1rωrk=1rωrkakM_a \vert \psi_1 \rangle = \frac{1}{\sqrt{r}}\sum_{k = 0}^{r-1} \omega_r^{-k} M_a\vert a^k \rangle = \frac{1}{\sqrt{r}}\sum_{k = 0}^{r-1} \omega_r^{-k} \vert a^{k+1} \rangle = \frac{1}{\sqrt{r}}\sum_{k = 1}^{r} \omega_r^{-(k - 1)} \vert a^{k} \rangle = \frac{1}{\sqrt{r}}\omega_r \sum_{k = 1}^{r} \omega_r^{-k} \vert a^{k} \rangle

Kemudian, karena ωrr=1=ωr0\omega_r^{-r} = 1 = \omega_r^0 dan ar=1=a0,\vert a^r \rangle = \vert 1\rangle = \vert a^0\rangle, kita lihat bahwa

1rk=1rωrkak=1rk=0r1ωrkak=ψ1,\frac{1}{\sqrt{r}}\sum_{k = 1}^{r} \omega_r^{-k} \vert a^{k} \rangle = \frac{1}{\sqrt{r}}\sum_{k = 0}^{r-1} \omega_r^{-k} \vert a^k \rangle = \vert\psi_1\rangle,

jadi Maψ1=ωrψ1.M_a \vert\psi_1\rangle = \omega_r \vert\psi_1\rangle.

Menggunakan penalaran yang sama, kita bisa mengidentifikasi pasangan vektor eigen/nilai eigen tambahan untuk Ma.M_a. Untuk setiap pilihan j{0,,r1}j\in\{0,\ldots,r-1\} kita punya bahwa

ψj=1rk=0r1ωrjkak\vert \psi_j \rangle = \frac{1}{\sqrt{r}} \sum_{k = 0}^{r-1} \omega_r^{-jk} \vert a^k \rangle

adalah vektor eigen dari MaM_a yang nilai eigen bersesuaiannya adalah ωrj.\omega_r^j.

Maψj=ωrjψjM_a \vert \psi_j \rangle = \omega_r^j \vert \psi_j \rangle

Ada vektor eigen lain dari Ma,M_a, tapi kita tidak perlu memperhatikannya — kita akan fokus hanya pada vektor eigen ψ0,,ψr1\vert\psi_0\rangle,\ldots,\vert\psi_{r-1}\rangle yang baru kita identifikasi.

Pencarian order melalui estimasi fase

Untuk menyelesaikan masalah pencarian order bagi pilihan aZNa\in\mathbb{Z}_N^{\ast} tertentu, kita bisa menerapkan prosedur estimasi fase pada operasi Ma.M_a.

Untuk melakukan ini, kita perlu mengimplementasikan tidak hanya MaM_a secara efisien dengan quantum Circuit, tapi juga Ma2,M_a^2, Ma4,M_a^4, Ma8,M_a^8, dan seterusnya, sejauh yang diperlukan untuk mendapatkan estimasi yang cukup presisi dari prosedur estimasi fase. Di sini kita akan menjelaskan bagaimana hal ini bisa dilakukan, dan kita akan mencari tahu berapa banyak presisi yang dibutuhkan nanti.

Mari mulai dengan operasi MaM_a itu sendiri. Secara alami, karena kita bekerja dengan model quantum Circuit, kita akan menggunakan notasi biner untuk mengkodekan angka-angka antara 00 dan N1.N-1. Angka terbesar yang perlu kita kodekan adalah N1,N-1, sehingga jumlah bit yang kita butuhkan adalah

n=lg(N1)=log(N1)+1.n = \operatorname{lg}(N-1) = \lfloor \log(N-1) \rfloor + 1.

Sebagai contoh, jika N=21N = 21 maka n=lg(N1)=5.n = \operatorname{lg}(N-1) = 5. Berikut tampilan pengkodean elemen Z21\mathbb{Z}_{21} sebagai string biner dengan panjang 5.5.

0000001000012010100\begin{gathered} 0 \mapsto 00000\\[1mm] 1 \mapsto 00001\\[1mm] \vdots\\[1mm] 20 \mapsto 10100 \end{gathered}

Dan sekarang, berikut definisi tepat bagaimana MaM_a didefinisikan sebagai operasi nn-Qubit.

Max={ax  (mod  N)0x<NxNx<2nM_a \vert x\rangle = \begin{cases} \vert ax \; (\textrm{mod}\;N)\rangle & 0\leq x < N\\[1mm] \vert x\rangle & N\leq x < 2^n \end{cases}

Intinya adalah meskipun kita hanya peduli bagaimana MaM_a bekerja untuk 0,,N1,\vert 0\rangle,\ldots,\vert N-1\rangle, kita tetap harus menentukan bagaimana cara kerjanya untuk 2nN2^n - N state basis standar yang tersisa — dan kita perlu melakukan ini dengan cara yang tetap menghasilkan operasi uniter. Mendefinisikan MaM_a sehingga tidak melakukan apa-apa pada state basis standar yang tersisa berhasil mencapai ini.

Dengan menggunakan algoritma perkalian dan pembagian bilangan bulat yang dibahas di pelajaran sebelumnya, bersama dengan metodologi untuk implementasi reversibel tanpa sampah, kita bisa membangun quantum Circuit yang menjalankan Ma,M_a, untuk pilihan aZNa\in\mathbb{Z}_N^{\ast} apapun, dengan biaya O(n2).O(n^2). Berikut satu cara untuk melakukan ini.

  1. Bangun Circuit untuk menjalankan operasi

    xyxyfa(x)\vert x \rangle \vert y \rangle \mapsto \vert x \rangle \vert y \oplus f_a(x)\rangle

    di mana

    fa(x)={ax  (mod  N)0x<NxNx<2nf_a(x) = \begin{cases} ax \; (\textrm{mod}\;N) & 0\leq x < N\\[1mm] x & N\leq x < 2^n \end{cases}

    menggunakan metode yang dijelaskan di pelajaran sebelumnya. Ini memberi kita Circuit berukuran O(n2).O(n^2).

  2. Tukar dua sistem nn-Qubit menggunakan nn swap Gate untuk menukar Qubit-Qubit secara individual.

  3. Mirip dengan langkah pertama, bangun Circuit untuk operasi

    xyxyfa1(x)\vert x \rangle \vert y \rangle \mapsto \vert x \rangle \bigl\vert y \oplus f_{a^{-1}}(x)\bigr\rangle

    di mana a1a^{-1} adalah invers dari aa di ZN.\mathbb{Z}_N^{\ast}.

Dengan menginisialisasi nn Qubit bawah dan menggabungkan tiga langkah tersebut, kita mendapatkan transformasi berikut:

x0nstep 1xfa(x)step 2fa(x)xstep 3fa(x)xfa1(fa(x))=fa(x)0n\vert x \rangle \vert 0^n \rangle \stackrel{\text{step 1}}{\mapsto} \vert x \rangle \vert f_a(x)\rangle \stackrel{\text{step 2}}{\mapsto} \vert f_a(x)\rangle \vert x \rangle \stackrel{\text{step 3}}{\mapsto} \vert f_a(x)\rangle \bigl\vert x \oplus f_{a^{-1}}(f_a(x)) \bigr\rangle = \vert f_a(x)\rangle\vert 0^n \rangle

Metode ini memerlukan Qubit workspace, tapi Qubit tersebut dikembalikan ke state terinisialisasi di akhir, yang memungkinkan kita menggunakan Circuit ini untuk estimasi fase. Total biaya Circuit yang kita dapatkan adalah O(n2).O(n^2).

Untuk menjalankan Ma2,M_a^2, Ma4,M_a^4, Ma8,M_a^8, dan seterusnya, kita bisa menggunakan metode yang sama persis, kecuali kita mengganti aa dengan a2,a^2, a4,a^4, a8,a^8, dan seterusnya, sebagai elemen ZN.\mathbb{Z}_N^{\ast}. Artinya, untuk pangkat kk apapun yang kita pilih, kita bisa membuat Circuit untuk MakM_a^k bukan dengan mengiterasi Circuit untuk MaM_a sebanyak kk kali, melainkan dengan menghitung b=akZNb = a^k \in \mathbb{Z}_N^{\ast} kemudian menggunakan Circuit untuk Mb.M_b.

Penghitungan pangkat akZNa^k \in \mathbb{Z}_N adalah masalah pemangkatan modular yang disebutkan di pelajaran sebelumnya. Penghitungan ini bisa dilakukan secara klasik, menggunakan algoritma pemangkatan modular yang disebutkan di pelajaran sebelumnya (sering disebut algoritma pangkat dalam teori bilangan komputasional). Sebenarnya, kita hanya membutuhkan pangkat aa yang merupakan pangkat-2, yaitu a2,a4,a2m1ZN,a^2, a^4, \ldots a^{2^{m-1}} \in \mathbb{Z}_N^{\ast}, dan kita bisa mendapatkan pangkat-pangkat ini dengan mengkuadratkan secara iteratif sebanyak m1m-1 kali. Setiap pengkuadratan bisa dilakukan dengan Boolean Circuit berukuran O(n2).O(n^2).

Pada dasarnya, apa yang efektif kita lakukan di sini adalah mengalihkan masalah pengulangan MaM_a hingga 2m12^{m-1} kali ke penghitungan klasik yang efisien. Dan beruntung sekali hal ini memungkinkan! Untuk pilihan quantum Circuit yang sembarang dalam masalah estimasi fase, hal ini kemungkinan besar tidak mungkin dilakukan — dan dalam kasus itu biaya yang dihasilkan untuk estimasi fase tumbuh secara eksponensial terhadap jumlah Qubit kontrol m.m.

Solusi dengan eigenvector yang mudah didapat

Untuk memahami bagaimana kita bisa menyelesaikan masalah pencarian order menggunakan estimasi fase, mari mulai dengan mengasumsikan bahwa kita menjalankan prosedur estimasi fase pada operasi MaM_a menggunakan eigenvector ψ1.\vert\psi_1\rangle. Mendapatkan eigenvector ini ternyata tidak mudah, jadi ini bukan akhir dari cerita — tapi sangat membantu untuk mulai dari sini.

Nilai eigen dari MaM_a yang bersesuaian dengan eigenvector ψ1\vert \psi_1\rangle adalah

ωr=e2πi1r.\omega_r = e^{2\pi i \frac{1}{r}}.

Yaitu, ωr=e2πiθ\omega_r = e^{2\pi i \theta} untuk θ=1/r.\theta = 1/r. Jadi, jika kita menjalankan prosedur estimasi fase pada MaM_a menggunakan eigenvector ψ1,\vert\psi_1\rangle, kita akan mendapatkan aproksimasi dari 1/r.1/r. Dengan menghitung kebalikannya kita akan bisa mengetahui rr — asalkan aproksimasi kita cukup baik.

Lebih detailnya, ketika kita menjalankan prosedur estimasi fase menggunakan mm Qubit kontrol, yang kita dapatkan adalah sebuah angka y{0,,2m1}.y\in\{0,\ldots,2^m-1\}. Kita kemudian mengambil y/2my/2^m sebagai tebakan untuk θ,\theta, yang dalam kasus ini adalah 1/r.1/r. Untuk mencari tahu apa itu rr dari aproksimasi ini, hal yang alami adalah menghitung kebalikan dari aproksimasi kita dan membulatkan ke bilangan bulat terdekat.

2my+12\left\lfloor \frac{2^m}{y} + \frac{1}{2} \right\rfloor

Sebagai contoh, misalkan r=6r = 6 dan kita menjalankan estimasi fase pada MaM_a dengan eigenvector ψ1\vert\psi_1\rangle menggunakan m=5m = 5 bit kontrol. Aproksimasi 55-bit terbaik untuk 1/r=1/61/r = 1/6 adalah 5/32,5/32, dan kita punya peluang yang cukup besar (sekitar 68%68\% dalam kasus ini) untuk mendapatkan hasil y=5y=5 dari estimasi fase. Kita punya

2my=325=6.4,\frac{2^m}{y} = \frac{32}{5} = 6.4,

dan pembulatan ke bilangan bulat terdekat menghasilkan 6,6, yang merupakan jawaban yang benar.

Di sisi lain, jika kita tidak menggunakan cukup presisi, kita mungkin tidak mendapatkan jawaban yang benar. Misalnya, jika kita mengambil m=4m = 4 Qubit kontrol dalam estimasi fase, kita mungkin mendapatkan aproksimasi 44-bit terbaik untuk 1/r=1/6,1/r = 1/6, yaitu 3/16.3/16. Mengambil kebalikannya menghasilkan

2my=163=5.333\frac{2^m}{y} = \frac{16}{3} = 5.333 \cdots

dan pembulatan ke bilangan bulat terdekat menghasilkan jawaban yang salah yaitu 5.5.

Jadi berapa banyak presisi yang kita butuhkan untuk mendapatkan jawaban yang benar? Kita tahu bahwa order rr adalah bilangan bulat, dan secara intuitif apa yang kita butuhkan adalah presisi yang cukup untuk membedakan 1/r1/r dari kemungkinan-kemungkinan terdekat, termasuk 1/(r+1)1/(r+1) dan 1/(r1).1/(r-1). Angka yang paling dekat dengan 1/r1/r yang perlu kita waspadai adalah 1/(r+1),1/(r+1), dan jarak antara dua angka ini adalah

1r1r+1=1r(r+1).\frac{1}{r} - \frac{1}{r+1} = \frac{1}{r(r+1)}.

Jadi, jika kita ingin memastikan kita tidak salah mengira 1/r1/r dengan 1/(r+1),1/(r+1), cukup menggunakan presisi yang memastikan aproksimasi terbaik y/2my/2^m ke 1/r1/r lebih dekat ke 1/r1/r daripada ke 1/(r+1).1/(r+1). Jika kita menggunakan presisi yang cukup sehingga

y2m1r<12r(r+1),\left\vert \frac{y}{2^m} - \frac{1}{r} \right\vert < \frac{1}{2 r (r+1)},

sehingga kesalahannya kurang dari setengah jarak antara 1/r1/r dan 1/(r+1),1/(r+1), maka y/2my/2^m akan lebih dekat ke 1/r1/r daripada ke kemungkinan lain manapun, termasuk 1/(r+1)1/(r+1) dan 1/(r1).1/(r-1).

Kita bisa memverifikasi ini sebagai berikut. Misalkan

y2m=1r+ε\frac{y}{2^m} = \frac{1}{r} + \varepsilon

untuk ε\varepsilon yang memenuhi

ε<12r(r+1).\vert\varepsilon\vert < \frac{1}{2 r (r+1)}.

Ketika kita mengambil kebalikannya kita mendapatkan

2my=11r+ε=r1+εr=rεr21+εr.\frac{2^m}{y} = \frac{1}{\frac{1}{r} + \varepsilon} = \frac{r}{1+\varepsilon r} = r - \frac{\varepsilon r^2}{1+\varepsilon r}.

Dengan memaksimalkan di pembilang dan meminimalkan di penyebut, kita bisa membatasi seberapa jauh kita dari rr sebagai berikut.

εr21+εrr22r(r+1)1r2r(r+1)=r2r+1<12\left\vert \frac{\varepsilon r^2}{1+\varepsilon r} \right\vert \leq \frac{ \frac{r^2}{2 r(r+1)}}{1 - \frac{r}{2r(r+1)}} %= \frac{r^2}{2 r (r+1) - r} = \frac{r}{2 r + 1} < \frac{1}{2}

Kita kurang dari 1/21/2 jauhnya dari r,r, jadi seperti yang diharapkan kita akan mendapatkan rr saat kita membulatkan.

Sayangnya, karena kita belum tahu apa itu r,r, kita tidak bisa menggunakannya untuk memberi tahu kita berapa banyak akurasi yang dibutuhkan. Yang bisa kita lakukan adalah menggunakan fakta bahwa rr harus lebih kecil dari NN untuk memastikan kita menggunakan presisi yang cukup. Khususnya, jika kita menggunakan akurasi yang cukup untuk menjamin bahwa aproksimasi terbaik y/2my/2^m ke 1/r1/r memenuhi

y2m1r12N2,\left\vert \frac{y}{2^m} - \frac{1}{r} \right\vert \leq \frac{1}{2N^2},

maka kita akan memiliki presisi yang cukup untuk menentukan rr dengan benar saat kita mengambil kebalikannya. Mengambil m=2lg(N)+1m = 2\operatorname{lg}(N)+1 memastikan kita memiliki peluang tinggi untuk mendapatkan estimasi dengan presisi ini menggunakan metode yang dijelaskan sebelumnya. (Mengambil m=2lg(N)m = 2\operatorname{lg}(N) sudah cukup jika kita nyaman dengan batas bawah 40% pada probabilitas keberhasilan.)

Solusi umum

Seperti yang baru saja kita lihat, jika kita memiliki eigenvector ψ1\vert \psi_1 \rangle dari Ma,M_a, kita bisa mengetahui rr melalui estimasi fase, selama kita menggunakan cukup Qubit kontrol untuk melakukan ini dengan presisi yang memadai. Sayangnya, tidak mudah untuk mendapatkan eigenvector ψ1,\vert\psi_1\rangle, jadi kita perlu mencari cara untuk melanjutkan.

Mari sejenak misalkan kita melanjutkan seperti di atas, kecuali dengan eigenvector ψk\vert\psi_k\rangle sebagai pengganti ψ1,\vert\psi_1\rangle, untuk pilihan k{0,,r1}k\in\{0,\ldots,r-1\} apapun yang ingin kita pertimbangkan. Hasil yang kita dapatkan dari prosedur estimasi fase akan berupa aproksimasi

y2mkr.\frac{y}{2^m} \approx \frac{k}{r}.

Dengan asumsi kita tidak mengetahui kk maupun r,r, ini mungkin atau mungkin tidak memungkinkan kita mengidentifikasi r.r. Misalnya, jika k=0k = 0 kita akan mendapatkan aproksimasi y/2my/2^m ke 0,0, yang sayangnya tidak memberi kita informasi apapun. Namun, ini adalah kasus yang tidak biasa; untuk nilai kk lainnya, kita setidaknya akan bisa mempelajari sesuatu tentang r.r.

Kita bisa menggunakan algoritma yang dikenal sebagai algoritma pecahan berlanjut untuk mengubah aproksimasi y/2my/2^m kita menjadi pecahan-pecahan terdekat — termasuk k/rk/r jika aproksimasi tersebut cukup baik. Kita tidak akan menjelaskan algoritma pecahan berlanjut di sini. Sebagai gantinya, berikut pernyataan fakta yang sudah diketahui tentang algoritma ini.

Fakta

Diberikan bilangan bulat N2N\geq 2 dan bilangan real α(0,1),\alpha\in(0,1), ada paling banyak satu pilihan bilangan bulat u,v{0,,N1}u,v\in\{0,\ldots,N-1\} dengan v0v\neq 0 dan gcd(u,v)=1\gcd(u,v)=1 yang memenuhi αu/v<12N2.\vert \alpha - u/v\vert < \frac{1}{2N^2}. Diberikan α\alpha dan N,N, algoritma pecahan berlanjut menemukan uu dan v,v, atau melaporkan bahwa keduanya tidak ada. Algoritma ini bisa diimplementasikan sebagai Boolean Circuit berukuran O((lg(N))3).O((\operatorname{lg}(N))^3).

Jika kita memiliki aproksimasi yang sangat dekat y/2my/2^m ke k/r,k/r, dan kita menjalankan algoritma pecahan berlanjut untuk NN dan α=y/2m,\alpha = y/2^m, kita akan mendapatkan uu dan v,v, seperti yang dijelaskan dalam fakta tersebut. Sebuah analisis dari fakta tersebut memungkinkan kita menyimpulkan bahwa

uv=kr.\frac{u}{v} = \frac{k}{r}.

Perhatikan khususnya bahwa kita tidak harus bisa mengetahui kk dan r,r, kita hanya mengetahui k/rk/r dalam bentuk paling sederhana.

Misalnya, dan seperti yang sudah kita perhatikan, kita tidak akan mendapatkan informasi apapun dari k=0.k=0. Tapi itulah satu-satunya nilai kk di mana hal itu terjadi. Ketika kk bukan nol, kk mungkin memiliki faktor persekutuan dengan r,r, tapi angka vv yang kita dapatkan dari algoritma pecahan berlanjut setidaknya harus membagi r.r.

Mungkin tidak langsung jelas, tapi memang benar bahwa jika kita bisa mengetahui uu dan vv untuk u/v=k/ru/v = k/r dengan k{0,,r1}k\in\{0,\ldots,r-1\} dipilih secara acak seragam, maka kemungkinan besar kita bisa memulihkan rr hanya setelah beberapa sampel. Khususnya, jika tebakan kita untuk rr adalah kelipatan persekutuan terkecil dari semua nilai penyebut vv yang kita amati, kita akan benar dengan probabilitas tinggi. Secara intuitif, beberapa nilai kk tidak bagus karena memiliki faktor persekutuan dengan r,r, dan faktor-faktor persekutuan tersebut tersembunyi dari kita saat kita mengetahui uu dan v.v. Tapi pilihan kk yang acak tidak mungkin lama menyembunyikan faktor-faktor r,r, dan probabilitas kita gagal menebak rr dengan benar melalui pengambilan kelipatan persekutuan terkecil dari penyebut yang kita amati turun secara eksponensial terhadap jumlah sampel.

Masih tersisa masalah bagaimana cara kita mendapatkan eigenvector ψk\vert\psi_k\rangle dari MaM_a untuk menjalankan prosedur estimasi fase. Ternyata, kita sebenarnya tidak perlu membuatnya!

Yang akan kita lakukan sebagai gantinya adalah menjalankan prosedur estimasi fase pada state 1,\vert 1\rangle, yang kita maksudkan sebagai pengkodean biner nn-bit dari angka 1,1, sebagai pengganti eigenvector ψ\vert\psi\rangle dari Ma.M_a. Sejauh ini, kita hanya membahas menjalankan prosedur estimasi fase pada eigenvector tertentu, tapi tidak ada yang mencegah kita menjalankan prosedur pada state input yang bukan eigenvector dari Ma,M_a, dan itulah yang kita lakukan di sini dengan state 1.\vert 1\rangle. (Ini bukan eigenvector dari MaM_a kecuali a=1,a=1, yang bukan pilihan yang akan kita minati.)

Alasan memilih state 1\vert 1\rangle sebagai pengganti eigenvector dari MaM_a adalah persamaan berikut ini benar.

1=1rk=0r1ψk\vert 1\rangle = \frac{1}{\sqrt{r}} \sum_{k = 0}^{r-1} \vert \psi_k\rangle

Salah satu cara untuk memverifikasi persamaan ini adalah dengan membandingkan hasil kali dalam dari kedua sisi dengan setiap state basis standar, menggunakan rumus-rumus yang disebutkan sebelumnya dalam pelajaran untuk membantu mengevaluasi hasil untuk sisi kanan. Akibatnya, kita akan mendapatkan hasil pengukuran yang persis sama seolah-olah kita telah memilih k{0,,r1}k\in\{0,\ldots,r-1\} secara acak seragam dan menggunakan ψk\vert\psi_k\rangle sebagai eigenvector.

Lebih detailnya, mari bayangkan kita menjalankan prosedur estimasi fase dengan state 1\vert 1\rangle sebagai pengganti salah satu eigenvector ψk.\vert\psi_k\rangle. Setelah transformasi Fourier kuantum invers dilakukan, ini meninggalkan kita dengan state

1rk=0r1ψkγk,\frac{1}{\sqrt{r}} \sum_{k = 0}^{r-1} \vert \psi_k\rangle \vert \gamma_k\rangle,

di mana

γk=12my=02m1x=02m1e2πix(k/ry/2m)y.\vert\gamma_k\rangle = \frac{1}{2^m} \sum_{y=0}^{2^m - 1} \sum_{x=0}^{2^m-1} e^{2\pi i x (k/r - y/2^m)} \vert y\rangle.

Vektor γk\vert\gamma_k\rangle merepresentasikan state dari mm Qubit teratas setelah invers transformasi Fourier kuantum dilakukan pada Qubit-Qubit tersebut.

Jadi, berkat fakta bahwa {ψ0,,ψr1}\{\vert\psi_0\rangle,\ldots,\vert\psi_{r-1}\rangle\} adalah himpunan ortonormal, kita menemukan bahwa pengukuran mm Qubit teratas menghasilkan aproksimasi y/2my/2^m ke nilai k/rk/r di mana k{0,,r1}k\in\{0,\ldots,r-1\} dipilih secara acak seragam. Seperti yang sudah kita bahas, ini memungkinkan kita mengetahui rr dengan tingkat kepercayaan yang tinggi setelah beberapa kali menjalankan secara independen, yang merupakan tujuan kita.

Total biaya

Biaya untuk mengimplementasikan setiap controlled-unitary MakM_a^k adalah O(n2).O(n^2). Ada mm operasi controlled-unitary, dan kita punya m=O(n),m = O(n), sehingga total biaya untuk operasi controlled-unitary adalah O(n3).O(n^3). Selain itu, kita memiliki mm Gate Hadamard (yang berkontribusi O(n)O(n) pada biaya), dan transformasi Fourier kuantum invers berkontribusi O(n2)O(n^2) pada biaya. Jadi, biaya operasi controlled-unitary mendominasi biaya keseluruhan prosedur — yang karenanya adalah O(n3).O(n^3).

Selain quantum Circuit itu sendiri, ada beberapa penghitungan klasik yang perlu dilakukan di sepanjang jalan. Ini termasuk menghitung pangkat aka^k di ZN\mathbb{Z}_N untuk k=2,4,8,,2m1,k = 2, 4, 8, \ldots, 2^{m-1}, yang diperlukan untuk membuat Gate controlled-unitary, serta algoritma pecahan berlanjut yang mengubah aproksimasi θ\theta menjadi pecahan. Penghitungan-penghitungan ini bisa dilakukan oleh Boolean Circuit dengan total biaya O(n3).O(n^3).

Seperti biasanya, semua batas ini bisa diperbaiki menggunakan algoritma yang asimtotis lebih cepat; batas-batas ini mengasumsikan kita menggunakan algoritma standar untuk operasi aritmetika dasar.

Pemfaktoran melalui pencarian order

Hal terakhir yang perlu kita bahas adalah bagaimana menyelesaikan masalah pencarian order membantu kita untuk memfaktorkan. Bagian ini sepenuhnya klasik — tidak ada kaitannya secara khusus dengan komputasi kuantum.

Berikut ide dasarnya. Kita ingin memfaktorkan angka N,N, dan kita bisa melakukan ini secara rekursif. Secara khusus, kita bisa fokus pada tugas memecah N,N, yang berarti menemukan dua bilangan bulat b,c2b,c\geq 2 di mana N=bc.N = bc. Ini tidak mungkin jika NN adalah bilangan prima, tapi kita bisa secara efisien menguji apakah NN adalah prima menggunakan algoritma uji keprimaan terlebih dahulu, dan jika NN bukan prima kita akan mencoba memecahnya. Setelah kita memecah N,N, kita bisa sederhananya merekursi pada bb dan cc sampai semua faktor kita prima dan kita mendapatkan pemfaktoran prima dari N.N.

Memecah bilangan bulat genap itu mudah: kita cukup menghasilkan 22 dan N/2.N/2.

Memecah pangkat sempurna juga mudah, yaitu angka berbentuk N=sjN = s^j untuk bilangan bulat s,j2,s,j\geq 2, hanya dengan mengaproksimasi akar-akar N1/2,N^{1/2}, N1/3,N^{1/3}, N1/4,N^{1/4}, dan seterusnya, serta memeriksa bilangan bulat terdekat sebagai kandidat untuk s.s. Kita tidak perlu melanjutkan lebih dari log(N)\log(N) langkah dalam urutan ini, karena pada titik itu akarnya turun di bawah 22 dan tidak akan mengungkapkan kandidat tambahan.

Bagus bahwa kita bisa melakukan kedua hal ini karena pencarian order tidak akan membantu kita memfaktorkan bilangan genap atau pangkat prima, di mana angka ss kebetulan prima. Jika NN ganjil dan bukan pangkat prima, namun demikian, pencarian order memungkinkan kita memecah N.N.

Algoritma probabilistik untuk memecah bilangan bulat ganjil komposit N yang bukan pangkat prima
  1. Pilih secara acak a{2,,N1}.a\in\{2,\ldots,N-1\}.

  2. Hitung d=gcd(a,N).d=\gcd(a,N).

  3. Jika d>1d > 1 maka hasilkan b=db = d dan c=N/dc = N/d lalu berhenti. Jika tidak lanjutkan ke langkah berikutnya mengetahui bahwa aZN.a\in\mathbb{Z}_N^{\ast}.

  4. Misalkan rr adalah order dari aa modulo N.N. (Di sinilah kita membutuhkan pencarian order.)

  5. Jika rr genap:

    5.1 Hitung x=ar/21x = a^{r/2} - 1 modulo NN
    5.2 Hitung d=gcd(x,N).d = \gcd(x,N).
    5.3 Jika d>1d>1 maka hasilkan b=db=d dan c=N/dc = N/d lalu berhenti.

  6. Jika titik ini tercapai, algoritma gagal menemukan faktor dari N.N.

Satu kali jalannya algoritma ini mungkin gagal menemukan faktor dari N.N. Secara khusus, ini terjadi dalam dua situasi:

  • Order dari aa modulo NN adalah ganjil.
  • Order dari aa modulo NN adalah genap dan gcd(ar/21,N)=1.\gcd\bigl(a^{r/2} - 1, N\bigr) = 1.

Menggunakan teori bilangan dasar bisa dibuktikan bahwa, untuk pilihan acak a,a, dengan probabilitas setidaknya 1/21/2 tidak satupun dari kejadian ini terjadi. Faktanya, probabilitas bahwa salah satu kejadian terjadi adalah paling banyak 2(m1)2^{-(m-1)} untuk mm adalah jumlah faktor prima berbeda dari N,N, itulah mengapa asumsi bahwa NN bukan pangkat prima diperlukan. (Asumsi bahwa NN ganjil juga diperlukan agar fakta ini benar.)

Ini berarti setiap kali menjalankan memiliki setidaknya 50% peluang untuk memecah N.N. Oleh karena itu, jika kita menjalankan algoritma sebanyak tt kali, memilih aa secara acak setiap kali, kita akan berhasil memecah NN dengan probabilitas setidaknya 12t.1 - 2^{-t}.

Ide dasar di balik algoritma ini adalah sebagai berikut. Jika kita memiliki pilihan aa di mana order rr dari aa modulo NN adalah genap, maka r/2r/2 adalah bilangan bulat dan kita bisa mempertimbangkan bilangan-bilangan

ar/21  (mod  N)andar/2+1  (mod  N).a^{r/2} - 1\; (\textrm{mod}\; N) \quad \text{and} \quad a^{r/2} + 1\; (\textrm{mod}\; N).

Menggunakan rumus Z21=(Z+1)(Z1),Z^2 - 1 = (Z+1)(Z-1), kita menyimpulkan bahwa

(ar/21)(ar/2+1)=ar1.\bigl(a^{r/2} - 1\bigr) \bigl(a^{r/2} + 1\bigr) = a^r - 1.

Sekarang, kita tahu bahwa ar  (mod  N)=1a^r \; (\textrm{mod}\; N) = 1 berdasarkan definisi order — yang merupakan cara lain mengatakan bahwa NN habis membagi ar1.a^r - 1. Itu berarti NN habis membagi hasil kali

(ar/21)(ar/2+1).\bigl(a^{r/2} - 1\bigr) \bigl(a^{r/2} + 1\bigr).

Agar ini benar, semua faktor prima dari NN harus juga merupakan faktor prima dari ar/21a^{r/2} - 1 atau ar/2+1a^{r/2} + 1 (atau keduanya) — dan untuk pilihan acak aa ternyata tidak mungkin semua faktor prima dari NN membagi salah satu suku dan tidak satupun membagi suku yang lain. Jika tidak, selama beberapa faktor prima dari NN membagi suku pertama dan beberapa membagi suku kedua, kita akan bisa menemukan faktor tak-trivial dari NN dengan menghitung GCD dengan suku pertama.

Source: IBM Quantum docs — updated 2 Feb 2026
English version on doQumentation — updated 7 Mei 2026
This translation based on the English version of approx. 27 Mar 2026