Lompat ke isi

Algoritma Berlekamp–Rabin: Perbedaan antara revisi

Ensiklopedia Pengetahuan Universitas Islam Sultan Agung
Maintenance script (bicara | kontrib)
Perbaikan presentasi: gambar Commons dan heading matematika
Maintenance script (bicara | kontrib)
Presentation V4: sitasi, referensi, Math, Wikimedia Commons, dan atribusi
 
(2 revisi perantara oleh pengguna yang sama tidak ditampilkan)
Baris 1: Baris 1:
[[File:Elwyn_R_Berlekamp_2005.jpg|thumb|right|280px|Elwyn R Berlekamp 2005]]
[[File:Elwyn_R_Berlekamp_2005.jpg|thumb|right|280px|Elwyn R Berlekamp 2005]]


Dalam [[teori bilangan]], '''algoritma Berlekamp–Rabin''' adalah metode [[Algoritma teracak|probabilistik]] [[Algoritma pencarian akar|pencarian akar]] dari [[polinomial]] pada [[medan berhingga|medan]] <math>\mathbb Z_p</math>. Metode ini ditemukan oleh [[Elwyn Berlekamp]] pada tahun 1970 sebagai tambahan [[algoritma Berlekamp|algoritma]] untuk [[faktorisasi]] polinomial pada medan berhingga. Algoritma kemudian dimodifikasi oleh [[Michael O. Rabin|Rabin]] untuk medan berhingga sebarang pada tahun 1979. Sebelum Berlekamp, metode ini juga ditemukan secara terpisah oleh peneliti lain.
Dalam [[teori bilangan]], '''algoritma Berlekamp–Rabin''' adalah metode [[Algoritma teracak|probabilistik]] [[Algoritma pencarian akar|pencarian akar]] dari [[polinomial]] pada [[medan berhingga|medan]] <math>\mathbb Z_p</math>. Metode ini ditemukan oleh [[Elwyn Berlekamp]] pada tahun 1970<ref name=":0">E. R. Berlekamp. [https://www.ams.org/mcom/1970-24-111/S0025-5718-1970-0276200-X/ Factoring polynomials over large finite fields]. ''Mathematics of Computation''. 1970. Vol. 24 (111). hlm. 713–735. doi:10.1090/S0025-5718-1970-0276200-X.</ref> sebagai tambahan [[algoritma Berlekamp|algoritma]] untuk [[faktorisasi]] polinomial pada medan berhingga. Algoritma kemudian dimodifikasi oleh [[Michael O. Rabin|Rabin]] untuk medan berhingga sebarang pada tahun 1979.<ref name=":1">M. Rabin. ''Probabilistic Algorithms in Finite Fields''. ''SIAM Journal on Computing''. 1980. Vol. 9 (2). hlm. 273–280. doi:10.1137/0209024.</ref> Sebelum Berlekamp, metode ini juga ditemukan secara terpisah oleh peneliti lain.<ref>Donald E Knuth. ''The art of computer programming. Vol. 2 Vol. 2''. 1998. ISBN 978-0201896848.</ref>


== Sejarah ==
== Sejarah ==
Metode ini diusulkan oleh [[Elwyn Berlekamp]] dalam karyanya tahun 1970 tentang faktorisasi polinomial pada medan berhingga. Karya aslinya tidak memiliki bukti [[Kebenaran (ilmu komputer)|kebenaran]] formal dan kemudian disempurnakan dan dimodifikasi untuk medan berhingga sebarang oleh [[Michael O. Rabin|Michael Rabin]]. Pada tahun 1986, René Peralta mengusulkan algoritma serupa untuk mencari akar kuadrat <math>\mathbb Z_p</math>. Perumuman metode Peralita untuk persamaan kubik dibuat pada tahun 2000.
Metode ini diusulkan oleh [[Elwyn Berlekamp]] dalam karyanya tahun 1970<ref name=":0" /> tentang faktorisasi polinomial pada medan berhingga. Karya aslinya tidak memiliki bukti [[Kebenaran (ilmu komputer)|kebenaran]] formal<ref name=":1" /> dan kemudian disempurnakan dan dimodifikasi untuk medan berhingga sebarang oleh [[Michael O. Rabin|Michael Rabin]].<ref name=":1" /> Pada tahun 1986, René Peralta mengusulkan algoritma serupa<ref>Tsz-Wo Sze. ''On taking square roots without quadratic nonresidues over finite fields''. ''Mathematics of Computation''. 2011. Vol. 80 (275). hlm. 1797–1811. doi:10.1090/s0025-5718-2011-02419-1.</ref> untuk mencari akar kuadrat <math>\mathbb Z_p</math>.<ref>R. Peralta. ''A simple and fast probabilistic algorithm for computing square roots modulo a prime number (Corresp.)''. ''IEEE Transactions on Information Theory''. November 1986. Vol. 32 (6). hlm. 846–847. doi:10.1109/TIT.1986.1057236.</ref> Perumuman metode Peralita untuk persamaan kubik dibuat pada tahun 2000.<ref>C Padró, G Sáez. ''Taking cube roots in Zm''. ''Applied Mathematics Letters''. August 2002. Vol. 15 (6). hlm. 703–708. doi:10.1016/s0893-9659(02)00031-9.</ref>


== Pernyataan masalah==
== Pernyataan masalah==
Misalkan <math>p</math> adalah [[bilangan prima]] ganjil, dan misalkan pula polinomial <math display="inline">f(x) = a_0 + a_1 x + \cdots + a_n x^n</math> atas medan <math>\mathbb Z_p</math> dari modulo sisa <math>p</math>. Tujuan pernyataan masalah ini adalah bahwa algoritma Berlekamp harus menemukan semua <math>\lambda</math> di <math>\mathbb Z_p</math> sehingga <math display="inline">f(\lambda)= 0</math> di <math>\mathbb Z_p</math>.
Misalkan <math>p</math> adalah [[bilangan prima]] ganjil, dan misalkan pula polinomial <math display="inline">f(x) = a_0 + a_1 x + \cdots + a_n x^n</math> atas medan <math>\mathbb Z_p</math> dari modulo sisa <math>p</math>. Tujuan pernyataan masalah ini adalah bahwa algoritma Berlekamp harus menemukan semua <math>\lambda</math> di <math>\mathbb Z_p</math> sehingga <math display="inline">f(\lambda)= 0</math> di <math>\mathbb Z_p</math>.<ref name=":1" /><ref name=":2">Alfred J. Menezes, Ian F. Blake, XuHong Gao, Ronald C. Mullin, Scott A. Vanstone. [https://www.springer.com/gp/book/9780792392828 Applications of Finite Fields]. Springer US. 1993. ISBN 9780792392828.</ref>


== Algoritma ==
== Algoritma ==
=== Pengacakan ===
=== Pengacakan ===
Misalkan <math display="inline">f(x) = (x-\lambda_1)(x-\lambda_2)\cdots(x-\lambda_n)</math>. Menemukan semua akar polinomial ini sama saja dengan mencari faktorisasinya menjadi faktor [[Lincoln Near-Earth Asteroid Research|linear]]. Untuk menemukan faktorisasi tersebut, cukup membagi polinomial menjadi dua pembagi non-trivial dan memfaktorkannya secara rekursif. Lebih lanjut, misalkan polinomial <math display="inline">f_z(x)=f(x-z) = (x-\lambda_1 - z)(x-\lambda_2 - z) \cdots (x-\lambda_n-z)</math>, untuk <math>z</math> setiap anggota <math>\mathbb Z_p</math>. Jika polinomial tersebut dinyatakan sebagai hasilkali <math>f_z(x)=p_0(x)p_1(x)</math>, maka dalam bentuk polinomial awal, mengartikan bahwa <math>f(x) =p_0(x+z)p_1(x+z)</math>. Fungsi  yang merupakan menyediakan faktorisasi dibutuhkan dari <math>f(x)</math>.
Misalkan <math display="inline">f(x) = (x-\lambda_1)(x-\lambda_2)\cdots(x-\lambda_n)</math>. Menemukan semua akar polinomial ini sama saja dengan mencari faktorisasinya menjadi faktor [[Lincoln Near-Earth Asteroid Research|linear]]. Untuk menemukan faktorisasi tersebut, cukup membagi polinomial menjadi dua pembagi non-trivial dan memfaktorkannya secara rekursif. Lebih lanjut, misalkan polinomial <math display="inline">f_z(x)=f(x-z) = (x-\lambda_1 - z)(x-\lambda_2 - z) \cdots (x-\lambda_n-z)</math>, untuk <math>z</math> setiap anggota <math>\mathbb Z_p</math>. Jika polinomial tersebut dinyatakan sebagai hasilkali <math>f_z(x)=p_0(x)p_1(x)</math>, maka dalam bentuk polinomial awal, mengartikan bahwa <math>f(x) =p_0(x+z)p_1(x+z)</math>. Fungsi  yang merupakan menyediakan faktorisasi dibutuhkan dari <math>f(x)</math>.<ref name=":0" /><ref name=":2" />


=== Klasifikasi elemen Zₚ ===
=== Klasifikasi elemen Z_p ===
Menurut [[kriteria Euler]], untuk setiap [[monomial]] <math>(x-\lambda)</math>, berlaku tepat salah satu dari sifat-sifat berikut:
Menurut [[kriteria Euler]], untuk setiap [[monomial]] <math>(x-\lambda)</math>, berlaku tepat salah satu dari sifat-sifat berikut:<ref name=":0" />


# Monomial sama dengan <math>x</math> jika <math>\lambda = 0</math>,
# Monomial sama dengan <math>x</math> jika <math>\lambda = 0</math>,
Baris 20: Baris 20:
# Pembagian monomial <math display="inline">g_1(x)=(x^{(p-1)/2}+1)</math> jika <math>\lambda</math> adalah non-residul kuadrat modulo <math>p</math>.
# Pembagian monomial <math display="inline">g_1(x)=(x^{(p-1)/2}+1)</math> jika <math>\lambda</math> adalah non-residul kuadrat modulo <math>p</math>.


Jadi, jika <math>f_z(x)</math> tidak habis dibagi <math>x</math>, yang dapat diperiksa secara terpisah, maka <math>f_z(x)</math> sama dengan hasilkali dari [[faktor persekutuan terbesar polinomial|faktor persekutuan terbesar]] <math>\operatorname{FPB}(f_z(x);g_0(x))</math> dan <math>\operatorname{FPB}(f_z(x);g_1(x))</math>.
Jadi, jika <math>f_z(x)</math> tidak habis dibagi <math>x</math>, yang dapat diperiksa secara terpisah, maka <math>f_z(x)</math> sama dengan hasilkali dari [[faktor persekutuan terbesar polinomial|faktor persekutuan terbesar]] <math>\operatorname{FPB}(f_z(x);g_0(x))</math> dan <math>\operatorname{FPB}(f_z(x);g_1(x))</math>.<ref name=":2" />


=== Metode Berlekamp ===
=== Metode Berlekamp ===
Sifat-sifat di atas mengarah pada algoritma berikut:
Sifat-sifat di atas mengarah pada algoritma berikut:<ref name=":0" />


# Hitung secara eksplisit koefisien <math>f_z(x) = f(x-z)</math>,
# Hitung secara eksplisit koefisien <math>f_z(x) = f(x-z)</math>,
Baris 40: Baris 40:
# FPB sama dengan <math>(x-t)</math>, yang berarti tepat salah satu dari bilangan tersebut merupakan residu kuadrat.
# FPB sama dengan <math>(x-t)</math>, yang berarti tepat salah satu dari bilangan tersebut merupakan residu kuadrat.


Pada kasus ketiga, FPB sama dengan <math>(x-z-\beta)</math> atau <math>(x-z+\beta)</math>. Hal ini memungkinkan untuk menulis solusi sebagai <math display="inline">\beta = (t - z) \pmod{p}</math>.
Pada kasus ketiga, FPB sama dengan <math>(x-z-\beta)</math> atau <math>(x-z+\beta)</math>. Hal ini memungkinkan untuk menulis solusi sebagai <math display="inline">\beta = (t - z) \pmod{p}</math>.<ref name=":0" />


=== Contoh ===
=== Contoh ===
Baris 51: Baris 51:


== Bukti kebenaran ==
== Bukti kebenaran ==
Algoritma menemukan faktorisasi <math>f_z(x)</math> dalam semua kasus, kecuali ketika semua bilangan <math>z+\lambda_1, z+\lambda_2, \ldots, z+\lambda_n</math> adalah residu kuadrat atau non-residu secara bersamaan. Menurut [[teori siklotomi]], peluang kejadiannya untuk kasus ketika <math>\lambda_1, \ldots, \lambda_n</math> juga merupakan semua residu atau non-residu secara bersamaan (yaitu, ketika <math>z=0</math> tidak berhasil) diestimasi sebagai <math>2^{-k}</math>, untuk <math>k</math> adalah jumlah nilai yang berbeda dalam <math>\lambda_1, \ldots, \lambda_n</math>. Dengan cara ini, bahkan untuk kasus galat <math>k=1</math> dan <math>f(x)=(x-\lambda)^n</math>, maka estimasi peluang galatnya adalah <math>1/2</math>, dan untuk kasus [[akar kuadrat]] modular, probabilitas galat setidaknya bernilai <math>1/4</math>.
Algoritma menemukan faktorisasi <math>f_z(x)</math> dalam semua kasus, kecuali ketika semua bilangan <math>z+\lambda_1, z+\lambda_2, \ldots, z+\lambda_n</math> adalah residu kuadrat atau non-residu secara bersamaan. Menurut [[teori siklotomi]],<ref>Marshall Hall. [https://books.google.com/books?id=__JCiiCfu2EC&q=Combinatorial+Theory+hall&pg=PA1 Combinatorial Theory]. John Wiley & Sons. 1998. ISBN 9780471315186.</ref> peluang kejadiannya untuk kasus ketika <math>\lambda_1, \ldots, \lambda_n</math> juga merupakan semua residu atau non-residu secara bersamaan (yaitu, ketika <math>z=0</math> tidak berhasil) diestimasi sebagai <math>2^{-k}</math>, untuk <math>k</math> adalah jumlah nilai yang berbeda dalam <math>\lambda_1, \ldots, \lambda_n</math>.<ref name=":0" /> Dengan cara ini, bahkan untuk kasus galat <math>k=1</math> dan <math>f(x)=(x-\lambda)^n</math>, maka estimasi peluang galatnya adalah <math>1/2</math>, dan untuk kasus [[akar kuadrat]] modular, probabilitas galat setidaknya bernilai <math>1/4</math>.


== Kompleksitas ==
== Kompleksitas ==
Baris 61: Baris 61:
# Mengambil <math>\operatorname{FPB}</math> dari dua polinomial melalui [[algoritma Euklides]] yang bekerja di <math>O(n^2)</math>.
# Mengambil <math>\operatorname{FPB}</math> dari dua polinomial melalui [[algoritma Euklides]] yang bekerja di <math>O(n^2)</math>.


Jadi, seluruh prosedur dapat dilakukan di <math>O(n^2 \log p)</math>. Dengan menggunakan [[transformasi Fourier cepat]] dan algoritma setengah-FPB, maka kompleksitas algoritmanya dapat ditingkatkan menjadi <math>O(n \log n \log pn)</math>. Untuk kasus akar kuadrat modular, derajatnya adalah <math>n = 2</math>, sehingga seluruh kompleksitas algoritma dalam kasus tersebut dibatasi dengan <math>O(\log p)</math> per iterasi.
Jadi, seluruh prosedur dapat dilakukan di <math>O(n^2 \log p)</math>. Dengan menggunakan [[transformasi Fourier cepat]] dan algoritma setengah-FPB,<ref>Aho, Alfred V. [https://archive.org/details/designanalysisof00ahoarich The design and analysis of computer algorithms]. Addison-Wesley Pub. Co. 1974. ISBN 0201000296.</ref> maka kompleksitas algoritmanya dapat ditingkatkan menjadi <math>O(n \log n \log pn)</math>. Untuk kasus akar kuadrat modular, derajatnya adalah <math>n = 2</math>, sehingga seluruh kompleksitas algoritma dalam kasus tersebut dibatasi dengan <math>O(\log p)</math> per iterasi.<ref name=":2" />


== Referensi ==
== Referensi ==
<br />
<references />


== Sumber dan atribusi ==
== Sumber dan atribusi ==
Artikel ini diadaptasi dalam mode teks dari
 
[https://id.wikipedia.org/w/index.php?title=Algoritma_Berlekamp%E2%80%93Rabin&oldid=25986958 Wikipedia bahasa Indonesia],
Konten artikel ini diadaptasi dari [https://id.wikipedia.org/w/index.php?title=Algoritma_Berlekamp%E2%80%93Rabin&oldid=25986958 Wikipedia bahasa Indonesia], revisi 25986958 (2024-07-03T05:23:51Z), yang tersedia berdasarkan lisensi Creative Commons Atribusi-BerbagiSerupa (CC BY-SA). Gambar pada artikel ini bersumber dari Wikimedia Commons dan mengikuti ketentuan lisensi masing-masing berkas. Mohon gunakan konten dan media secara bijak serta sesuai dengan ketentuan lisensi yang berlaku.
revisi 25986958 (2024-07-03T05:23:51Z).
 
Gambar, media, infobox, templat navigasi, dan kategori sumber
<!-- WIKI_UNISSULA_PRESENTATION_V4 -->
tidak diimpor ke Wiki Unissula.
Atribusi dan lisensi mengikuti ketentuan Creative Commons
Atribusi-BerbagiSerupa (CC BY-SA) pada sumber Wikipedia.

Revisi terkini sejak 23 Agustus 2026 03.02

Elwyn R Berlekamp 2005

Dalam teori bilangan, algoritma Berlekamp–Rabin adalah metode probabilistik pencarian akar dari polinomial pada medan p. Metode ini ditemukan oleh Elwyn Berlekamp pada tahun 1970[1] sebagai tambahan algoritma untuk faktorisasi polinomial pada medan berhingga. Algoritma kemudian dimodifikasi oleh Rabin untuk medan berhingga sebarang pada tahun 1979.[2] Sebelum Berlekamp, metode ini juga ditemukan secara terpisah oleh peneliti lain.[3]

Sejarah

Metode ini diusulkan oleh Elwyn Berlekamp dalam karyanya tahun 1970[1] tentang faktorisasi polinomial pada medan berhingga. Karya aslinya tidak memiliki bukti kebenaran formal[2] dan kemudian disempurnakan dan dimodifikasi untuk medan berhingga sebarang oleh Michael Rabin.[2] Pada tahun 1986, René Peralta mengusulkan algoritma serupa[4] untuk mencari akar kuadrat p.[5] Perumuman metode Peralita untuk persamaan kubik dibuat pada tahun 2000.[6]

Pernyataan masalah

Misalkan p adalah bilangan prima ganjil, dan misalkan pula polinomial f(x)=a0+a1x++anxn atas medan p dari modulo sisa p. Tujuan pernyataan masalah ini adalah bahwa algoritma Berlekamp harus menemukan semua λ di p sehingga f(λ)=0 di p.[2][7]

Algoritma

Pengacakan

Misalkan f(x)=(xλ1)(xλ2)(xλn). Menemukan semua akar polinomial ini sama saja dengan mencari faktorisasinya menjadi faktor linear. Untuk menemukan faktorisasi tersebut, cukup membagi polinomial menjadi dua pembagi non-trivial dan memfaktorkannya secara rekursif. Lebih lanjut, misalkan polinomial fz(x)=f(xz)=(xλ1z)(xλ2z)(xλnz), untuk z setiap anggota p. Jika polinomial tersebut dinyatakan sebagai hasilkali fz(x)=p0(x)p1(x), maka dalam bentuk polinomial awal, mengartikan bahwa f(x)=p0(x+z)p1(x+z). Fungsi yang merupakan menyediakan faktorisasi dibutuhkan dari f(x).[1][7]

Klasifikasi elemen Z_p

Menurut kriteria Euler, untuk setiap monomial (xλ), berlaku tepat salah satu dari sifat-sifat berikut:[1]

  1. Monomial sama dengan x jika λ=0,
  2. Pembagian monomial g0(x)=(x(p1)/21) jika λ adalah residu kuadrat modulo p,
  3. Pembagian monomial g1(x)=(x(p1)/2+1) jika λ adalah non-residul kuadrat modulo p.

Jadi, jika fz(x) tidak habis dibagi x, yang dapat diperiksa secara terpisah, maka fz(x) sama dengan hasilkali dari faktor persekutuan terbesar FPB(fz(x);g0(x)) dan FPB(fz(x);g1(x)).[7]

Metode Berlekamp

Sifat-sifat di atas mengarah pada algoritma berikut:[1]

  1. Hitung secara eksplisit koefisien fz(x)=f(xz),
  2. Hitung sisa x,x2,x22,x23,x24,,x2log2p modulo fz(x) dengan mengkuadratkan polinomial dan mengambil sisa modulo fz(x),
  3. Menggunakan eksponensiasi yang dikuadratkan dan polinomial yang dihitung pada langkah sebelumnya, hitung sisa x(p1)/2 modulo fz(x),
  4. Jika x(p1)/2≢±1(modfz(x)), maka FPB yang disebutkan diatas memberikan faktorisasi non-trivial dari fz(x),
  5. Jika tidak, maka semua akar fz(x) adalah residu atau non-residu secara bersamaan dan harus memilih z yang lain.

Jika f(x) habis dibagi oleh setiap polinomial primitif g(x) atas p maka saat menghitung FPB dengan g0(x) dan g1(x) akan diperoleh faktorisasi non-trivial dari fz(x)/gz(x), sehingga algoritma memungkinkan untuk menemukan semua akar polinomial sebarang atas p.

Akar kuadrat modular

Misalkan persamaan x2a(modp) mempunyai anggota β dan β sebagai akarnya. Solusi persamaan ini ekuivalen dengan faktorisasi polinomial f(x)=x2a=(xβ)(x+β) atas p. Dalam masalah kasus istimewa ini, cukup hitung FPB(fz(x);g0(x)) saja. Untuk polinomial tersebut, ada tepat satu dari sifat-sifat yang berlaku sebagai berikut:

  1. FPB sama dengan 1, yang berarti bahwa z+β dan zβ merupakan non-residu kuadratik,
  2. FPB sama dengan fz(x), yang berarti kedua bilangan tersebut merupakan residu kuadratik,
  3. FPB sama dengan (xt), yang berarti tepat salah satu dari bilangan tersebut merupakan residu kuadrat.

Pada kasus ketiga, FPB sama dengan (xzβ) atau (xz+β). Hal ini memungkinkan untuk menulis solusi sebagai β=(tz)(modp).[1]

Contoh

Asumsi bahwa persamaan x25(mod11) dapat diselesaikan. Caranya adalah dengan memfaktorkan f(x)=x25=(xβ)(x+β). Nilai z dapat dibagi menjadi beberapa kasus dengan memisalkannya sebagai berikut:

  1. Misalkan z=3, maka fz(x)=(x3)25=x26x+4. Jadi, FPB(x26x+4;x51)=1. Karena bilangan 3±β merupakan non-residu kuadrat, maka perlu dicari nilai z lain.
  2. Misalkan z=2, maka fz(x)=(x2)25=x24x1. Jadi, FPB(x24x1;x51)x9(mod11). Karena x9=x2β, maka β7(mod11) dan β74(mod11).

Hasil pemeriksaan yang dilakukan secara manual memperlihatkan bahwa 72495(mod11) dan 42165(mod11).

Bukti kebenaran

Algoritma menemukan faktorisasi fz(x) dalam semua kasus, kecuali ketika semua bilangan z+λ1,z+λ2,,z+λn adalah residu kuadrat atau non-residu secara bersamaan. Menurut teori siklotomi,[8] peluang kejadiannya untuk kasus ketika λ1,,λn juga merupakan semua residu atau non-residu secara bersamaan (yaitu, ketika z=0 tidak berhasil) diestimasi sebagai 2k, untuk k adalah jumlah nilai yang berbeda dalam λ1,,λn.[1] Dengan cara ini, bahkan untuk kasus galat k=1 dan f(x)=(xλ)n, maka estimasi peluang galatnya adalah 1/2, dan untuk kasus akar kuadrat modular, probabilitas galat setidaknya bernilai 1/4.

Kompleksitas

Misalkan suatu polinomial merupakan polinomial berderajat n, maka kompleksitas algoritma dapat diturunkan sebagai berikut:

  1. Karena menurut teorema binomial mengatakan bahwa (xz)k=i=0k(ki)(z)kixi, maka dapat dilakukan transisi dari f(x) ke f(xz) dalam waktu O(n2).
  2. Perkalian polinomial dan mengambil sisa dari satu polinomial yang modulo dengan yang lain dapat dilakukan di O(n2). Jadi, perhitungan x2kmodfz(x) dilakukan di O(n2logp).
  3. Eksponensial biner bekerja di O(n2logp).
  4. Mengambil FPB dari dua polinomial melalui algoritma Euklides yang bekerja di O(n2).

Jadi, seluruh prosedur dapat dilakukan di O(n2logp). Dengan menggunakan transformasi Fourier cepat dan algoritma setengah-FPB,[9] maka kompleksitas algoritmanya dapat ditingkatkan menjadi O(nlognlogpn). Untuk kasus akar kuadrat modular, derajatnya adalah n=2, sehingga seluruh kompleksitas algoritma dalam kasus tersebut dibatasi dengan O(logp) per iterasi.[7]

Referensi

  1. 1,0 1,1 1,2 1,3 1,4 1,5 1,6 E. R. Berlekamp. Factoring polynomials over large finite fields. Mathematics of Computation. 1970. Vol. 24 (111). hlm. 713–735. doi:10.1090/S0025-5718-1970-0276200-X.
  2. 2,0 2,1 2,2 2,3 M. Rabin. Probabilistic Algorithms in Finite Fields. SIAM Journal on Computing. 1980. Vol. 9 (2). hlm. 273–280. doi:10.1137/0209024.
  3. Donald E Knuth. The art of computer programming. Vol. 2 Vol. 2. 1998. ISBN 978-0201896848.
  4. Tsz-Wo Sze. On taking square roots without quadratic nonresidues over finite fields. Mathematics of Computation. 2011. Vol. 80 (275). hlm. 1797–1811. doi:10.1090/s0025-5718-2011-02419-1.
  5. R. Peralta. A simple and fast probabilistic algorithm for computing square roots modulo a prime number (Corresp.). IEEE Transactions on Information Theory. November 1986. Vol. 32 (6). hlm. 846–847. doi:10.1109/TIT.1986.1057236.
  6. C Padró, G Sáez. Taking cube roots in Zm. Applied Mathematics Letters. August 2002. Vol. 15 (6). hlm. 703–708. doi:10.1016/s0893-9659(02)00031-9.
  7. 7,0 7,1 7,2 7,3 Alfred J. Menezes, Ian F. Blake, XuHong Gao, Ronald C. Mullin, Scott A. Vanstone. Applications of Finite Fields. Springer US. 1993. ISBN 9780792392828.
  8. Marshall Hall. Combinatorial Theory. John Wiley & Sons. 1998. ISBN 9780471315186.
  9. Aho, Alfred V. The design and analysis of computer algorithms. Addison-Wesley Pub. Co. 1974. ISBN 0201000296.

Sumber dan atribusi

Konten artikel ini diadaptasi dari Wikipedia bahasa Indonesia, revisi 25986958 (2024-07-03T05:23:51Z), yang tersedia berdasarkan lisensi Creative Commons Atribusi-BerbagiSerupa (CC BY-SA). Gambar pada artikel ini bersumber dari Wikimedia Commons dan mengikuti ketentuan lisensi masing-masing berkas. Mohon gunakan konten dan media secara bijak serta sesuai dengan ketentuan lisensi yang berlaku.