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(x−z)=(x−λ1−z)(x−λ2−z)⋯(x−λn−z), 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(p−1)/2−1) jika λ adalah residu kuadrat modulo p,
  3. Pembagian monomial g1(x)=(x(p−1)/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(x−z),
  2. Hitung sisa x,x2,x22,x23,x24,…,x2⌊log2p⌋ 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(p−1)/2 modulo fz(x),
  4. Jika x(p−1)/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 x2≡a(modp) mempunyai anggota β dan −β sebagai akarnya. Solusi persamaan ini ekuivalen dengan faktorisasi polinomial f(x)=x2−a=(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 (x−t), yang berarti tepat salah satu dari bilangan tersebut merupakan residu kuadrat.

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

Contoh

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

  1. Misalkan z=3, maka fz(x)=(x−3)2−5=x2−6x+4. Jadi, FPB⁡(x2−6x+4;x5−1)=1. Karena bilangan 3±β merupakan non-residu kuadrat, maka perlu dicari nilai z lain.
  2. Misalkan z=2, maka fz(x)=(x−2)2−5=x2−4x−1. Jadi, FPB⁡(x2−4x−1;x5−1)≡x−9(mod11). Karena x−9=x−2−β, maka β≡7(mod11) dan −β≡−7≡4(mod11).

Hasil pemeriksaan yang dilakukan secara manual memperlihatkan bahwa 72≡49≡5(mod11) dan 42≡16≡5(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 2−k, 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 (x−z)k=∑i=0k(ki)(−z)k−ixi, maka dapat dilakukan transisi dari f(x) ke f(x−z) 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(n2log⁡p).
  3. Eksponensial biner bekerja di O(n2log⁡p).
  4. Mengambil FPB dari dua polinomial melalui algoritma Euklides yang bekerja di O(n2).

Jadi, seluruh prosedur dapat dilakukan di O(n2log⁡p). Dengan menggunakan transformasi Fourier cepat dan algoritma setengah-FPB,[9] maka kompleksitas algoritmanya dapat ditingkatkan menjadi O(nlog⁡nlog⁡pn). Untuk kasus akar kuadrat modular, derajatnya adalah n=2, sehingga seluruh kompleksitas algoritma dalam kasus tersebut dibatasi dengan O(log⁡p) 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.