Anda di halaman 1dari 9

Simulasi Faktorisasi Bilangan dengan Algoritma Shor pada Komputer Paralel

Andria Arisal*

Abstrak
Telah dikembangkan suatu simulator komputer kuantum untuk memfaktorkan suatu bilangan bulat menjadi dua faktornya dengan menggunakan algoritma Shor pada komputer paralel. Pengembangan dilakukan dengan menggunakan bahasa pemrograman ANSI C pada sistem operasi Linux. Aplikasi dinamakan SimKoKu (Simulator Komputer Kuantum). Untuk mengurangi waktu eksekusi dalam pemfaktoran bilangan, simulasi ini diimplementasikan pada komputer paralel dengan MPI (Message Passing Interface) sebagai antarmuka paralelisasinya. Dengan teknik ini, SimKoKu berhasil mengurangi waktu faktorisasi, walaupun masih memiliki kompleksitas dalam orde eksponensial, yaitu sebesar O(22n). Kata kunci: SimKoKu, simulasi, komputasi kuantum, algoritma Shor, komputer paralel, MPI

Abstract
A quantum computation simulator software has been developed to factorize an integer become its two factors using Shors algorithm on a parallel computer system. Developed with ANSI C language on Linux operating system, this simulator is called SimKoKu (Quantum Computer Simulator). In order to decrease its execution time in factorizing an integer, this simulation is implemented on a parallel computer system with MPI (Message Passing Interface) as its parallelization interface. SimKoKu has succeeded on reducing its factorization time although its complexity is still in an exponential order with the value of O(22n). Keywords: SimKoKu, simulation, quantum computation, Shors algorithm, parallel computer, MPI

(*) Kandidat Peneliti pada Pusat Penelitian Informatika, Lembaga Ilmu Pengetahuan Indonesia. Lt. 3 Gd. 20 Komp. LIPI, Jl. Cisitu, Sangkuriang, Bandung 40135 andria.arisal@informatika.lipi.go.id

1. Pendahuluan
Perkembangan ilmu komputer dan fisika mendorong terbentuknya suatu metode komputasi baru yang dikenal dengan komputasi kuantum. Metode komputasi ini mengadaptasi sifat-sifat fisis partikel sebagai representasi informasi terkecilnya. Penggunaan sifat kuantum partikel tersebut mengakibatkan satu penyimpan informasi pada metode komputasi ini (disebut dengan qubit quantum bit) tidak lagi menyimpan salah satu keadaan (0 atau 1), melainkan dapat juga menyimpan superposisi dari kedua keadaan tersebut (Shor, 1994). Dengan memanfaatkan metode komputasi ini telah dikembangkan beberapa algoritma. Salah satu algoritma yang terkenal ialah algoritma pemfaktoran bilangan (algoritma Shor), yang dapat mengurangi kompleksitas pemfaktoran bilangan menjadi O((log n)2 log log n) pada komputer kuantum dan O(log n) pada komputer klasik (Hayward, 1999). Kompleksitas yang rendah tersebut memberikan ancaman terhadap hampir semua teknik penyandian yang digunakan saat ini, Salah satu contohnya RSA, karena teknik ini bergantung pada kesulitan pemfaktoran bilangan. Selain itu perkembangan metoda komputasi kuantum dan perangkat komputer kuantum memberikan peluang untuk pemahaman dan pensimulasian fenomena fisis kompleks seperti turbulensi, chaos, dan mekanika kuantum. Tetapi pengaplikasian metoda ini masih dalam penelitian, maka pengenalannya dilakukan dengan menggunakan simulasi pada komputer klasik yang dikenal juga dengan arsitektur Van Newmann. Pensimulasian tersebut mengakibatkan peningkatan kompleksitas dan penggunaan sumber daya yang besar. Oleh karena itu, salah satu cara untuk menyederhanakannya adalah dengan mendistribusikan proses kepada beberapa komputer untuk dieksekusi secara paralel. Dalam makalah ini akan dibahas mengenai implementasi algoritma Shor pada komputer paralel dengan menggunakan antarmuka MPI (Message Passing Interface).

2. Dasar Teori
2.1 Komputasi Kuantum Dengan pendekatan fisika kuantum pada teknologi komputer, representasi informasi, data, dan komputasi juga dapat direpresentasikan dalam keadaan kuantum yang

