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 seiring pembahasan.
Untuk memulai, untuk setiap bilangan bulat positif definisikan himpunan seperti ini.
Sebagai contoh, dan seterusnya.
Ini adalah himpunan bilangan, tapi kita bisa menganggapnya lebih dari sekadar himpunan. Khususnya, kita bisa memikirkan operasi aritmetika pada seperti penjumlahan dan perkalian — dan jika kita sepakat untuk selalu mengambil jawaban kita modulo (yaitu, membagi dengan 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 mengubah menjadi sebuah ring, yang merupakan jenis objek yang sangat penting dalam aljabar.
Misalnya, dan adalah elemen dari dan jika kita mengalikannya kita mendapat yang meninggalkan sisa ketika dibagi Kadang kita mengekspresikan ini sebagai berikut.
Tapi kita juga bisa menulis asalkan sudah jelas bahwa kita bekerja dalam hanya untuk menjaga notasi kita sesederhana mungkin.
Sebagai contoh, berikut adalah tabel penjumlahan dan perkalian untuk
Di antara elemen dari elemen-elemen yang memenuhi adalah istimewa. Seringkali himpunan yang berisi elemen-elemen ini dinotasikan dengan tanda bintang seperti ini.
Jika kita memusatkan perhatian pada operasi perkalian, himpunan 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 dan berulang kali mengalikan dengan dirinya sendiri, kita akan selalu akhirnya mendapat angka
Untuk contoh pertama, ambil Kita punya bahwa karena dan jika kita mengalikan dengan dirinya sendiri kita mendapat seperti yang dikonfirmasi tabel di atas.
Sebagai contoh kedua, ambil Jika kita menelusuri bilangan dari hingga yang memiliki GCD sama dengan dengan adalah sebagai berikut.
Untuk setiap elemen ini, dimungkinkan untuk memangkatkan bilangan tersebut ke pangkat bilangan bulat positif untuk mendapat Berikut adalah pangkat terkecil yang berhasil:
Tentu saja kita bekerja dalam 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.
Atau, dalam hal notasi yang baru kita perkenalkan di atas, kita diberi dan kita mencari bilangan bulat positif terkecil sedemikian sehingga Bilangan ini disebut orde dari modulo
Untuk menghubungkan masalah pencarian orde dengan estimasi fase, mari kita pikirkan tentang operasi yang didefinisikan pada sebuah sistem yang keadaan klasiknya bersesuaian dengan di mana kita mengalikan dengan elemen tetap
Untuk jelasnya, kita melakukan perkalian dalam jadi tersirat bahwa kita mengambil hasil kali modulo di dalam ket pada sisi kanan persamaan.
Misalnya, jika kita ambil dan maka aksi pada basis standar adalah sebagai berikut.
Ini adalah operasi uniter asalkan ini mengacak elemen-elemen basis standar 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 dari modulo dan menyadari bahwa invers dari adalah
Ada cara lain untuk memikirkan invers yang tidak memerlukan pengetahuan tentang (yang, bagaimanapun juga, adalah yang ingin kita hitung). Untuk setiap elemen selalu ada elemen unik yang memenuhi Kita notasikan elemen ini dengan dan ia bisa dihitung secara efisien; perluasan dari algoritma GCD Euclid melakukannya dengan biaya kuadratik dalam Dan dengan demikian
Jadi, operasi 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 dengan asumsi bahwa Seperti yang baru saja diargumentasikan, asumsi ini memberi tahu kita bahwa adalah uniter.
Ada nilai eigen dari 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
Bilangan adalah orde dari modulo di sini dan di seluruh sisa pelajaran. Nilai eigen yang terkait dengan vektor eigen ini adalah karena tidak berubah saat kita kalikan dengan
Ini terjadi karena jadi setiap keadaan basis standar digeser ke untuk dan digeser kembali ke Secara informal, ini seperti kita sedang mengaduk perlahan, tapi ia sudah sepenuhnya teraduk sehingga tidak ada yang berubah.
Berikut adalah contoh lain dari vektor eigen Yang ini lebih menarik dalam konteks pencarian orde dan estimasi fase.
Atau, kita bisa menulis vektor ini menggunakan penjumlahan sebagai berikut.
Di sini kita melihat bilangan kompleks muncul secara alami, karena cara kerja perkalian dengan modulo Kali ini nilai eigen yang bersesuaian adalah Untuk melihat ini, kita bisa menghitung terlebih dahulu sebagai berikut.
Kemudian, karena dan kita lihat bahwa
jadi
Menggunakan penalaran yang sama, kita bisa mengidentifikasi pasangan vektor eigen/nilai eigen tambahan untuk Untuk setiap pilihan kita punya bahwa
adalah vektor eigen dari yang nilai eigen bersesuaiannya adalah
Ada vektor eigen lain dari tapi kita tidak perlu memperhatikannya — kita akan fokus hanya pada vektor eigen yang baru kita identifikasi.
Pencarian orde melalui estimasi fase
Untuk menyelesaikan masalah pencarian orde bagi pilihan tertentu, kita bisa menerapkan prosedur estimasi fase pada operasi
Untuk melakukan ini, kita perlu mengimplementasikan tidak hanya secara efisien dengan sirkuit kuantum, tapi juga 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 itu sendiri. Secara alami, karena kita bekerja dengan model sirkuit kuantum, kita akan menggunakan notasi biner untuk mengkodekan angka-angka antara dan Angka terbesar yang perlu kita kodekan adalah sehingga jumlah bit yang kita butuhkan adalah
Sebagai contoh, jika maka Berikut tampilan pengkodean elemen sebagai string biner dengan panjang
Dan sekarang, berikut definisi tepat bagaimana didefinisikan sebagai operasi -qubit.
Intinya adalah meskipun kita hanya peduli bagaimana bekerja untuk kita tetap harus menentukan bagaimana cara kerjanya untuk keadaan basis standar yang tersisa — dan kita perlu melakukan ini dengan cara yang tetap menghasilkan operasi uniter. Mendefinisikan sehingga tidak melakukan apa-apa pada keadaan 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 sirkuit kuantum yang menjalankan untuk pilihan apapun, dengan biaya Berikut satu cara untuk melakukan ini.
-
Bangun sirkuit untuk menjalankan operasi
di mana
menggunakan metode yang dijelaskan di pelajaran sebelumnya. Ini memberi kita sirkuit berukuran
-
Tukar dua sistem -qubit menggunakan gerbang swap untuk menukar qubit-qubit secara individual.
-
Mirip dengan langkah pertama, bangun sirkuit untuk operasi
di mana adalah invers dari di
Dengan menginisialisasi qubit bawah dan menggabungkan tiga langkah tersebut, kita mendapatkan transformasi berikut:
Metode ini memerlukan qubit workspace, tapi qubit tersebut dikembalikan ke keadaan terinisialisasi di akhir, yang memungkinkan kita menggunakan sirkuit ini untuk estimasi fase. Total biaya sirkuit yang kita dapatkan adalah
Untuk menjalankan dan seterusnya, kita bisa menggunakan metode yang sama persis, kecuali kita mengganti dengan dan seterusnya, sebagai elemen Artinya, untuk pangkat apapun yang kita pilih, kita bisa membuat sirkuit untuk bukan dengan mengiterasi sirkuit untuk sebanyak kali, melainkan dengan menghitung kemudian menggunakan sirkuit untuk
Penghitungan pangkat 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 yang merupakan pangkat-2, yaitu dan kita bisa mendapatkan pangkat-pangkat ini dengan mengkuadratkan secara iteratif sebanyak kali. Setiap pengkuadratan bisa dilakukan dengan sirkuit Boolean berukuran
Pada dasarnya, apa yang efektif kita lakukan di sini adalah mengalihkan masalah pengulangan hingga kali ke penghitungan klasik yang efisien. Dan beruntung sekali hal ini memungkinkan! Untuk pilihan sirkuit kuantum 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
Solusi dengan vektor eigen yang mudah didapat
Untuk memahami bagaimana kita bisa menyelesaikan masalah pencarian orde menggunakan estimasi fase, mari mulai dengan mengasumsikan bahwa kita menjalankan prosedur estimasi fase pada operasi menggunakan vektor eigen Mendapatkan vektor eigen ini ternyata tidak mudah, jadi ini bukan akhir dari cerita — tapi sangat membantu untuk mulai dari sini.
Nilai eigen dari yang bersesuaian dengan vektor eigen adalah
Yaitu, untuk Jadi, jika kita menjalankan prosedur estimasi fase pada menggunakan vektor eigen kita akan mendapatkan aproksimasi dari Dengan menghitung kebalikannya kita akan bisa mengetahui — asalkan aproksimasi kita cukup baik.
Lebih detailnya, ketika kita menjalankan prosedur estimasi fase menggunakan qubit kontrol, yang kita dapatkan adalah sebuah angka Kita kemudian mengambil sebagai tebakan untuk yang dalam kasus ini adalah Untuk mencari tahu apa itu dari aproksimasi ini, hal yang alami adalah menghitung kebalikan dari aproksimasi kita dan membulatkan ke bilangan bulat terdekat.
Sebagai contoh, misalkan dan kita menjalankan estimasi fase pada dengan vektor eigen menggunakan bit kontrol. Aproksimasi -bit terbaik untuk adalah dan kita punya peluang yang cukup besar (sekitar dalam kasus ini) untuk mendapatkan hasil dari estimasi fase. Kita punya
dan pembulatan ke bilangan bulat terdekat menghasilkan 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 qubit kontrol dalam estimasi fase, kita mungkin mendapatkan aproksimasi -bit terbaik untuk yaitu Mengambil kebalikannya menghasilkan
dan pembulatan ke bilangan bulat terdekat menghasilkan jawaban yang salah yaitu
Jadi berapa banyak presisi yang kita butuhkan untuk mendapatkan jawaban yang benar? Kita tahu bahwa orde adalah bilangan bulat, dan secara intuitif apa yang kita butuhkan adalah presisi yang cukup untuk membedakan dari kemungkinan-kemungkinan terdekat, termasuk dan Angka yang paling dekat dengan yang perlu kita waspadai adalah dan jarak antara dua angka ini adalah
Jadi, jika kita ingin memastikan kita tidak salah mengira dengan cukup menggunakan presisi yang memastikan aproksimasi terbaik ke lebih dekat ke daripada ke Jika kita menggunakan presisi yang cukup sehingga
sehingga kesalahannya kurang dari setengah jarak antara dan maka akan lebih dekat ke daripada ke kemungkinan lain manapun, termasuk dan
Kita bisa memverifikasi ini sebagai berikut. Misalkan
untuk yang memenuhi
Ketika kita mengambil kebalikannya kita mendapatkan
Dengan memaksimalkan di pembilang dan meminimalkan di penyebut, kita bisa membatasi seberapa jauh kita dari sebagai berikut.
Kita kurang dari jauhnya dari jadi seperti yang diharapkan kita akan mendapatkan saat kita membulatkan.
Sayangnya, karena kita belum tahu apa itu kita tidak bisa menggunakannya untuk memberi tahu kita berapa banyak akurasi yang dibutuhkan. Yang bisa kita lakukan adalah menggunakan fakta bahwa harus lebih kecil dari untuk memastikan kita menggunakan presisi yang cukup. Khususnya, jika kita menggunakan akurasi yang cukup untuk menjamin bahwa aproksimasi terbaik ke memenuhi
maka kita akan memiliki presisi yang cukup untuk menentukan dengan benar saat kita mengambil kebalikannya. Mengambil memastikan kita memiliki peluang tinggi untuk mendapatkan estimasi dengan presisi ini menggunakan metode yang dijelaskan sebelumnya. (Mengambil sudah cukup jika kita nyaman dengan batas bawah 40% pada probabilitas keberhasilan.)
Solusi umum
Seperti yang baru saja kita lihat, jika kita memiliki vektor eigen dari kita bisa mengetahui melalui estimasi fase, selama kita menggunakan cukup qubit kontrol untuk melakukan ini dengan presisi yang memadai. Sayangnya, tidak mudah untuk mendapatkan vektor eigen jadi kita perlu mencari cara untuk melanjutkan.
Mari sejenak misalkan kita melanjutkan seperti di atas, kecuali dengan vektor eigen sebagai pengganti untuk pilihan apapun yang ingin kita pertimbangkan. Hasil yang kita dapatkan dari prosedur estimasi fase akan berupa aproksimasi
Dengan asumsi kita tidak mengetahui maupun ini mungkin atau mungkin tidak memungkinkan kita mengidentifikasi Misalnya, jika kita akan mendapatkan aproksimasi ke yang sayangnya tidak memberi kita informasi apapun. Namun, ini adalah kasus yang tidak biasa; untuk nilai lainnya, kita setidaknya akan bisa mempelajari sesuatu tentang
Kita bisa menggunakan algoritma yang dikenal sebagai algoritma pecahan berlanjut untuk mengubah aproksimasi kita menjadi pecahan-pecahan terdekat — termasuk 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.
Jika kita memiliki aproksimasi yang sangat dekat ke dan kita menjalankan algoritma pecahan berlanjut untuk dan kita akan mendapatkan dan seperti yang dijelaskan dalam fakta tersebut. Sebuah analisis dari fakta tersebut memungkinkan kita menyimpulkan bahwa
Perhatikan khususnya bahwa kita tidak harus bisa mengetahui dan kita hanya mengetahui dalam bentuk paling sederhana.
Misalnya, dan seperti yang sudah kita perhatikan, kita tidak akan mendapatkan informasi apapun dari Tapi itulah satu-satunya nilai di mana hal itu terjadi. Ketika bukan nol, mungkin memiliki faktor persekutuan dengan tapi angka yang kita dapatkan dari algoritma pecahan berlanjut setidaknya harus membagi
Mungkin tidak langsung jelas, tapi memang benar bahwa jika kita bisa mengetahui dan untuk dengan dipilih secara acak seragam, maka kemungkinan besar kita bisa memulihkan hanya setelah beberapa sampel. Khususnya, jika tebakan kita untuk adalah kelipatan persekutuan terkecil dari semua nilai penyebut yang kita amati, kita akan benar dengan probabilitas tinggi. Secara intuitif, beberapa nilai tidak bagus karena memiliki faktor persekutuan dengan dan faktor-faktor persekutuan tersebut tersembunyi dari kita saat kita mengetahui dan Tapi pilihan yang acak kecil kemungkinannya menyembunyikan faktor-faktor untuk waktu lama, dan probabilitas kita gagal menebak 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 vektor eigen dari untuk menjalankan prosedur estimasi fase. Ternyata, kita sebenarnya tidak perlu membuatnya!
Yang akan kita lakukan sebagai gantinya adalah menjalankan prosedur estimasi fase pada keadaan yang kita maksudkan sebagai pengkodean biner -bit dari angka sebagai pengganti vektor eigen dari Sejauh ini, kita hanya membahas menjalankan prosedur estimasi fase pada vektor eigen tertentu, tapi tidak ada yang mencegah kita menjalankan prosedur pada keadaan input yang bukan vektor eigen dari dan itulah yang kita lakukan di sini dengan keadaan (Ini bukan vektor eigen dari kecuali yang bukan pilihan yang akan kita minati.)
Alasan memilih keadaan sebagai pengganti vektor eigen dari adalah persamaan berikut ini benar.
Salah satu cara untuk memverifikasi persamaan ini adalah dengan membandingkan hasil kali dalam dari kedua sisi dengan setiap keadaan 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 secara acak seragam dan menggunakan sebagai vektor eigen.
Lebih detailnya, mari bayangkan kita menjalankan prosedur estimasi fase dengan keadaan sebagai pengganti salah satu vektor eigen Setelah transformasi Fourier kuantum invers dilakukan, ini meninggalkan kita dengan keadaan
di mana
Vektor merepresentasikan keadaan dari qubit teratas setelah invers transformasi Fourier kuantum dilakukan pada qubit-qubit tersebut.
Jadi, berkat fakta bahwa adalah himpunan ortonormal, kita menemukan bahwa pengukuran qubit teratas menghasilkan aproksimasi ke nilai di mana dipilih secara acak seragam. Seperti yang sudah kita bahas, ini memungkinkan kita mengetahui dengan tingkat kepercayaan yang tinggi setelah beberapa kali menjalankan secara independen, yang merupakan tujuan kita.
Total biaya
Biaya untuk mengimplementasikan setiap controlled-unitary adalah Ada operasi controlled-unitary, dan kita punya sehingga total biaya untuk operasi controlled-unitary adalah Selain itu, kita memiliki gerbang Hadamard (yang berkontribusi pada biaya), dan transformasi Fourier kuantum invers berkontribusi pada biaya. Jadi, biaya operasi controlled-unitary mendominasi biaya keseluruhan prosedur — yang karenanya adalah
Selain sirkuit kuantum itu sendiri, ada beberapa penghitungan klasik yang perlu dilakukan di sepanjang jalan. Ini termasuk menghitung pangkat di untuk yang diperlukan untuk membuat gerbang controlled-unitary, serta algoritma pecahan berlanjut yang mengubah aproksimasi menjadi pecahan. Penghitungan-penghitungan ini bisa dilakukan oleh sirkuit Boolean dengan total biaya
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 orde
Hal terakhir yang perlu kita bahas adalah bagaimana menyelesaikan masalah pencarian orde membantu kita untuk memfaktorkan. Bagian ini sepenuhnya klasik — tidak ada kaitannya secara khusus dengan komputasi kuantum.
Berikut ide dasarnya. Kita ingin memfaktorkan angka dan kita bisa melakukan ini secara rekursif. Secara khusus, kita bisa fokus pada tugas memecah yang berarti menemukan dua bilangan bulat di mana Ini tidak mungkin jika adalah bilangan prima, tapi kita bisa secara efisien menguji apakah adalah prima menggunakan algoritma uji keprimaan terlebih dahulu, dan jika bukan prima kita akan mencoba memecahnya. Setelah kita memecah kita bisa sederhananya merekursi pada dan sampai semua faktor kita prima dan kita mendapatkan pemfaktoran prima dari
Memecah bilangan bulat genap itu mudah: kita cukup menghasilkan dan
Memecah pangkat sempurna juga mudah, yaitu angka berbentuk untuk bilangan bulat hanya dengan mengaproksimasi akar-akar dan seterusnya, serta memeriksa bilangan bulat terdekat sebagai kandidat untuk Kita tidak perlu melanjutkan lebih dari langkah dalam urutan ini, karena pada titik itu akarnya turun di bawah dan tidak akan mengungkapkan kandidat tambahan.
Bagus bahwa kita bisa melakukan kedua hal ini karena pencarian orde tidak akan membantu kita memfaktorkan bilangan genap atau pangkat prima, di mana angka kebetulan prima. Jika ganjil dan bukan pangkat prima, namun demikian, pencarian orde memungkinkan kita memecah
Satu kali jalannya algoritma ini mungkin gagal menemukan faktor dari Secara khusus, ini terjadi dalam dua situasi:
- Orde dari modulo adalah ganjil.
- Orde dari modulo adalah genap dan
Menggunakan teori bilangan dasar bisa dibuktikan bahwa, untuk pilihan acak dengan probabilitas setidaknya tidak satupun dari kejadian ini terjadi. Faktanya, probabilitas bahwa salah satu kejadian terjadi adalah paling banyak untuk adalah jumlah faktor prima berbeda dari itulah mengapa asumsi bahwa bukan pangkat prima diperlukan. (Asumsi bahwa ganjil juga diperlukan agar fakta ini benar.)
Ini berarti setiap kali menjalankan memiliki setidaknya 50% peluang untuk memecah Oleh karena itu, jika kita menjalankan algoritma sebanyak kali, memilih secara acak setiap kali, kita akan berhasil memecah dengan probabilitas setidaknya
Ide dasar di balik algoritma ini adalah sebagai berikut. Jika kita memiliki pilihan di mana orde dari modulo adalah genap, maka adalah bilangan bulat dan kita bisa mempertimbangkan bilangan-bilangan
Menggunakan rumus kita menyimpulkan bahwa
Sekarang, kita tahu bahwa berdasarkan definisi orde — yang merupakan cara lain mengatakan bahwa habis membagi Itu berarti habis membagi hasil kali
Agar ini benar, semua faktor prima dari harus juga merupakan faktor prima dari atau (atau keduanya) — dan untuk pilihan acak ternyata kecil kemungkinannya semua faktor prima dari membagi salah satu suku dan tidak satupun membagi suku yang lain. Jika tidak, selama beberapa faktor prima dari membagi suku pertama dan beberapa membagi suku kedua, kita akan bisa menemukan faktor tak-trivial dari dengan menghitung GCD dengan suku pertama.