memiliki sifat-sifat entanglement (korelasi non lokal antar sistem kuantum), keacakan, dan tidak dapat digandakan. Metode ini dikenal dengan komputasi kuantum. Penyimpanan informasi dan pengolahan informasi pada komputasi kuantum direpresentasikan oleh qubit (quantumbit), sebagai superposisi dari keadaan kuantum, misalkan spin ke atas dan spin ke bawah. Spin ke atas mendeskripsikan perputaran elektron searah jarum jam, dapat dikodekan sebagai |1>. Sedangkan spin ke bawah mendeskripsikan perputaran elektron berlawanan arah jarum jam, dapat dikodekan sebagai |0>. Berdasarkan mekanika kuantum, secara alami kedua keadaan tersebut tidak dapat ditentukan secara pasti, sehingga dalam keadaan dasar terdapat superposisi dari kedua keadaan tersebut. Dengan demikian n qubit (yang bergabung membentuk qureg--quantum register berdasarkan entanglement) dalam satu waktu dapat meyimpan 2n informasi. Hal ini menunjukkan kelebihan qubit dibandingkan n bit klasik yang hanya dapat menyimpan 1 informasi pada satu waktu. Hal ini terjadi karena sesungguhnya informasi pada sistem komputasi kuantum tidak disimpan pada objeknya melainkan pada hubungan antara objek dan sistemnya. Representasi informasi untuk satu qubit dapat dituliskan sebagai |x> = w0|x0> + w1|x1> dan untuk qureg dengan n qubit dapat ditulis sebagai: |x> =
n 1

w
n =0

| xn >

(1)

dimana w adalah kemungkinan menemukan keadaan kuantum x, yang disederhanakan menjadi suatu bilangan kompleks. Sedangkan representasi informasi untuk register kuantum dapat dituliskan sebagai |x> =
2 n 1 n =0

| x n > . Untuk memastikan ditemukannya

salah satu keadaan kuantum yang ada, maka dilakukan normalisasi dari setiap peluang memperoleh keadaan kuantum sehingga menjadi
2 n 1 n =0

2 n

=1

(2)

Dengan adanya superposisi dan entanglement tadi, maka komputasi kuantum juga dapat menyederhanakan pengolahan pengulangan fungsi melalui paralelisasi kuantum. Sehingga pada pengolahan 2n keadaan pada qureg n qubit hanya membutuhkan satu kali iterasi, sedangkan pengolahan 2n keadaan pada komputasi klasik membutuhkan 2n iterasi.

2.2

Algoritma Shor

Algoritma Shor diambil dari teorema Shor dalam pencarian faktor bilangan. Teorema Shor dapat dijelaskan sebagai berikut, misalkan N sebuah masukan bilangan komposit (bilangan yang terbentuk dari perkalian dua bilangan lain) dengan faktor prima yang terdiri dari dua atau lebih bilangan prima. Misalkan n adalah sebuah bilangan lain yang dipilih secara acak dimana 1 n N. Jika n dan N relatif prima, dan misalkan r adalah periode dari fungsi perpangkatan modulo fN(x,n) = nx mod N jika r genap dan nr/2 1 mod N, maka N = PQ dimana P,Q adalah faktor persekutuan terbesar dari N, nr/2 1 atau dapat dituliskan P,Q = GCD(N, nr/2 1) (Shor, 1994). Nilai kemungkinan dari teorema tersebut adalah Prob[{GCD(n,N)=1} U {r genap} U { nr/2 1 mod N }] (2 log N)-1 (Muthukrishnan, 1999) Secara umum langkah-langkah algoritma Shor jika diberikan suatu bilangan N yang akan difaktorkan, dapat dituliskan sebagai berikut; karakteristik bilangan masukan N ditentukan terlebih dahulu apakah termasuk kelas bilangan genap, prima, atau pangkat prima. Kemudian ditentukan sebuah bilangan q = 2L sehingga N2 q 2N2 dan bilangan x secara acak yang koprima dengan N. Dari ketiga bilangan yang diperoleh, diciptakan dua register kuantum yang dapat ditulis dalam notasi ket sebagai |A, B >. Register-1 harus memiliki bit yang cukup untuk merepresentasikan bilangan sebesar q-1. Register-2 harus memiliki bit yang cukup untuk merepresentasikan bilangan sebesar N-1. Kedua register kuantum diinisialisai, sehingga keadaan kuantum pada A menjadi superposisi dari 0 sampai q-1, sedangkan B diinisialisasi menjadi 0. Keadaan kuantumnya menjadi
|U> =
1
q 1

| a ,0 > q
a =0

(3)

Selanjutnya transformasi fungsi xa mod N diaplikasikan untuk setiap a yang disimpan pada A, dan hasilnya disimpan pada B. Karena paraleisme kuantum, langkah ini dapat dihitung dalam satu langkah, karena komputer kuantum hanya perlu menghitung x|a> mod N, dimana |a> adalah superposisi dari semua bilangan dari 0 dampai q-1. Keadaan kuantum pada register kuantum menjadi
|F> =
q 1

| a, x q
a =0

mod N >

(4)

Register B diukur dan untuk mengamati nilai k. Proses ini akan menyebabkan register A menjadi superposisi yang sama dari setiap nilai a dari 0 sampai q-1, sedemikian sehingga k = xa mod N, yang menyebabkan keadaan kuantum menjadi 1 A

a 'A

| a' , k >

(5)

dimana A adalah himpunan a sedemikian sehingga k = xa mod N dan A adalah jumlah anggota himpunan A. Nilai DFTq dari register A dihitung dengan algoritma DFTq yang mengubah mengubah |a> menjadi
| a > 1
q 1

exp(2iac / q ) | c > q
c =0

(6)

sehingga ini mengubah keadaan kuantum pada register kuantum menjadi

1 A

a ' A

1 q

exp(2ia' c / q) | c, k >
c =0

q 1

(7)

Setelah register A ditransformasikan (a adalah nilai qubit baru setelah transformasi), keadaan pada register A diukur sehingga dapat memberikan suatu nilai M. Nilai M ini berpeluang besar sama dengan m[q/r], dengan m = 0, 1, , r-1, dan r ialah periode yang diharapkan. Berdasarkan M dan q yang telah diperoleh.nilai r dapat ditentukan. Setelah r ditemukan, maka faktor dari N dapat ditentukan dengan menentukan nilai dari GCD(xr/2+1, N) dan GCD(xr/2-1, N). Algoritma selsesai jika faktor dari N sudah ditemukan. Jika faktor dari N tidak ditemukan, maka algoritma diulangi dari inisialisasi ulang register kuantum (Hayward, 1999). Algoritma ini membutuhkan setidaknya r periode dalam ranah f (mis: q r2) untuk menemukan periode r. Dalam kasus fN, tampak bahwa r N, maka untuk menerapkan algoritma Shor dipilih nilai q N2.
2.3 Komputer Paralel

Komputer paralel adalah sekumpulan perangkat pemroses yang berinteraksi untuk menyelesaikan suatu persoalan tertentu. Lingkungan komputer paralel yang sederhana dan banyak digunakan adalah LAM-MPI (Local Area Multicomputer-Message Passing Interface). LAM-MPI menggunakan arsitektur antarmuka komunikasi message passing. Bentuk komunikasi yang dapat dikembangkan adalah komunikasi titik ke titik dan komunikasi kolektif. Selain itu, LAM menggunakan rutin komunikasi jaringan LAN (Local Area Network), sehingga dapat digunakan dengan lebih mudah.
5

3. Implementasi dan Pengujian


3.1 Implementasi

Aplikasi simulator komputer kuantum untuk pemfaktoran bilangan dengan algoritma Shor dikembangkan dengan menggunakan bahasa pemrograman ANSI C pada lingkungan operasi Linux dan antar muka paralelisasi LAM-MPI. Aplikasi ini dinamakan
SimKoKu (Simulator Komputer Kuantum).

Dalam pensimulasian komputer kuantum pada komputer klasik, qubit dan qureg sebagai representasi informasi terkecil pada komputer kuantum disimulasikan sebagai vektor bilangan kompleks N dimensi berdasarkan persamaan(1). Nilai N adalah jumlah qubit, yang diambil dari jumlah bit yang dibutuhkan untuk merepresentasikan bilangan q-1 dan n-1 tadi dalam bentuk biner-nya. Pengolahan informasi dilakukan secara klasik, dan pengambilan informasi dilakukan secara acak berdasarkan peluang memperoleh keadaan kuantum sesuai dengan persamaan (2), (3), (4), (5), (6), dan (7). Paralelisasi kuantum dilakukan dengan pengolahan pada komputer paralel. Modifikasi paralelisasi dilakukan dengan memecah kalang (loop) kedua pada pengambilan keadaan kuantum dan pemrosesan qureg dilakukan secara paralel dengan komunikasi kolektif (scatter-gather) pada antarmuka message passing.
3.2 Hasil Pengujian

Untuk menguji SimKoKu, maka dilakukan proses sebagai berikut. SimKoKu menerima sebuah masukan bilangan bulat (dengan batasan algoritma Shor; tidak boleh genap, prima, atau pangkat prima) sehingga menghasilkan dua faktor dari bilangan yang dimasukkan. Lingkungan pengujian adalah komputer pentium III 1000 MHz, 128 MB RAM dengan sistem operasi Linux Red Hat 7.2. Pengujian dilakukan dengan memberikan masukan yang salah (diluar batasan algoritma Shor) sehingga dapat memberikan pesan kesalahan sesuai dengan yang diharapkan. Pengujian juga dilakukan dengan masukan yang benar yaitu 15, 21, 51, 105, 215, 493, 1001, 1593, dan 2025 yang masing-masing direpresentasikan oleh 4 sampai 11 bit atau qubit dan dengan jumlah komputer yang berbeda (1, 2, 4, dan 8 komputer). Grafik waktu eksekusi rata-rata untuk pengujian dengan bilangan masukan dan jumlah paralelisasi yang telah ditetapkan disajikan pada Gambar 1.
6

waktu eksekusi rata-rata satu iterasi - bilangan SimKoKu


60 50 waktu eksekusi (s) 40 30 20 10 0 15 21 51 105 215 493 1001 1593 2025 bilangan masukan
2 komputer 4 komputer

8 komputer
sekuensial

Gambar 1 Waktu satu iterasi rata-rata terhadap bilangan masukan

4. Analisis Hasil Pengujian


Dari Gambar 1, dapat dilihat bahwa hasil pengujian dan grafik dapat menunjukkan peningkatan kecepatan eksekusi yang signifikan untuk proses pemfaktoran bilangan setelah paralelisasi jika dibandingkan dengan pemrosesan secara sequensial (satu komputer). Akan tetapi, hasil pengujian tidak berhasil menunjukkan pengaruh jumlah komputer dalam paralelisasi terhadap waktu eksekusi. Hal ini dapat disebabkan oleh dua faktor, yaitu: efektifitas pendistribusian data untuk dikomputasi secara paralel. Hal ini dapat dilihat dari hasil pengujian yang tidak menunjukkan perbedaan yang signifikan antara kecepatan eksekusi setelah paralelisasi untuk bilangan kecil (ukuran qureg kecil), sedangkan untuk bilangan yang lebih besar (qureg besar), terlihat bahwa jumlah komputer yang digunakan sedikit mempengaruhi kecepatan eksekusi. Faktor lain ialah keacakan dalam pencarian faktor. Penetapan x dan perioda fungsi perpangkatan modulo yang acak, menyebabkan jumlah iterasi yang diperlukan untuk menemukan faktor dari bilangan masukan tidak tetap. Hal ini berakibat menurunya waktu eksekusi rata-rata pemfaktoran untuk berbagai bilangan. Jika waktu eksekusi untuk setiap bilangan masukan dibandingkan dengan yang lain (mis: waktu eksekusi 21 dan 15, atau 51 dan 21, atau pasangan selanjutnya) terdapat peningkatan sebanyak 3-10 kali untuk setiap penambahan satu qubit yang digunakan dalam merepresentasikan bilangan masukan yang akan difaktorkan. Peningkatan dengan faktor pengali yang cukup besar ini disebabkan karena sifat keacakan dari pencarian faktor yang dijelaskan sebelumnya. Sehingga pada Gambar 1 terlihat peningkatan secara gradual pada pemfaktoran 15 sampai 1595. Akan tetapi kecepatan eksekusi antara 1593 dan 2025 tidak

terjadi peningkatan, hal ini disebabkan karena jumlah qubit untuk merepresentasikan kedua nilai tersebut adalah sama yaitu 11 qubit. Perangkat lunak SimKoKu tidak dapat mengelola bilangan masukan lebih dari 2047 (211). Hal ini disebabkan karena keterbatasan jumlah sumber daya (memori) yang dapat dialokasikan untuk menyimpan keadaan register kuantum1 (yang merepresentasikan 22*11 keadaan) dan register kuantum2 (yang merepresentasikan 211 keadaan). Pengujian juga menunjukkan sifat keacakan dari metode komputasi kuantum. Beberapa contoh kasus uji, keacakan yang terjadi dalam perangkat lunak adalah pemfaktoran suatu bilangan dapat membangkitkan bilangan relatif prima yang berbeda dan pengukuran register kuantum setelah transformasi fourier disktir kuantum dapat memberikan hasil yang bebeda pada tiap pengukuran, karena faktor bilangan pada algoritma Shor ditentukan dari fungsi GCD(xr/2 -1 mod N, xr/2+1 mod N) dimana x adalah bilangan relatif prima yang dibangkitkan dan r adalah perioda dari fungsi perpangkatan modulo, maka karena dua hal diatas memegang peranan yang penting dalam penetapan faktor dari bilangan masukan. Sebagai akibat dari keacakan tersebut, maka pemfaktoran suatu bilangan masukan dapat langsung memberikan hasil pada satu iterasi pada satu pengujian dan membutuhkan beberapa kali perulangan atau bahkan tidak menemukan faktornya (setelah lima kali iterasi) pada pengujian lain (pengujian untuk bilangan 51 pada 2 komputer). Selain itu, keacakan tadi juga mengakibatkan pemfaktoran bilangan yang memiliki beberapa faktor berbeda memberikan hasil yang tidak selalu sama pada setiap pengujian (pengujian bilangan 2025 pada 4 komputer yang menghasilkan faktor {(9,255), (27,75), (45,45), (25,81), (135,15)}). Analisis yang dilakukan terhadap algoritma Shor yang dikembangkan untuk dapat disimulasikan pada komputer paralel menunjukkan bahwa terdapat beberapa algoritma dengan kompleksitas eksponensial. Algoritma dengan kompleksitas eksponensial tersebut adalah pada fungsi pengukuran nilai desimal yang direpresentasikan register kuantum, yaitu mengambil nilai yang direpresentasikan oleh keadaan-keadaan kuantum yang membentuk register kuantum dan menyusunnya menjadi suatu bilangan desimal yang dilakukan secara acak sesuai dengan persamaan (5) adalah O(2n). Fungsi lainnya adalah normalisasi keadaan kuantum, yaitu menetapkan jumlah peluang keadaan kuantum dalam register kuantum sama dengan satu sesuai dengan persamaan (2) dengan kompleksitas O(2n) dan perhitungan transformasi fourier diskrit kuantum untuk menetapkan periode fungsi perpangkatan modulo sesuai dengan persamaan (6) dan (7) dengan kompleksitas O(2n.2n/M), dimana n adalah jumlah bit yang dibutuhkan untuk merepresentasikan nilai
8

masukan dan M adalah jumlah node yang digunakan. Sehingga kompleksitas algoritma SimKoKu adalah O(22n). Data pengujian menunjukkan bahwa berdasarkan rata-rata terdapat peningkatan waktu sebanyak empat kali pada setiap masukan dengan panambahan satu bit. Berdasarkan perhitungan dapat disimpulkan bahwa kompleksitas waktu eksekusi untuk satu iterasi algoritma Shor pada SimKoKu adalah O(22n), yang sesuai dengan perhitungan secara matematis yang dilakukan terhadap algoritmanya.

5. Kesimpulan
Dapat disimpulkan bahwa pemfaktoran bilangan dengan algoritma Shor pada komputer klasik dengan mensimulasikannya untuk dapat mengakomodasi arsitektur komputer klasik membutuhkan sumber daya yang besar dan menyebabkan peningkatan kompleksitas hingga menjadi O(22n). Salah satu usaha untuk mengurangi kompleksitas ialah dengan melakukan paralelisasi proses sehingga dapat meningkatkan kecepatan eksekusi dibandingkan dengan pengeksekusian tanpa paralelisasi. Paralelisasi terlihat cukup mengurangi waktu eksekusi pemfaktoran bilangan, akan tetapi karena keterbatasan sumber daya (memori) mengakibatkan adanya batasan masukan yang cukup kecil yaitu 2047. Pemfaktoran bilangan yang kecil tidak berhasil menunjukkan korelasi antara jumlah komputer yang digunakan pada paralelisasi dengan waktu eksekusi karena terjadi ketidakefisienan pendistribusian data yang akan diproses secara paralel. Oleh sebab itu, pengembangan berikutnya adalah dengan peningkatan sumber daya (memori) yang tersedia, pembuatan struktur data yang lebih baik, dan melakukan paralelisasi data.

6. Daftar Pustaka
Hayward, Matthew. 1999. Quantum Computer and Shor Algorithm. http://www.imsa.edu/~matth/cs299/ Muthukrishnan, Ashrok. 1999. Quantum Factoring and Search Alhorithm. Quantum Information Seminar, Rochester Center for Quatum Information. Shor, Peter W. 1994. Polynomial-Time Agorithms for Prime Factorization and Descrete Logarithms on a Quantum Computer. Proceedings of the 35th Annual Symposium on Foundations of Computer Science, IEEE Computer Society Press Los Alamitos, CA.
9

Anda mungkin juga menyukai