Open navigation menu
Close suggestions
Search
Search
en
Change Language
Upload
Sign in
Sign in
Download free for days
0 ratings
0% found this document useful (0 votes)
486 views
50 pages
Bab 5
Algoritma dan Bilangan Bulat
Uploaded by
yuegi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content,
claim it here
.
Available Formats
Download as PDF or read online on Scribd
Download
Save
Save Bab 5 For Later
Share
0%
0% found this document useful, undefined
0%
, undefined
Print
Embed
Report
0 ratings
0% found this document useful (0 votes)
486 views
50 pages
Bab 5
Algoritma dan Bilangan Bulat
Uploaded by
yuegi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content,
claim it here
.
Available Formats
Download as PDF or read online on Scribd
Carousel Previous
Carousel Next
Download
Save
Save Bab 5 For Later
Share
0%
0% found this document useful, undefined
0%
, undefined
Print
Embed
Report
Download
Save Bab 5 For Later
You are on page 1
/ 50
Search
Fullscreen
Algoritma dan Bilangan Bulat Bulat air karena pembuluh,-bulat kata karena mufakat. (Pepatah adat Minangkabau) Bab 5 ini akan membahas dua pokok bahasan: algoritma dan bilangan bulat (integer). Kedua pokok bahasan ini disatukan di dalam satu bab karena dalam pokok bahasan bilangan bulat kita akan mulai menggunakan terminologi algoritma untuk mendeskripsikan langkah-langkah penyelesaian masalah dengan suatu metode. Algoritma menjadi penting karena ia merupakan jantung ilmu komputer. Banyak bahasan di dalam cabang-cabang ilmu komputer yang diacu dengan terminologi algoritma. Di dalam bab ini akan dijelaskan definisi algoritma, notasi yang digunakan, dan beberapa contoh algoritma dasar. Pokok bahasan selanjutnya adalah bilangan bulat. Bilangan bulat atau integer memainkan peranan yang penting di dalam matematika diskrit. Sebagian besar (kalau tidak dapat dikatakan seluruhnya) pokok bahasan dalam matematika diskrit melibatkan bilangan bulat. Bahkan, cabang matematika yang bernama teori bilangan (number theory) mengkaji secara khusus bilangan bulat dan sifat- Bab 5 Algoritma dan Bilangan Bulat 475sifatnya. Bilangan bulat sendiri merupakan objek diskrit, ini berlawanan denigait bilangan riil yang merupakan objek yang bersifat malar (continue). 5.1 Algoritma Sebuah masalah dipecahkan dengan mendeksripsikan langkah-langkah penyelesaiannya. Misalnya masalah pengurutan (sorting) berikut: diberikan sejumlah bilangan bulat, tuliskan semua bilangan bulat tersebut dalam urutan yang menaik. Metode untuk pengurutan data diskrit sudah banyak ditemukan orang. Metode pengurutan sering digambarkan dalam sejumlah langkah terbatas yang mengarah pada solusi permasalahan. Urutan langkah-langkah penyelesaian masalah ini dinamakan algoritma. Ditinjau dari asal usul kata, kata algoritma sendiri mempunyai sejarah yang aneh. Kata ini tidak muncul di dalam kamus Webster sampai akhir tahun 1957. Orang hanya menemukan kata algorism yang berarti proses menghitung dengan angka Arab [KNU73]. Anda dikatakan algorist jika anda menggunakan angka Arab. Para ahli bahasa berusaha menemukan asal kata algorism ini namun hasilnya kurang memuaskan. Akhimya para abli-sejarah matematika menemukan asal mula kata tersebut. Kata algorism berasal dari nama penulis buku Arab yang terkenal, yaitu Abu Ja’far Muhammad ibnu Musa al-Khuwarizmi (al-Khuwarizmi dibaca orang Barat menjadi algorism). Al-Khuwarizmi menulis buku yang berjudul Kitab al jabar wal-mugabala, yang artinya “Buku pemugaran dan pengurangan” (The book of restoration and reduction). Dari judul buku itu kita juga memperoleh akar kata “aljabar” (algebra). Perubahan dari kata algorism menjadi algorithm muncul karena kata algorism sering dikelirukan dengan arithmetic, sehingga akhiran -sm berubah menjadi -thm. Karena perhitungan dengan angka Arab sudah menjadi hal yang sudah biasa/lumrah, maka lambat laun kata algorithm berangsur-angsur dipakai sebagai metode perhitungan (komputasi) secara umum, sehingga kehilangan makna aslinya [PAR95]. Dalam bahasa Indonesia, kata algorithm diserap menjadi algoritma. Meskipun algoritma sering dikaitkan dengan ilmu komputer, namun sesungguhnya dalam kehidupan sehari-haripun banyak terdapat proses yang digambarkan dalam suatu algoritma. Cara-cara membuat kue atau masakan, misalnya dinyatakan dalam suatu resep. Misalnya resep membuat masakan Rendang Padang adalah contoh sebuah algoritma: 1. Potong daging sapi menjadi potongan-potongan dadu atau sesuai selera. 2, Haluskan bumbu berupa bawang merah, bawang putih, cabe merah, kunyit, laos, dan jahe. 176 Matematika Diskrit3. Masukkan seluruh bumbu tadi ke dalam santan. Tambahkan dua buah dom Jeruk, satu lembar daun kunyit, dan sebatang serai. 4. Masak santan di atas api sedang, Aduk terus hingga santan mendidih. Masukkan daging sapi, dan kevilkan api. Sekali-sekali santan diaduk agar tidak pecah. 6, Jika sudah timbul minyak dan santan sudah kering, matikan api. Rendang siap dihidangkan. w Contoh-contoh algoritma yang lain dalam kehidupan sehari-hari misalnya pola pakaian, panduan praktikum, papan not balok, dan pengisian voucher ditunjukkan pada Tabel 5.1. Tabel 5.1 Contoh-contoh Algoritma dalam Kehidupan Sehari-hari. 1, Membuat kue resep kue Masukkkan telur ke dalam wajan, kocok sampai mengembang 2. Membuat pakaian pola pakaian | gunting kain dari pinggir kiri bawah ke arah kanan_sejauh 5 om 3. Praktikum reaksi kimia panduan campurkan 10 ml H,SO4 dengan 15 praktikum ml NaOH 4, Merakit mobil panduan Sambungkan, komponen JA dengan merakit komponen B 3) Regiatan sehari-hari jadwal harian—} pukul 15.00 : tidur Siang, pukul 16.00 : membuat PR 6, Memainkan musik papan not balok | not balok 7. Mengisi voucher karta panduan tekan nomor 888 prabayar telepon gengeam | pengisian masukkan nomor voucher 14 digit (HP) 5.2 Notasi Untuk Algoritma Algoritma dapat dituliskan dalam berbagai notasi, misalnya dalam notasi kalimat- kalimat deksriptif seperti contoh resep masakan Rendang Padang di atas. Dengan notasi bergaya kalimat ini, deskripsi setiap langkah dijelaskan dengan bahasa sehari-hari secara gamblang. Setiap langkah biasanya diawali dengan kata ‘kerja seperti ‘baca’, “hitung’, ‘masukkan’, ‘bagi’, ‘ganti’, dan sebagainya, sedangkan pernyataan bersyarat dinyatakan dengan ‘jika ... maka ...” Sebagai contoh pertama, kita akan menuliskan algoritma untuk mencari elemen terbesar (maximum) dari sebuah himpunan yang beranggotakan 1 buah bilangan bulat. Bilangan-bilangan bulat tersebut dinyatakan sebagai a), a2, ..., dy). Elemen terbesar akan disimpan di dalam peubah (variable) yang bemama maks. Bab 5 Algoritma dan Bilangan Bulat 477Algoritma Cari Elemen Terbesar = Asumsikan a; sebagai elemen terbesar sementara. Simpan a, ke dalam maks. tale Bandingkan maks dengan elemen ap. Jika a lebih besar dari maks, maka nilai maks diganti dengan ay. 3. Ulangi langkah 2 untuk elemen-elemen berikutnya (3, du, «1.5 4): 4. Berhenti jika tidak ada lagi elemen yang dibandingkan. Dalam hal ini, maks berisi nilai dari elemen terbesar, Notasi algoritma dengan kalimat deskriptif bagus untuk algoritma yang pendek, namun untuk masalah yang algoritmanya besar, notasi ini tidak mangkus. Selain itu, notasi kalimat deskriptif kadang-kadang dianggap kurang bisa menjelaskan sebuah algoritma. Selain dengan notasi deksriptif, algoritma juga dapat digambarkan dalam notasi bahasa komputer (lebih tepatnya bahasa pemrograman), misalnya dalam bahasa Pascal atau Bahasa C. Dalam Bahasa Pascal, algoritma mencari elemen terbesar ditulis seperti pada Algoritma 5.1. procedure Carizlementerbesar(a : array integer; n : integer; var maks ; integer); { Mencari elemen terbesar di dalam array a[1..n]. Elemen terbesar ak Gisimpan di dalam maks. array integer adalah an array na de didefinisikan di dalam pr ran pi e Une siNmaks = 1000; ¢ w ; Me steger; bet all: 2 ton do Tegal sina chen make := a{il; end; Algoritma 5.1 Program Pascal untuk mencari elemen terbesar, Sayangnya, sctiap bahasa komputer memiliki aturan sintaks yang rumit yang membuat algoritma tersebut menjadi lebih sulit dipahami. Padahal, sebuah algoritma pada hakekatnya berisi abtraksi dari model penyelesaian masalah, schingga algoritma scharusnya dibebaskan dari hal-hal teknis yang tidak perlu (misalnya tanda titik koma pada akhir setiap pernyataan, format masukan dan keluaran, dan lain-lain). Hal ini diperumit oleh kenyataan bahwa saat ini terdapat puluhan bahasa komputer, setiap bahasa tentu mempunyai aturan sintaks yang berbeda-beda. 178 Matematika DiskritPara iImuwan komputer lebih menyukai menuliskan algoritma dalam notasi yang lebih praktis, yaitu notasi pseudo-code. Pseudo-code (pseudo artinya semu atau tidak sebenamya) adalah notasi yang menyerupai_ notasi bahasa pemrograman tingkat tinggi, khususnya Bahasa Pasca/ dan C. Hasil pengamatan memperlihatkan bahwa bahasa pemrograman umumnya mempunyai notasi yang hampir mirip untuk beberapa instruksi, seperti notasi if-then-else, while-do, repeat-until, read, write, dan sebagainya. Berdasarkan pengamatan tersebut, maka beberapa penulis buku algoritma, termasuk penulis buku ini, mendefinisikan notasi algoritma yang disebut pseudo-code itu. Tidak seperti bahasa pemrograman yang direpotkan dengan tanda titik koma (seinicolon), indeks, format keluaran, kata-kata khusus, dan sebagainya, sembarang versi pseudo-code dapat diterima asalkan perintahnya tidak membingungkan pembaca. Keuntungan menggunakan notasi pseudo-code adalah kemudahan mengkonyersinya—lebih tepat disebut mentranslasi— ke notasi bahasa pemrograman, karena terdapat korespondensi antara setiap pseudocode dengan notasi bahasa pemrograman. Korespondensi ini dapat diwujudkan dengan tabel translasi dari notasi algoritmik ke notasi bahasa pemrograman apa pun, Pseudo-code yang digunakan di dalam buku ini diadopsi dari Bahasa Pascal, namun tidak benar-benar mematuhi semua sintaks Pascal. Dengan menggunakan notasi pseudo-code, algoritma mencari elemen terbesar ditulis dengan notasi psendo- code seperti ditunjukkan pada Algoritma 5.2. \GaE Lol lager) 1 @q. EBlemen Deklarasi i: integer aagoritmas maks < a; for i € 2 ton do ff a; > maks then maks <- ai en endfor Algoritma 5.2. Algoritma mencari elemen (erbesar dalam notasi pseudo-code, Kata-kata yang digarisbawahi menyatakan kata kunci (keywords) yang nantinya berpadanan dengan kata kunci pada bahasa komputer yang dipilih untuk mentranslasikan algoritma tersebul. Kalimat yang diapit dengan pasangan kurung kurawal ({ dan }) menyatakan komentar. Komentar berguna untuk lebih memperjelas instruksi yang dituliskan. Peubah lokal yang digunakan di dalam algoritma dituliskan Bab5 Algoritma dan Bilangan Bulat 179pada bagian Deklarasi, sedangkan langkah-langkah penyelesian masalah dinya KE di bagian Algoritma. Data masukan untuk algoritma dituliskan setelah kata input, sedangkan keluaran algoritma dituliskan sesudah kata output, Jika suatu peubah berfungsi sebagai masukan dan keluaran, maka peubah tersebut dituliskan seudah kata input/output. Karakter “<—” menyatakan bahwa nilai di sebelah kanannya diiisikan ke dalam peubah di sebelah kirinya, 5.3. Beberapa Contoh Algoritma Di bawah ini disajikan beberapa contoh algoritma, Algoritma periama mempertukarkan nilai dari dua buah peubah. Algoritma kedua mencari elemen tertentu di antara sekumpulan nilai bilangan bulat. Sedangkan algoritma ketiga adalah algoritma untuk mengurutkan sekumpulan bilangan bulat. Algoritma mempertukarkan nilai dari dua buah peubah. Diberikan dua buah peubah, x dan y. Nilai x dan y dipertukarkan sehingga x akan berisi nilai y, sedangkan y akan berisi nilai x yang lama. Misalnya, sebelum pertukaran setelah pertukaran, 1 Dalafi Operas pertukaran iniy kifa membutuhkan’ sebuah peuball bantu, remp, sebagai tempat menampung sementara nilai dari~salah satu peubah (x atau y), Algoritma pertukaran hilai tersebut ditunjukkan oleh Algoritma 5.3. = Bh Rts a a ET ( Nempertukarkan nilai x dan y Nasukan: x dan y Keluaran: x dan y Deklarasi temp : integer Algoritma: tem « x xe y y © temp Algoritma 5.3. Algoritma mempertukerkan nilai dari dua buah peubah. Algoritma mencari nilai tertentu di dalam himpunan elemen. Diberikan » buah bilangan bulat yang dinyatakan sebagai a), dz, ..., dy. Carilah apakah x terdapat di dalam himpunan bilangan bulat tersebut. Jika x ditemukan, 180 Matematika Diskritmaka lokasi (indeks) elemen yang bernilai x disimpan di dalam peubah idx. = tidak terdapat di dalam himpunan tersebut, maka idx diisi dengan nilai 0. Algoritma pencarian yang paling sederhana adalah algoritma pencarian beruntun (sequential search atau linear search). Setiap elemen di dalam himpunan dibandingkan dengan x, mulai dari elemen pertama, a,, sampai elemen yang bernilai sama dengan x ditemukan atau sampai semua elemen sudah habis diperiksa. Jika a, =x, maka k adalah lokasi tempat x berada (id diisi dengan 4). Jika x tidak ditemukan (semua elemen sudah habis diperiksa), maka 0 diisikan ke dalam idx. Algoritma pencarian yang termaksud ditunjukkan oleh Algoritma 5.4. procedire PencarianBeruntun(input a;, @:, -:., a, ? integer, x : integer, output idx ; integer) ( Mencari x di dalam elemen aj, ay ».., a. Lokasi (indeks elemen) tempat x ditemukan diisi ke dalam idx. Jika x tidak ditemukan, maka idx diisi dengan 0. Masukan: ay, Az, -.+7 Ay Keluaran: idx Deklarasi a: integer Algoritma: del wal ft <9) aa (a ‘od fe ement (x tidak ditemuken J Algoritma 5.4. Algoritma pencarian beruntun, Algoritma pengurutan Diberikan n buah bilangan bulat yang dinyatakan sebagai a), a2, ..., d,. Urutkan semua bilangan bulat tersebut sedemikian sehingga a,
dina. then inaks
0. Jika m dibagi dengan n maka terdapat dua buah bilangan bulat unik q (quotient) dan r (remainder), sedemikian schingga m=ng +r (5.1) dengan 0
0 sedemikian sehingga : m=ng+r ,0
n. Misalkan rp = m dan r; = n. Lakukan secara berturut-turut pembagian (Teorema 5.1) untuk memperoleh nang th O
n). Algoritma Euclidean berikut mencari_ pembagi bersama terbesar, PBB, dari kedua bilangan tersebut, yaitu bilangan bulat positif terbesar yang habis membagi m dan n. Bab 5 Algoritma dan Bilangan Bulat 187Algoritma Euclidean 1. Jikan =0 maka madalah PBB(m, 1); stop. tetapi jika n + 0, lanjutkan ke langkah 2. 2. Bagilah m dengan » dan misalkan r adalah sisanya. 3. Ganti nilai m dengan nilai n dan nilai n dengan nilai r, lalu ulang kembali ke langkah 1. Catatan: jika m
” Karena m = 12 # 0, maka langkah instruksi 2 dikerjakan: 80 dibagi 12 memberikan hasil 6 dan sisa r= 8, 80=6-12 +8 Kerjakan langkah instruksi 3: ate ee Kembali ke langkah instruksi 1, karena dibagi 8 memberikan hasil 1 dan sisa r= =8 #0, maka langkah instruksi 2 dikerjakan: 12 Poeeeae eee Kerjakan langkah instruksi 3: m=8,n=4 Kembali ke langkah instruksi 1, karena = 4 # 0, maka langkah instruksi 2 dikerjakan: 8 dibagi 4 memberikan hasil 2 dan sisa r = 0, 8=2-44+0 Kerjakan langkah instruksi 3: m=4,n=0 188 Matematika DiskritKembali ke langkah instruksi 1, karena b = 0, maka PBB dari 80 dan 12 adalah nilai m terakhir, yaitu 4. Jadi PBB (80, 12) =4. Secara ringkas proses perhitungan dengan algoritma Euclidean di atas dinyatakan dalam runtunan pembagian berikut ini: 80=6-12+8 Sisa pembagian terakhir sebelum 0 adalah 4, maka PBB(80, 12) =4. . Dalam notasi pseudo-code, algoritma Euclidean kita tulis seperti pada Algoritma 5.6. Algoritma menerima masukan m dan n, dan menghasilkan keluaran PBB(myy). Algoritma: while n+ 0 do 2 m mod)n men ner 6 (n= 0) maka PBB(m,n) =m ) PBB Com Algoritma 5.6 Algoritma Euclidean TEOREMA 5.4, Misalkan a dan } adalah dua buah bilangan bulat positif, maka terdapat bilangan bulat m dan n sedemikian sehingga PBB(a, b) = ma nb. Teorema 5.4 menyatakan bahwa PBB dua buah bilangan bulat @ dan b dapat dinyatakan sebagai kombinasi lanjar (linear combination) dengan m dan n sebagai Bab 5 Algoritma dan Bilangan Bulat 189koefisien-koefisennya. Misalnya PBB(80, 12) = 4, dan 4 = (-1) -80+7+ 12. Di sini m= -1 dann=7. Metode untuk menemukan kombinasi lanjar dari dua buah bilangan sama dengan PBB-nya adalah dengan melakukan pekerjaan pembagian secara mundur pada algoritma Euclidean. Perhatikan Contoh 5.5 berikut ini. Nyatakan PBB(312, 70) = 2 sebagai kombinasi lanjar dari 312 dan 70. Penyelesaian: Terapkan algoritma Euclidean untuk memperoleh PBB(312, 70) = 2: 312=4-70+32 @ 70=2-32+6 Gi) 32=5-6+2 Gil) 6=3-2+0 (iv) Susun pembagian nomor (iii) menjadi 2=32-5-6 (iv) Susun pembagian nomor (ii) menjadi 6=70-2-32 @ Sulihkan (v) ke dalam (ivy menjadi 2=32-5 + (70-2 -32)=1-32-5-70+10-32=11-32-5-70 Susun pembagian nomor (i) menjadi 32=312~4-70 (vii) Sulihkan (vii) ke dalam (vi) menjadi 2=11-32-5-70 =11-(312-4-70)-5-70=11.312-49-70 Jadi, PBB(312, 70) = tet ne (vi) Relatif Prima DEFINISI 5,4. Dua buah bilangan bulat-a dan b dikatakan reer (relatively prime) jika PBB(@, b) = 1. 190 Matematika Diskrit: | tereve tera Hoo Sebagai contoh, 20 dan 3 relatif prima sebab PBB(20, 3) = 1. Begitu juga 7 dan 11 relatif prima karena PBB(7, 11) = 1. Tetapi 20 dan 5 tidak relatif prima sebab PBB(20, 5)=5¥1. Jika a dan b relatif prima, maka menurut Teorema 5.4 kita dapat menemukan bilangan bulat m dan n sedemikian sehingga ma + nb=1 (3.5) Bilangan 20 dan 3 adalah relatif prima karena PBB(20, 3) =1, atau dapat ditulis 2.20+(-13).3=1 dengan m =2 dan n = —13. Tetapi 20 dan 5 tidak relatif prima karena PBB(20, 5) = 5 #1 sehingga 20 dan 5 tidak dapat dinyatakan dalam m-20+n-5=1. 5.8 Aritmetika Modulo Aritmetika modulo (modular arithmetic) memainkan peranan-yang penting dalam komputasi integer, khususnya pada aplikasi kriptografi. Operator yang digunakan pada aritmetika modulo adalah mod. Operator mod.mémberikan sisa pembagian. Misalnya 23 dibagi 5 memberikan hasil = 4 dan sisa = 3, sehingga kita tulis 23 mod 5 =3 (operator mod sudah pernah kita gunakan pada Contoh 5.3). Definisi dari operator mod dinyatakan sebagai berikut: DEFINISI 5.5. Misalkan a adalah bilangal} bulat dan m adalah bilangan bulat > 0. Operasi a mod m (dibaca “a modulo m”) memberikan sisa jika a dibagi dengan m. Dengan kata lain, a mod m=r sedemikian sehingga a= mg +r, dengan 0
0, snaka a = b.(mod m) jika'm habis membagi ab (ne Bilangan 38 kongruen dengan 13 modulo 5 karena 5 membagi 38 ~ 13 = 25, sehingga dapat kita tulis bahwa 38 = 13 (mod 5). Tetapi, 41 tidak kongruen dengan 30 modulo 5 karena 5 tidak habis membagi 41 - 30 = 11, sehingga dapat kita tulis 41 =/ 30 (mod 5). Dengan cara yang sama, kita dapat menunjukkan bahwa 17 =2 (mod 3) (3 habis membagi 17-2=15 > 15 + 3=5) 7 = 15 (mod 11) (11 habis membagi -7 - 15 =-22) >-22 + 11=2) 12 =/2 (mod 7) (7 tidak habis membagi 12 - 2 = 10) -7 =/ 15 (mod 3) (3 tidak habis membagi -7 ~ 15 =-22) . 192 Matematika DiskritKekongruenan a = b (mod m) dapat pula dituliskan dalam hubungan a a=b+km (5.6) yang dalam hal ini sembarang k adalah bilangan bulat. Pembuktiannya adalah sebagai berikut: menurut Definisi 5.6, a = 5 (mod m) jika m | (a — b). Menurut Definisi 5.1, jika m | (a ~ 6), maka terdapat bilangan bulat & sedemikian sehingga a-b=kmataua=b+ km. Dari Contoh 5.6 di atas kita dapat menyatakan bahwa 38= 13 (mod 5) dapat ditulis sebagai 38 = 13 +5. 5 17=2(mod 3) dapat ditulis sebagai 17=2+5.3 ~7 = 15 (mod 11) dapat ditulis sebagai ~7 = 15 + (-2)11 . Berdasarkan definisi aritmetika modulo (lihat Definisi 5.5), kita dapat menuliskan amodm=r sebagai a=r (mod m) Beberapa hasil operasi dengan operator modulo berikut: () 23 mod 5=3 dapat ditulis sebagai 23 = 3 (mod 5) (i) 27 mod 3 =0 dapat ditulis sebagai 2 (iii) 6 mod 8 = 6 dapat ditulis sebagai (iv) 0 mod 12=0 dapat ditulis sebagai 0 = (v) -41 mod 9=4 dapat ditulis sebagai ~41 = 4 (mod 9) (vi) — 39 mod 13 = 0 dapat ditulis sebagai — 39 = 0 (mod 13) . Sifat-sifat pengerjaan hitung pada aritmetika modulo, khususnya terhadap operasi perkalian dan penjumlahan, dinyatakan dalam Teorema 5.5 berikut: TEOREMA 5.5. Misalkan m adalah bilangan bulat positif. 1. Jika a= b (mod m) dan c adalah sembarang bilangan bulat maka @) (@+e)=(6 +) (mod m) (ii) ac= be (mod m) v9 Gii)a? = B? (mod m)untuk suata bilinangai bulat tak negatif p. 2. Jika a = b(modm) dan ¢ = d (mod m), maka (i) (a@+c)=(b +d) (mod m) (ii) ac =bd (mod m) Bab 5 Algoritma dan Bilangan Bulat - 193Bukti Teorema 5.5 hanya diperlihatkan untuk 1(ii) dan 2(i) saja. Bukti untuk 1(ii), dan 2(ii) diserahkan sebagai latihan bagi pembaca. Bukti: (ii) a= b (mod m) berarti: eSa=b+kn (dari persamaan 5.6) ea-b=kn <= (a—b)c = ckm (kedua ruas dikalikan dengan c)
ac = be (mod m) : i) a=b(modm) @ a=bt+km c=d(modm) © c=d+km + = (ato=(b+d) +k +k)m © (ato) =(b +d) + km dalam hal ini, k = k, + &) <= (atc) =(b + d) (mod m) . Misalkan 17 = 2 (mod 3) dan 10 = 4 (mod/3), maka menurut Teorema 5.5, 17+5=2+45(mod3) <> _ 22=7(mod3) | (Teorema 5.5.1(i) ) 17.5=5-2(mod3) 9S 10 (mod 3) _(Teorema 5.5.1(ii) ) 17410 =2+4(mod3) <> 27=6(mod3) —_(Teorema 5.5.2(i) ) 17.10=2-4(mod3) <> —:170=8(mod3) _—(Teorema 5.5.2(ii) ) . Perhatikanlah bahwa Teorema 5.5. tidak memasukkan operasi pembagian pada aritmetika modulo Karena jika kedua ruas dibagi dengan bilangan bulat, maka kekongruenan tidak selalu dipenuhi. Misalnya: (i) 10 =4 (mod 3) dapat dibagi dengan 2 karena 10/2 = 5 dan 4/2 = 2, dan 5 =2 (mod 3) (ii) 14 = 8 (mod 6) tidak dapat dibagi dengan 2, karena 14/2 = 7 dan 8/2 = 4, tetapi 7 =/ 4 (mod 6). Inversi Modulo (Modulo Jnvers) Di dalam aritemetika bilangan riil, inversi (inverse) dari perkalian adakah pembagian. Misalnya inversi dari 4 adalah 1/4, karena 4 x 1/4 = 1. Di dalam aritmetika modulo, masalah menghitung inversi modulo lebih rumit. 194 Matematika DiskritJika a dan m relatif prima dan m > 1, maka kita dapat menemukan inversi dar. a modulo m. Inversi dari a modulo m adalah bilangan bulat a sedemikian sehingga aa =1(mod m) Pembuktian inversi modulo ini sangat mudah [ROS99]. Dari Definisi 5.4 tentang relatif prima diketahui bahwa PBB(a, m) = 1, dan menurut persamaan (5.5) terdapat bilangan bulat p dan q sedemikian sehingga pa+qm=1 yang mengimplikasikan bahwa pa + qm=1 (mod m) Karena gm =0 (mod m), maka pa=1 (mod m) Kekongruenan yang terakhir ini berarti bahwa p adalah inversi dari a modulo m. a Pembuktian di atas juga menceritakan bahwa untuk mencari inversi dari-a modulo m, kita harus membuat kombinasi-lanjar dari a dan m sama dengan 1. Koefisien a dari kombinasi lanjar tersebut-merupakan inversi dari a modulo m. Perhatikan Contoh 5.12 berikut. Tentukan inversi dari 4 (mod 9), 17 (mod 7), dan 18 (mod 10). Penyelesaian: (a) Karena PBB(4, 9) = 1, maka inversi dari 4 (mod 9) ada. Dari algoritma Euclidean diperoleh bahwa 9=2-4+1 Susun persamaan di atas menjadi -2-441-9=1 Dari persamaan terakhir ini kita peroleh -2 adalah inversi dari 4 modulo 9. Periksalah bahwa -2-4=1 (mod 9) (9 habis membagi -2 - 4— 1 =-9) Bab 5 Algoritma dan Bilangan Bulat 195Catatlah bahwa setiap bilangan yang kongruen dengan -2 modulo 9 juga inversi dari 4, misalnya 7, —11, 16, dan seterusnya, karena 7 =-2 (mod 9) (9 habis membagi 7 - (~2) -11 =-2 (mod 9) (9 habis membagi -11 - (-2) 16=~2 (mod 9) (9 habis membagi 16 ~ (-2) = 18) (b) Karena PBB(17, 7) = 1, maka inversi dari 17 (mod 7) ada. Dari algoritma Euclidean diperoleh rangkaian pembagian berikut: . 17=2-743 (i) 7=2-3+1 (i) 3=3-140 (ii) (yang mengimplikasikan bahwa PBB(17, 7) = 1)) Susun (ii) menjadi: 1=7-2-3 (iv) Susun (i) menjadi 3=17-2-7 W) Sulibkan (v) ke dalam (iv): 1=7-2+(17-2+7)=1,7-2517 +457 =5- 72-17, atau =2-17 45-72 Dari persamaan terakhir ini kita peroleh —2 adalah inversi dari 17 modulo 7. -2-17=1 (mod 7) (7 habis membagi -2 - 17-1 =~35) (c) Karena PBB(18, 10) =2 # 1, maka inversi dari 18 (mod 10) tidak ada. Metode lain yang cukup sederhana untuk menghitung inversi modulo adalah dengan melihat bahwa menurut persamaan (5.6) kekongruenan aa =1(mod m) dapat ditutis dalam hubungan aa =1+km sehingga persoalan menemukan inversi modulo adalah ekivalen dengan menemukan a dan k sedemikian sehingga 196 Matematika Diskrita= a Sebagai ilustrasi, tinjau kembali Contoh 5.12 di atas, bahwa untuk inversi dari 4 (mod 9) adalah a sedemikian sehingga 4a =1 (mod 9) Inversi dari 4 (mod 9) adalah - _ 14+9k A 4 Cobakan k = 0, 1, 2, ... dank =—1, -2, ... ke dalam persamaan yang terakhir yang menghasilkan a sebagai bilangan bulat. Hasilnya adalah untuk & = 3 diperoleh a = 7, untuk k= ~1 diperoleh a = —2, dan seterusnya. Selain dengan kedua cara yang telah disebutkan di atas, ada metode lain yang banyak digunakan untuk mencari inversi modulo, yaitu algoritma Euclidean yang diperluas (extended Euclidean algorithm) [ROS03] Kekongruenan Lanjar Kekongruenan lanjar adalah kongmuen yang berbentuk ax = b (mod m) dengan m adalah bilangan bulat positif, a dan b sembarang bilangan bulat, dan x adalah peubah. Bentuk kongruen lanjar berarti menentukan nilai-nilai x yang memenuhi kekongruenan tersebut. Metode yang sederhana untuk mencari nilai- nilai x tersebut adalah dengan menggunakan persamaan (5.6). Menurut persamaan (5.6), ax = b (mod m) dapat ditulis dalam hubungan ax=b+km yang dapat disusun menjadi b+kn xem a dengan k adalah sembarang bilangan bulat. Cobakan nilai-nilai k= 0, 1, 2, ... dan k=-l, -2, ... ke dalam persamaan yang terakhir untuk menghasilkan x sebagai bilangan bulat. Bab 5 Algoritma dan Bilangan Bulat 197Den Tentukan solusi dari (i) 4x = 3 (mod 9) dan (ii) 2x = 3 (mod 4) Penyelesaian: ()_ Kekongruenan 4x = 3 (mod 9) ekivalen dengan menemukan k dan x bilangan bulat sedemikian schingga 3+k-9 ces 4 Nilai & bilangan bulat yang menghasilkan x bulat adalah untuk & = 1 diperoleh x = 3, untuk k= 5 diperoleh x= 12, untuk £=-3 diperoleh x =~6, untuk k=~6 diperoleh x 15, dan seterusnya. Jadi, nilai-nilai x yang memenuhi 4x = 3 (mod 9) adalah 3, 12, dan -6, -15, (ii) Kekongruenan 2x = 3 (mod 4) ekivalen dengan menemukan & dan x bilangan bulat sedemikian sehingga yo dthed 2 Karena 4k genap dan 3 ganjil maka penjumlahannya menghasilkan ganjil, sehingga hasil penjumlahan tersebut jika dibagi dengan 2 tidak menghasilkan.bilangan bulat. Dengan kata lain, tidak ada nilai-nilai x yang memenuhi 2x = 3 (mod 4), = Metode lain untuk mencari solusi kekongruenan lanjar adalah dengan menggunakan inversi modulo. Caranya serupa dengan pencarian solusi pada persamaan lanjar biasa, seperti pada 4x=12 Untuk mencari solusi persamaan di atas, kalikan kedua ruas dengan inversi perkalian dari 4, yaitu 1/4, V4 - 4x = 1/4. 12 Sekarang, terapkan metode seperti ini pada kekongruenan lanjar pada Contoh 5.13 di atas, 4x = 3 (mod 9) Kalikan kedua ruas dengan inversi dari 4 (mod 9), yang dalam hal ini sudah dihitung pada Contoh 5.12, yaitu — 2: 198 Matematika DiskritKarena —8 = 1 (mod 9), maka x = —6 (mod 9). Jadi, solusi dari 4x = 3 (mod 9) adalah bilangan bulat x sedemikian sehingga x = —6 (mod 9), yaitu 3, 12, ... dan —6,-15, ... (Perhatikan bahwa ~6 (mod 9), karena 9 habis membagi 3- (-6) = 9 2=~6 (mod 9), karena 9 habis membagi 12 — (-6) = 18 ~6 =~6 (mod 9), karena 9 habis membagi -6— (-6) =0 15 =—6 (mod 9), karena 9 habis membagi ~15 - (-6) =-9 Chinese Remainder Problem Pada abad pertama, seorang matematikawan China yang bernama Sun Tse mengajukan pertanyaan sebagai berikut: Tentukan sebuah bilangan bulat yang bila dibagi dengan 5 menyisakan 3, bila dibagi 7 menyisakan 5, dan bila dibagi 11 menyisakan 7. Pertanyaan Sun’Tse dapat dirumuskan kedalam sistem kongruen lanijar: x= 3 (mod 5) Teorema Chinese Remainder berikut akan digunakan untuk menemukan solusi sistem kongruen lanjar seperti di atas. TEOREMA.,5.6. (Chinese Remainder Theorem): Misalkan, my, my; :.:., m, adalah bilangan bulat positif sedemikian sehingga PBB(m, m,) = 1 untuk i # j. Maka sistem kongruen lanjar x= a, (mod m) mempunyai sebuah solusi unik dalam modulo m =m; =m: - ene Tentukan solusi dari pertanyaan Sun Tse di atas. Penyelesaian: Menurut persamaan (5.6), kongruen pertama, x = 3 (mod 5), memberikan x = 3 + 5k, urituk beberapa nilai k. Sulihkan ini ke dalam kongruen kedua menjadi 3 + 5k, = 5 (mod Bab 5 Algoritma dan Bilangan Bulat 1997), dari sini kita peroleh k; = 6 (mod 7), atau k, = 6 + 7k, untuk beberapa nilai | kita mendapatkan x = 3 + Sk = 3 + 5(6 + 7k.) = 33 + 35k, yang mana memenuhi dua kongruen pertama. Jika.x memenuhi kongruen yang ketiga, kita mempunyai 33 + 35k, = 7 (mod 11), yang mengakibatkan 2 = 9 (mod 11) atau ky = 9 + 114, Sulihkan ky ini ke dalam kongruen yang ketiga menghasilkan x = 33 + 35(9 + 11hs) = 348 + 385k5 (mod 11). Dengan demikian, x = 348 (mod 385) yang memenuhi ketiga konruen tersebut. Dengan kata lain, 348 adalah solusi unik modulo 385. Catatlah bahwa 385 =5- 7-11. Solusi unik ini mudah dibuktikan sebagai berikut. Solusi tersebut modulo m =m, - mp - ms=5+7+11=5-77= 11-35, Karena 77 3= 1 (mod 5), 55-6 =1 (mod 7), dan 35 - 6 = 1 (mod 11), solusi unik dari sistem kongruen tersebut adalah X83-77-345-55-6 +7-35 - 6 (mod 385) = 3813 (mod 385) = 348 (mod 385) . 5.9 Bilangan Prima Bilangan bulat positif' yang mempunyai aplikasi penting dalam ilmu komputer dan matematika diskrit adalah bilangan prima. Bilangan prima adalah bilangan bulat positif yang lebih besar dari 1 yang hanya habis dibagi oleh 1 dan dirinya sendiri. Sebagai contoh, 23 adalah bilangan prima karena ia hanya habis dibagi oleh 1 dan 23. Karena bilangan prima harus lebih besar dari 1, maka barisan bilangan prima dimulai dari 2, yaitu 2, 3, 5,7, 11, 13, .... Seluruh bilangan prima adalah bilangan ganjil, kecuali 2 yang merupakan bilangan genap. Bilangan selain prima disebut bilangan komposit (composite). Misalnya 20 adalah bilangan komposit karena 20 dapat dibagi oleh 2, 4, 5, dan 10, selain 1 dan 20 sendiri. Teorema penting yang menyangkut bilangan prima dinyatakan oleh teorema yang terkenal dalam teori bilangan, yaitu teorema fundamental aritmetik, yang bunyinya adalah seperti di bawah ini. TE The positif-yang lebih besar lebih bilangan prima, Teorema 5.7 menyatakan bahwa baik bilangan prima maupun bilangan komposit, keduanya dapat dinyatakan sebagai perkalian dari satu atau lebih faktor prima. Misalnya, 200 Matematika Diskrit9=3x3 (2 buah faktor prima) 100=2x2x5x5 (4 buah faktor prima) 13= 13 (atau 1 x 13) (1 buah faktor prima) Masalah lain yang juga penting adalah menguji apakah sebuah bilangan merupakan prima atau bukan. Teorema 5.6 menyatakan bahwa sembarang bilangan bulat positif habis dibagi oleh faktor-faktor primanya. Faktor prima dari sebuah bilangan selalu lebih kecil atau sama dengan akar kuadrat dari bilangan tersebut. Hal ini mudah ditunjukkan sebagai berikut: misalkan a adalah faktor prima dari n, dengan 1 < a
\n .Vn=n Dengan kata lain, faktor prima dari m selalu lebih kecil atau sama dengan Vn. Hal ini dinyatakan dengan teorema berikut: TEOREMA'S:8. Jika n adalah bilangan koing osit, maka n méttpunyai faktor prima yang lebih kecil atausama dengan'Vn. ~ *' ie Be : Untuk menguji apakah » merupakan bilangan prima atau komposit, kita cukup membagi n dengan sejumlah bilangan prima, mulai dari 2, 3,.... »bilangan prima
Bab 5 Algoritma dan Bilangan Bulat 203Sebagai contoh, sebuah pesan rahasia (plainteks) berikut: uang disimpan di balik buku xX disandikan menjadi cipherteks dengan suatu teknik kriptografi tertentu menjadi: j&k1oP (d$gkhtpuBnt6*klp. .t@ Cipherteks, meskipun tidak dirahasiakan, namun isinya sudah tidak jelas dan tidak dapat dimengerti maksudnya. Hanya orang yang berhak yang dapat mengeminversi pesan tidak jelas tersebut menjadi pesan semula. Kriptografi digunakan untuk dua aplikasi, yaitu aplikasi pengiriman data melalui saluran komunikasi dan aplikasi penyimpanan data di dalam disk storage. Data ditransmisikan melalui saluran komunikasi dalam bentuk cipherteks. Di tempat penerima cipherteks dikembalikan lagi menjadi plainteks. Sedangkan untuk aplikasi penyimpanan, data di dalam media penyimpanan (seperti hard disk) disimpan dalam bentuk cipherteks. Untuk membacanya, hanya orang yang berhak yang dapat membalikkan cipherteks menjadi plainteks. Contoh enkripsi dan dekripsi pada data tersimpan misalnya enkripsi pada dokumen plainteks yang bernama plain. txt yang isinya adalah: Ketika saya berjalan-jalan di pantai, saya menemukan banyak sekali kepiting yang merangkak menuju laut. Mereka adalah anak-anak kepiting yang baru menetas dari dalam pasir. Naluri mereka mengatakan bahwa laut adalah tempat _kehidupan mereka. Misalkan hasil enkripsi plain. txt dengan metode kriptografi tertentu disimpan di dalam berkas cipher . txt. yang isinya adalah sebagai berikut: 2taxzp/épép/qtiyp (p}
¢ = E(0) = (0 + 3) mod 26 > cz = E(22) = (22 + 3) mod 2 > cs = (0) = (0 + 3) mod 2 > c= E(18) = (18 +3) mod 2 Bila keseluruhan perhitungan diselesaikan, maka diperoleh cipherteksnya adalah DZDVL DVWHULA GDQ WHPDQQBA REHOLA Alternatif lain, cipherteks juga dapat langsung diperoleh dengan menggunakan tabel pergeseran 3 huruf di atas, yaitu: A disubstitusidengan D, W disubstitusi dengan Z, A disubstitusi dengan D, W disubstitusi dengan V, dst. . Bab 5 Algoritma dan Bilangan Bulat 207Penerima pesan mengembalikan lagi cipherteks dengan operasi kebalikan Jang am secara matematis dapat dinyatakan dengan persamaan p=D(c)=(c~3) mod 26 6.11) Pethatikan bahwa D adalah inversi (inverse) dari fungsi E, yaitu D(c) = E“(p). Sehingga, cipherteks DZDVL DVWHULA GDQ WHPDQQBA REHOLA dikembalikan menjadi plainteks asal dengan persamaan 5.11 menjadi AWASI ASTERIX DAN TEMANNYA OBELIX Secara umum, fungsi enkripsi dan dekripsi paad Caesar Cipher dapat dibuat lebih umum dengan menggeser huruf alfabet sejauh k sehingga c= E(p)=(p + K) mod 26 (5.12) untuk fungsi enkripsi dan p=D(c)=(c-K) mod 26 (5.13) untuk fungsi dekripsi. Pada kedua persamamaan terakhir ini, K berlaku sebagai kunci rahasia. Secara matematis, pada sistem kriptografi yang menggunakan kunci K, maka fungsi enkripsi dan dekripsi menjadi Ex(P)=C (5.14) dan DrC) =P (5.15) Kedua fungsi ini memenuhi DrXExi(P)) = P Gambar 5.3 memperlihatkan diagram proses enkripsi dan dekripsi pada kriptografi yang menggunakan kunci. 208 Matematika DiskritKI K2 lainteks cipherteks | lainteks asal eee | enkripsi >| dekripsi > > Gambar 5.3. Enkripsi dan Dekripsi pada algoritma kriptografi modem. Jika KJ = K2 (yaitu, kunci untuk proses enkripsi sama dengan kunci untuk dekripsi), maka sistem kriptografinya dinamakan sistem kriptografi kunci- simetri (symmetric-key cryptosystem), (yang dimaksud dengan sistem kriptografi adalah gabungan dari algoritma kriptografi, kunci, plainteks, dan cipherteks) dan algoritma kriptografinya disebut algoritma simetri. Contoh algoritma simetri adalah DES (Data Encyption Standard). Sebaliknya, jika K] # K2 (yaitu, kunci untuk proses enkripsi berbeda dengan kunci untuk dekripsi), sistem kriptografinya dinamakan sistem kriptografi nirsimetri (asymmetric cryptosystem), dan algoritma kriptografinya disebut algoritma nirsimetri. Contoh algoritma nirsimetri adalah RSA (singkatan dari tiga nama penemu algoritmanya: Rivest-Shamir-Adleman). Kriptografi simetri kadang-kadang disebut juga kriptografi kunci-pribadi (private-key cryptography) karena kunci enkripsi dan dekripsi sama dan harus dirahasiakan. Kelemahan dari sistem ini adalah baik pengirim maupun penerima pesan harus memiliki kunci yang sama, sehingga pengirim pesan harus mencari cara lain untuk memberitahukan kunci kepada penerima. Kriptografi nirsimetri kadangkala disebut juga kriptografi kunci-publik (public key cryptography). Algoritma ini mempunyai dua buah kunci, yaitu kunci publik (public key — tidak rahasia) untuk enkripsi dan kunci pribadi (secret key — rahasia) untuk dekripsi. Pengirim pesan (sender) mengenkripsi pesan yang akan dikirim dengan menggunakan kunci publik si penerima pesan (receiver). Hanya penerima pesan yang dapat mendekripsi pesan karena hanya ia yang mengetahui kunci pribadi miliknya. Misalkan jaringan komputer menghubungkan komputer karyawan di kantor cabang dengan komputer menejer di kantor pusat. Seluruh karyawan diperintahkan bahwa kalau mereka mengirim laporan ke menejer di kantor pusat, mereka harus mengenkripsikan laporan tersebut dengan kunci publik milik menejer (jadi, kunci publik menejer diketahui oleh seluruh karyawan). Untuk mengeminversi data tersandi ke data asal, hanya menejer yang dapat melakukannya, karena dialah yang memegang kunci rahasia. Selama proses transmisi cipherteks dari kantor cabang ke kantor pusat melalui saluran Bab 5 Algoritma dan Bilangan Bulat 209komunikasi mungkin saja data yang dikirim disadap oleh pihak ketiga, nafriuit pihak ketiga ini tidak dapat mengeminversi cipherteks ke palinteksnya karena ia tidak mengetahui kunci untuk dekripsi. DES (Data Encryption Standard) DES memadukan teknik permutasi, ekspansi, kompaksi, dan substitusi, semuanya dilakukan dalam 16 kali perulangan. Panjang kunci DES adalah 8 karakter atau 64 bit. Dari 64 bit tersebut, hanya 56 bit saja yang dipakai dalam proses enkripsi. Tetapi patut dicatat bahwa dengan 56 bit itu akan terdapat 2°° atau 72.057.594.037.927.936 kemungkinan kunci. Jika orang yang tidak berhak mencoba keseluruhan kemungkinan kunci tersebut dengan menggunakan satu juta prosesor komputer yang bekerja secara paralel, maka dengan asumsi bahwa selama 1 detik dapat dicoba satu juta kemungkinan kunci, maka seluruh kemungkinan kunci tersebut memerlukan wakti 2284 tahun untuk menemukan kunci yang benar. Ini sebuah waktu yang lama, bahkan kriptanalis yang mencobanya pun sudah meninggal dunia sebelum waktu itu selesai. Algoritma DES tidak dibahas di dalam bab ini karena tidak relevan dengan pokok bahasan kita yang menyangkut penggunaan bilangan prima dan aritmetika modulo. RSA (Rivest-Shamir-Adleman) Algoritma RSA diperkenalkan oleh tiga peneliti dari MIT (Massachussets Institute of Technology), yaitu Ron Rivest, Adi Shamir, dan Len Adleman, pada tahun 1976. RSA mendasarkan proses enkripsi dan dekripsinya pada konsep bilangan prima dan aritmetika modulo. Baik kunci enkripsi maupun kunci dekripsi keduanya berupa bilangan bulat. Kunci enkripsi tidak dirahasiakan dan diketahui umum (sehingga dinamakan juga kunci publik), namun kunci untuk dekripsi bersifat rahasia. Kunci dekripsi dibangkitkan dari beberapa buah bilangan prima bersama-sama dengan kunci enkripsi. Untuk menemukan kunci dekripsi, orang harus memfaktorkan suatu bilangan non prima menjadi faktor primanya. Kenyataannya, memfaktorkan bilangan non prima menjadi faktor primannya bukanlah pekerjaan yang mudah. Belum ada algoritma yang mangkus (efisien) yang ditemukan untuk pemfaktoran itu. Semakin besar bilangan non primanya tentu semkain sulit pula pemfaktorannya. Semakin sulit pemfaktorannya, semakin kuat pula algoritma RSA. Algoritma RSA sebenarnya sederhana sekali. Secara ringkas, algoritma RSA terdiri dari tiga bagian, yaitu bagian untuk membangkitkan pasangan kunci, bagian untuk enkripsi, dan bagian untuk dekripsi: 210 Matematika DiskritALGORITMA RSA Pembangkitan pasangan kunci 1, Pilih dua buah bilangan prima sembarang, sebut @ dan b. Jaga kerahasiaan a dan b ini. 2. Hitung n—a b, Besaran n tidak perlu dirahasiakan. 3. Hitung m = (a — 1)(b — 1). Sekali m telah dihitung, a dan 6 dapat dihapus untuk mencegah diketahuinya oleh pihak lain. 4, Pilih sebuah bilangan bulat untuk kunci publik, sebut namanya e, yang relatif prima terhadap 7. 5. Hitung kunci dekripsi, d, dengan kekongruenan ed = 1 (mod). Enkripsi 1. Nyatakan pesan menjadi blok-blok plainteks: p;, ps, ps, ... (harus dipenuhi persyaratan bahwa nilai p; harus terletak dalam himpunan nilai 0, 1, 2, .... 2 — 1 untuk menjamin hasil perhitungan tidak berada di luar himpunan) 2. Hitung blok cipherteks c, untuk blok plainteks p; dengan persamaan c=pf mod n yang dalam hal ini, € adalah kunci publik. Dekripsi 1. Proses dekripsi dilakukan dengan m lel rl : ele oi pribadin Algoritma 5.7 Algoritma RSA Perhatikan langkah 5 pada proses pembakitan pasangan kunci. Kekongruenan ed = 1 (mod m) sama dengan ed mod m = 1. Menurut persamaan (5.6) yang menyatakan bahwa a = b (mod m) ckivalen dengan a = 6 + km, maka ed = 1 (mod m) ekivalen dengan ed = 1 + km, sehingga d dapat dihitung dengan cara yang sederhana dengan persamaan _l+kn e d (5.16) Dalam implementasi yang sebenarnya, nilai « dan b disarankan nilai yang sangat besar (100 angka) agar pekerjaan memfaktorkan x menjadi faktor primanya menjadi sangat sukar bahkan hampir tidak mungkin dapat dilakukan Bab 5 Algoritma dan Bilangan Bulat 244@iminsl Kita akan mengenkripsi pesan dengan algoritma RSA, Mula-mula, bangkitkan sepasang kunci. Sebagai ilustrasi, pilih a = 47 dan b= 71 (dalam praktek, a dan b harus bilangan yang besar), maka dapat dihitung nilai n = ab = 3337 dan m = (a— 1) (b— 1) = 3220. Pilih kunci publik e = 79 (yang relatif prima dengan 3220 karena pembagi bersama terbesarnya adalah 1), Nilaie dan n dapat dipublikasikan ke umum. Selanjutnya akan dihitung kunci dekripsi d seperti yang dituliskan pada langkah instruksi 4, ed=1(modm) Dengan menggunakan (5.16) kita menghitung kunci dekripsi d sebagai berikut: 1+(kx3220) 79 d Dengan mencoba nilai-nilai k = 1, 2, 3, ..., diperoleh nilai d yang bulat adalah 1019. Ini adalah kunci dekripsi yang harus dirahasiakan. Misalkan plainteks yang akan dienkripsikan adalah P = HARI INI (atau dalam desimal ASCIL-nya adalah 7265827332737873). Pecah P menjadi blok yang lebih kecil, misalnya P dipecah menjadi enam blok yang berukuran 3 digit: Pia 726 Nilai-nilai p; ini masih terletak di dalam rentang nilai 0 sampai 3337 — 1. Blok pertama dienkripsikan sebagai 726” mod 3337 = 1,4304567688284660347 123409940007 - 10° mod 337 =215 = c Blok kedua dienkripsikan sebagai 582” mod 3337 = 776 = c, Dengan melakukan proses yang sama untuk sisa blok lainnya, dihasilkan cipherteks C = 215 776 1743 933 1731 158. Proses dekripsi dilakukan dengan menggunakan kunci rahasia d = 1019, jadi, blok ¢ didekripsikan sebagai 215°"? mod 3337 = 726 =p; Blok c; didekripsikan sebagai 776"? mod 3337 = 582 = p2 Blok plainteks yang lain dikembalikan dengan cara yang serupa. Akhimya kita memperoleh kembali plainteks semula P = 7265827332737873 atau dalam bentuk karakter adalah P= HARI INI. . 212 Matematika DiskritPerhitungan perpangkatan pada proses enkripsi (c; = p;7 mod n)dan dekripsi (p; cf mod n) membutuhkan bilangan yang sangat besar. Untuk menghindari penggunaan bilangan yang besar, maka dapat digunakan penyederhanaan dengan persamaan berikut: ab mod m = [(a mod m)(6 mod m)] mod m (5.17) mn Sebagai ilustrasi, untuk menghitung 572” mod 713 dapat digunakan manipulasi dengan persamaan 3.14 sebagai berikut: $7297 = $72” , $72* . 572 572° mod 713 = 327184 mod 713 = 630 5724 mod 713 = 572” . 572 mod 713 = (572? mod 713572? mod 713)] mod 713 = 630° mod 713 = 396900 mod 713 = 472 $5728 mod 713 = 572 . 572‘ mod 713. =[(572‘ mod 713572‘ mod 713)] mod 713 = 472? mod 713 = 222784 mod 713 = 328 572" mod 713 = 572° . 572° mod 713 = [(572° mod 713)(572° mod 713)] mod 713 = 328" mod 713 = 107584 mod 713 = 634 572” mod 713 = 572' . 572'° mod 713 = [(572'° mod 713572" mod 713)] mod 713 = 634? mod 713 = 401956 mod 713 = 537 572° mod 713 = 572” . 572* mod 713 = [(572” mod 713)(572* mod 713)] mod 713 = 537.472 mod 713 = 253464 mod 713 = 349 57277 mod 713 = 572%. 572 mod 713 = [(572 mod 713)(572 mod 713)] mod 713 = 349.572 mod 713 = 199628 mod 713 = 701 Jadi, 572°” mod 713 = 701 Kekuatan dan Keamanan RSA Seperti yang sudah dikatakan sebelumnya, kekuatan algoritma RSA terletak pada tingkat kesulitan dalam memfaktorkan bilangan menjadi faktor primanya, yang dalam hal ini adalah memfaktorkan n menjadi a dan b. Sekali 7 berhasil difaktorkan menjadi a dan b, maka m = (a — 1) (6 — 1) dapat dihitung. Selanjutnya, karena kunci enkrispi e diumumkan (tidak rahasia), maka kunci dekripsi d dapat dihitung dari persamaan ed = "1 (mod m). Ini berarti proses dekripsi dapat dilakukan oleh orang yang tidak berhak. Penemu algoritma RSA menyarankan nilai a dan b panjangnya lebih dari 100 digit. Dengan demikian hasil kali n = ab akan berukuran lebih dari 200 digit. Bayangkanlah berapa besar usaha kerja yang diperlukan untuk memfaktorkan pilangan bulat 200 digit menjadi faktor primanya. Menurut Rivest dan kawan- Bab 5 Algoritma dan Bilangan Bulat 213kawan, usaha untuk mencari faktor bilangan 200 digit membutuhkan wantu komputasi selama 4 milyar tahun! (dengan asumsi bahwa algoritma pemfaktoran yang digunakan adalah algoritma yang tercepat saat ini dan komputer yang dipakai mempunyai kecepatan 1 milidetik). Untunglah algoritma yang paling mangkus untuk memfaktorkan bilangan yang besar belum ditemukan. Inilah yang membuat algoritma RSA tetap dipakai hingga saat ini. Selagi belum ditemukan algoritma yang mangkus untuk memfaktorkan bilangan bulat menjadi faktor primanya, maka algoritma RSA masih direkomendasikan untuk penyandian pesan. 5.11 Fungsi Hash Data yang disimpan di dalam memori komputer perlu ditempatkan dalam suatu cara sedemikian sehingga pencariannya dapat dilakukan dengan cepat. Setiap data yang berupa record mempunyai field kunci yang unik yang membedakan suatu record dengan record lainnya. Fungsi hash (hash function) digunakan untuk menempatkan suatu record yang mempunyai nilai kunci k. Fungsi hash yang paling umum berbentuk A(k) =k mod m (5.18) yang dalam hal ini m adalah jumlah lokasi memori yang tersedia (misalkan memori berbentuk sel-sel yang diberi indeks 0 sampai m — 1). Fungsi h di atas menempatkan record dengan kunci & pada suatu lokasi memori yang beralamat nD. Andaikan m = 11, sehingga kita mempunyai sel-sel memori yang diberi indeks 0 sampai 10. Kita akan menyimpan data record yang masing-masing mempunyai kunci 15, 558, 32, 132, 102, dan 5 [JOH97]. Pada mulanya sel-sel meori dalam keadaan kosong. Keenam data record tersebut masing-masing disimpan pada lokasi yang dihitung sebagai berikut: A(1S) = 15 mod 11 =4 A(558) = 558 mod 11=8 A(32) = 32 mod 11 =10 132 mod 11=0 102 mod 11 =3 A(S5)=5 mod 11=5 Keadaan sel-sel memori setelah penyimpanan keenam data record tersebut digambarkan seperti berikut ini: 214 Matematika Diskrit132 102 [15 [5 558 32_] Oo 1° 2°73 ° 4° 5 6 +7 +8 +9 10 Karena fungsi hash bukanlah fungsi satu-ke-satu (beberapa nilai k yang berbeda dapat menghasilkan nilai 4(k) yang sama), maka dapat terjadi bentrokan (collision) dalam penempatan suatu data record. Misalnya kita akan menempatkan data record dengan kunci 257. Perhitungan hash menghasilkan A(257) = 257 mod 11 =4 padahal sel memori dengan lokasi 4 sudah terisi. Kita katakan telah terjadi bentrokan. Untuk mengatasi bentrokan perlu diterapkan kebijakan resolusi bentrokan (collision resolution policy). Satu kebijakan resolusi bentrokan adalah mencari sel tak terisi tertinggi berikutnya (dengan 0 diasumsikan mengikuti 10). Jika kita terapkan kebijakan ini, maka data record dengan kunci 257 ditempatkan pada lokasi 6. Jika kita ingin mencari data record tertentu, maka kita gunakan fungsi hash kembali. Misalkan kita akan mencari data record dengan kunci p, maka kita hitung h(p) = p mod 11, misalkan h(p) = q. Jika record p sama dengan isi sel pada lokasi g, kita katakan lokasi record p ditemukan. Sebaliknya; jika record p tidak sama dengan isi sel pada lokasi g, maka kita melihat pada posisi tertinggi berikutnya (sekali lagi, O'diasumsikan mengikuti 10); jika record p tidak berada pada posisi ini, kita lihat lagi pada posisi berikutnya, demikian seterusnya. Jika kita mencapai sel kosong atau kembali ke posisi semula, kita simpulkan bahwa record p tidak ada, 5.12 International Standard Book Number (ISBN) Buku-buku yang diterbitkan oleh penerbit resmi selalu disertai dengan kode ISBN. Kode ISBN terdiri dari 10 karakter, biasanya dikelompokkan dengan spasi atau garis, misalnya 0-3015-4561-9. ISBN terdiri atas empat bagian kode: kode yang mengidentifikasikan bahasa, kode penerbit, kode yang diberikan secara unik kepada buku tersebut, dan sebuah karakter uji (dapat berupa angka atau huruf X untuk merepresentasikan angka 10). Karakter uji digunakan untuk mevalidasi ISBN, tepatnya untuk mendeteksi kesalahan pada karakter ISBN atau kesalahan karena perpindahan angka-angkanya. Karakter uji dipilih sedemikian sehingga 10 =0 (mod 11) Bab 5 Algoritma dan Bilangan Bulat 215yang dalam hal ini x; adalah karakter yang ke-i di dalam kode JSBN. (ESicCiiintaa mendapatkan karakter uji, kita cukup menghitung 9 Six; mod 11 = karakter uji (5.17) Untuk kode ISBN 0-3015-4561-8, 0 adalah kode kelompok negara berbahasa Inggris, 3015 adalah kode penerbit, 4561 adalah kode unik untuk buku yang diterbitkan oleh penerbit tersebut, dan 8 adalah karakter uji. Karakter uji ini didapatkan sebagai berikut: 1-0+2-34+3-044-14+5-5+6-4+7-5+8-6+9-1=151 Jadi, karakter ujinya adalah 151 mod 11 = 8. Catatlah bahwa untuk kode ISBN ini, 10 9 Mix = Dix, + 10x10= 151 +10-8=231 i=l ist dan 231 mod 11 =0 atau 231 = 0 (mod 11). Nomor /SBN sebuah buku terbitan penerbit Indonesia adalah 979-939p-04-S. Tentukan p. Penyelesaian: Diketahui karakter uji SBN = 5. Ini berarti ° Six, mod 11 =5 im Mula-mula hitung 9 % =1-942-743-944-94+5-346-9+7-p+8-049-4 =94+14427+36+15+54+7p+0+36 =191+7p Jadi, (191 +7x) mod 11=5 atau p= Uk+5~191 = 11k-186 a 7 Nilai-nilai k yang menghasilkan x bulat adalah k= ..., -6, 1, 8, 15, 22, 28, ... . Agar JSBN sah maka p haruslah memenuhi 0 > p > 9. Untuk k= 22 didapatkan p = 8. : 216 Matematika Diskrit5.13 Pembangkit Bilangan Acak Semu Bilangan acak (random) banyak digunakan di dalam program komputer, misalnya untuk program simulasi (misalnya mensimulasikan waktu kedatangan nasabah di bank, pompa bensin, dan sebaiknya), program kriptografi, aplikasi statistik, dan sebagainya. Tidak ada komputasi yang benar-benar menghasilkan deret bilangan acak secara sempurna. Bilangan acak yang dihasilkan dengan rumus-rumus matematika adalah bilangan acak semu (pseudo), karena pembangkitan bilangannya dapat diulang kembali. Pembangkit deret bilangan acak semacam itu disebut pembangkit bilangan acak semu (pseudo-random number generator atau PRNG). Metode yang paling umum digunakan untuk membangkitkan bilangan acak adalah dengan pembangkit bilangan acak kongruen-lanjar (linear congruential generator atau LCG ) adalah PRNG yang berbentuk: Xn = (@%,-1+ b) mod m (5.18) yang dalam hal ini, X, = bilangan acak ke-n dari deretnya Xn-1 = bilangan acak sebelumnya faktor pengali increment m= modulus (a, b, dan m semuanya konstanta) Kunci pembangkit adalah xo yang disebut umpan (seed). LCG mempunyai periode tidak lebih besar dari m. Jika a, b, dan m dipilih secara tepat (misalnya b scharusnya relatif prima terhadap m), maka LCG akan mempunyai periode maksimal, yaitu m — 1. Bangkitkan bilangan acak dengan menggunakan LCG, m= 17, a= 7, b = 11, dan xo = 0. Penyelesaian: Persamaan LCG berbentuk Xn = (7Xq—-1+ 11) mod 17 Bab 5 Algoritma dan Bilangan Bulat 217Lakukan perhitungan sebagai berikut: 4X1 = (7x9 + 11) mod 17 = (7-0 + 11) mod 17 = 11 mod 17 = 11 22 = (7x; + 11) mod 17 = (7- 11 + 11) mod 17 = 88 mod 17 =3 dst... Hasil perhitungan disajikan dalam bentuk tabel seperti di bawah ini: n Xn 0 0 7 ll 2 3 2 15 4 14 5 iti 6 9 7 6 8 2 9 8 10 16 7 4 12 5 13 12 14 10 15 13 16 0 17 i 18 ai 19 iA] 20 14 21 ‘a ee! 9 23 6 24 2 Pada n = 16, nilai xis = xp, maka bilangan acak berikutnya (x17, xs, dst) akan berulang kembali. Inilah alasannya mengapa LCG termasuk ke dalam pembangkit bilangan acak semu. 7 5.14 Ragam Soal dan Penyelesaian (i) Berapa-211 mod 11? (ii) Misalkan m =—101 dan a = 13. Nyatakan m dan n dalam m = ng +r 218 Matematika Diskrit154 yeIng ueBuellg Uep euLOHy SEEN . (ZL) (Ze-) + (ze) LT = syeBeqas 7/1 UeP PZE HEP Gad Hedegos ueyereduip yedep (21 “ped EL (21) (Ze-) + (p2E) LT (21 ~ pee) (LI) + (ZL1) SI- (ZS1) (LI) + (221) SI- (@s1 ~zL1) (SI-) + sz (02) (S1-) + (Zs 1) Z (2) L~- zs) Z + 02 (21) z+ 02- (21-00) ~-z1 (g)I-z1=9 :svye Ip ueouresiad-ueewresiod tep ismysqns sosord weynyey “p = (ZLI “pzeead BARU “p YPTEpe Q uMTagas snpyera) UeISequiod wsig viene (ma) O+)I= 8 () p+(8).1= 21 (ay 8+ (ZI) 1 = 02 yy t+ 2) L=est ) 0z + (@s1) T= 2Lt © 2S + (ZL) = 92e pee ‘tL aad ueqedepuow yun ueprong eunUOZe ueyxeunSsuow ueBuap uersequied uexMeT “TeTespeRUEG -jngosi93 ueBuepiq-ueBuepiq wep sefuE] seuIquIOY eBeqas HZE UEP ZLT MEP Ted WeyeIeAN ol-€ (€1 pow |to1) - €1 pout TOT “+b €1= 10l- sanyiiaq 1Seqos yeyepe eAunye syE[es “IUs [Ros URY!eso[aXUOW yMUN BID yeXUEQ ePY (11) 6=7- 11 = (11 pour |t1Z-!)— 11 =11 pow 11z- (0) “TeTesopanUagrin Buktikan bahwa jika a, b, dan m adalah bilangan bulat sedemikian sehingga m 2 2, dana = b (mod m) dan c = d (mod m), maka ac= bd (mod m). Penyelesaian: a=b(modm) a=bt+km c=d(modm) c=d+kym ac= (b+ km) (d+ km) bd + bkym + dkym + ky kam” bd + (bky + dhy + ky Kam) m ac=bd+Km — dengan K = bk, + dk, + ky kam bd+Km_ ac = bd (mod m) . Misalkan m adalah bilangan bulat positif. Buktikan bahwa jika a mod m = b mod m, maka a= b (mod m). Penyel in: amod m =b mod m at+km=btk.m a =b+(k—ky)m ~b =(k—k)m Persamaan yang terakhir mengimplikasikan bahwa m-habis membagi (a~ 6), sehinggs kita dapat menyatakan bahwa a = b (mod m). Sebuah area parkir mempunyai sejumlah slot atau space yang dinomori 0 sampai 30. Mobil yang hendak parkir di area tersebut ditentukan dengan sebuah fungsi hash. Fungsi hash tersebut menentukan nomor slot yang akan ditempati mobil yang hendak parkir berdasarkan 3 angka terakhir pada plat nomor polisinya. (a) Tentukan fungsi hash yang dimaksudkan. (b) Tentukan nomor slot yang ditempati mobil yang datang berturut-turut dengan 3 angka terakhir pada plat nomor polisisnya adalah 327, 100, 121, 310, 414, 110, 017 Penyelesaian: (a) Fungsi hash : h(x) =x mod 31 (b) Nomor slot yang ditempati mobil dihitung dengan fungsi hash (a) di atas: (327) = 327 mod 31 = 17 (100) = 100 mod 31 =7 =28 =0 =11 ‘A(110) = 110 mod 31 = 17, karena slot sudah terisi maka isi s/ot kosong berikutnya, yaitu 18 A(017) = 017 mod 31 = 17, karena slot sudah terisi maka 18, tetapi karena 18 sudah terisi, maka isi s/ot berikutnya, yaitu 19 : 220 Matematika DiskritNomor /SBN sebuah buku yang terbaca oleh bar code di toko buku adalah 0-07-053965- X. Apakah nomor /SBN tersebut sah? Jika tidak, bagaimana seharusnya? Penyelesaian: Hal pertama yang harus dilakukan adalah memeriksa apakah benar karakter uji ISBN tersebut adalah X (representasi angka 10) dengan perhitungan berikut: 9 mod 11 = karakter uji dalam hal ini, 9 1.0+2.0+3.74+4.0+55+63+7.9+8.6+9.5 =214 25 + 18+ 63+ 48+45 = 220 sehingga ; mod 11 = 220 mod 11=0 Hasil perhitungan yang terakhir adalah’0 (bukan 10) sehingga menunjukkan bahwa X tidak memenuhi sifat karakter uji nomor ISBN di atas. Oleh sebab itu, karakter uji ISBN di atas seharusnya bukan X, melainkan 0. Dengan demikian, nomor JSBN yang tepat adalah 0-07-053965-0. Bab 5 Algoritma dan Bilangan Bulat 2211. Apakah 19 habis membagi bilangan bulat berikut: (a)89 —(b) 561 (c) 209 (4) 773 () 8721 2. Carilah bilangan bulat g dan r sehingga m = ng +r (a) m=45,n=6 (c)m=106,n=12 — (e)m=-221,n=12 (b) m= 66, n= 11 (d) m=0,n=47 (f) m=-246, n= 49 3. Perlihatkan bahwa jika p|q dan r|.s, maka pq | rs. 4. Misalkan m, n, dan c adalah bilangan bulat. Tunjukkan bahwa jika ¢ adalah pembagi bersama terbesar dari m dan m, maka c | (m—n). 5. Perlihatkan bahwa jika p, g, dan r bilangan bulat sedemikian sehingga pr | gr, maka p | g. 6. Hitung hasil pembagian modulo berikut: (a) -173 mod 21 (b) -340 mod 9 (c) 0 mod 34 (d) -9821 mod 45 7. Jika m bilangan bulat positif, perlihatkan bahwa a mod m = b mod m jika a= b (mod m). 8. Perlihatkan bahwa jika a = b (mod m) dan c= (mod m), yang dalam hal ini a, b, ¢, d, dan m adalah bilangan bulat, maka a-c = (b— d) mod m. 9. Buktikan bahwa jika a, b, k, dan m adalah bilangan bulat sedemikian sehingga k> 1, m2> 2, dan a=b (mod m), maka a‘ = b* (mod m). 10. Misalkan a, dan b bilangan bulat dan m dan n adalah bilangan bulat positif’ lebih besar dari 1. Buktikan bahwa jika n | m dan a = b (mod m), maka a =b (mod n). 11, Tunjukkan bahwa jika a, 6, dan m bilangan bulat sedemikian sehingga m > 2, dan a = b (mod m), maka PBB(a, m) = PBB(é, m). 12. Tentukan PBB dari pasangan bilangan bulat a dan b berikut: (a) 220, 1400 (b) 315, 825 (c) 110, 273 (d) 2475, 32670 (c) -456, 688 222 Matematika Diskrit13. Tentukan inversi (invers) dari a modulo m jika a =~ 39 dan m= 14. 14. Nyatakan PBB dari soal nomor 7 di atas dalam bentuk kombinasi lanjar ma + nb. 15. Tuliskan 5 buah bilangan bulat yang kongruen dengan 4 modulo 12. 16. Tentukan pasangan bilangan bulat yang relatif prima satu sama lain: (a) 21, 34, 55 (b) 25, 41, 49, 64 (c) 17, 18, 19, 23 1 a . Andaikan bahwa a dan b bilangan bulat positif. Tunjukkan bahwa PBB(a, 5) = PBB(a, a + 4). 18. Pecahkan kekongruenan lanjar berikut: (a) 4x = 5 (mod 8) (b)2x=7 (mod 17) — (c) 5x= 10 (mod 12) 19. Tentukan inversi (invers) dari a modulo m berikut: (a) a=34,m=5 (b) a= 178, m= 62 (c)a=-341, m=17 20. Tunjukkan bahwa 2*° = 1 (mod 11) dengan Teorema Fermat (dan memperhatikan bahwa 2™° = (2"°)4, alg Misalkan Julius Caesar mengenkripsikan pesan dengan cara menggeser huruf abjad 8 posisi ke kanan. (a) Nyatakan fungsi matematik yang memetakan plainteks ke cipherteks dengan metode di atas. (6) Misalkan A =0, B= 1, ..., Z=25. Tentukan cipherteks dari pesan “DI RUMAH” dengan fungsi tsb. 22. Enkripsikan pesan HELLO WORLD dengan algoritma RSA dan menggunakan nilai-nilai a = 23, b= 31, dane = 29. 23. Sembilan angka pertama dari kode JSBN sebuah buku adalah 0-07-053965. Tentukan karakter uji untuk buku ini. 24, ISBN sebuah buku mengenai algoritma adalah 0-201-57p859-1, yang dalam hal ini p adalah angka. Berapa nilai p? 25. Tunjukkan bagaimana sekumpulan data dengan kunci-kunci sebagai berikut: 714, 631, 26, 373, 775, 906, 509, 2032, 42, 4, 136, 1028 ditempatkan di dalam memori dengan fungsi hash h(k) = k mod 17. Bab 5 Algoritma dan Bilangan Bulat 22326. Tentukan bilangan acak yang dihasilkan oleh xp+1 = (4x, + 1) mod 7 dengan umpan Xo = 7. 27. Tentuka solusi dari sistem kekongruenan berikut: x = 5 (mod 6), x = 3 (mod 10), x= 8 (mod 13). 224 Matematika Diskrit
You might also like
Selesaikan Dengan Forward Dan Backward Chaining
PDF
No ratings yet
Selesaikan Dengan Forward Dan Backward Chaining
7 pages
Contoh Soal Matematika Diskrit Tentang Relation, Function, and Recurrence
PDF
No ratings yet
Contoh Soal Matematika Diskrit Tentang Relation, Function, and Recurrence
10 pages
Jofran Maun Tugas AI
PDF
No ratings yet
Jofran Maun Tugas AI
2 pages
Teori Data Control Language
PDF
No ratings yet
Teori Data Control Language
7 pages
Flowchart Interpolasi Newton
PDF
No ratings yet
Flowchart Interpolasi Newton
2 pages
Soal 1, Array Data Mahasiswa: Soal Latihan C++ Buat Program - Program Berikut Dan Perbaiki Sampai Dengan Sukses
PDF
No ratings yet
Soal 1, Array Data Mahasiswa: Soal Latihan C++ Buat Program - Program Berikut Dan Perbaiki Sampai Dengan Sukses
8 pages
Linked List Dengan Pascal
PDF
No ratings yet
Linked List Dengan Pascal
2 pages
C1 W4 Quiz
PDF
No ratings yet
C1 W4 Quiz
6 pages
Bundel Soal STI Semester 3 2016-2017 PDF
PDF
No ratings yet
Bundel Soal STI Semester 3 2016-2017 PDF
91 pages
Modul 6: Membuat Streaming Server
PDF
No ratings yet
Modul 6: Membuat Streaming Server
18 pages
Penerapan Model Populasi Kontinu Pada Perhitungan Proyeksi Penduduk Di Indonesia (Studi Kasus: Provinsi Jawa Timur)
PDF
No ratings yet
Penerapan Model Populasi Kontinu Pada Perhitungan Proyeksi Penduduk Di Indonesia (Studi Kasus: Provinsi Jawa Timur)
11 pages
Kuis
PDF
No ratings yet
Kuis
12 pages
Contoh Soal A Star Search PDF
PDF
No ratings yet
Contoh Soal A Star Search PDF
5 pages
CONTOH - Soal UAS Sistem Informasi Industri
PDF
No ratings yet
CONTOH - Soal UAS Sistem Informasi Industri
1 page
Exercises Meeting-4
PDF
100% (1)
Exercises Meeting-4
2 pages
Soal-Soal Latihan Python + Jawab
PDF
No ratings yet
Soal-Soal Latihan Python + Jawab
39 pages
Latihan Pemrograman Pascal Array 1 Dimensi
PDF
No ratings yet
Latihan Pemrograman Pascal Array 1 Dimensi
3 pages
FAHMI HARUN - SE-46-03 - A1 - RelationFunctionRecurrence - Assignment
PDF
No ratings yet
FAHMI HARUN - SE-46-03 - A1 - RelationFunctionRecurrence - Assignment
18 pages
A Computer May Be Defined As
PDF
No ratings yet
A Computer May Be Defined As
3 pages
BE CAREFUL OF PAST PARTICIPLE Eng
PDF
No ratings yet
BE CAREFUL OF PAST PARTICIPLE Eng
3 pages
Nama: Rizky Saputra NPM: 20105111024 Kelas: 1.1: Selesai
PDF
No ratings yet
Nama: Rizky Saputra NPM: 20105111024 Kelas: 1.1: Selesai
2 pages
CONTOH Soal Pointer C++
PDF
No ratings yet
CONTOH Soal Pointer C++
1 page
Crypt Problems
PDF
No ratings yet
Crypt Problems
25 pages
Nyatakanlah Bilangan-Bilangan Desimal Berikut Dalam Sistem Bilangan A.) Biner B.) Oktal C.) Heksadesimal
PDF
No ratings yet
Nyatakanlah Bilangan-Bilangan Desimal Berikut Dalam Sistem Bilangan A.) Biner B.) Oktal C.) Heksadesimal
6 pages
Exercise 2
PDF
0% (1)
Exercise 2
3 pages
Struktur Organisasi Data Indra Purama - Materi UTS
PDF
No ratings yet
Struktur Organisasi Data Indra Purama - Materi UTS
8 pages
Latihan Pertemuan 1
PDF
No ratings yet
Latihan Pertemuan 1
4 pages
Consider The Bases B (U1, U2, U3) and B' (U'1, U'2, U'3) - Quizlet
PDF
No ratings yet
Consider The Bases B (U1, U2, U3) and B' (U'1, U'2, U'3) - Quizlet
8 pages
Metode Regula-Falsi With Excel
PDF
50% (2)
Metode Regula-Falsi With Excel
2 pages
Contoh Soal Tree Dan Penyelesaiannya
PDF
No ratings yet
Contoh Soal Tree Dan Penyelesaiannya
13 pages
Reading Practice 6
PDF
No ratings yet
Reading Practice 6
2 pages
Flowchart Rumus ABC
PDF
No ratings yet
Flowchart Rumus ABC
2 pages
D. The Answer A, B and C True
PDF
No ratings yet
D. The Answer A, B and C True
12 pages
Tugas Ewb Flip-Flop
PDF
No ratings yet
Tugas Ewb Flip-Flop
16 pages
Tugas 5 Dan 6
PDF
No ratings yet
Tugas 5 Dan 6
4 pages
Incomplete or Missing Appositives (Meeting 6)
PDF
No ratings yet
Incomplete or Missing Appositives (Meeting 6)
8 pages
Contoh Program Insertion Sort
PDF
No ratings yet
Contoh Program Insertion Sort
7 pages
Delphi - Game Tebak Kata
PDF
No ratings yet
Delphi - Game Tebak Kata
17 pages
Akmal Maulana - X3B - PSD - TUGAS BAB 1
PDF
No ratings yet
Akmal Maulana - X3B - PSD - TUGAS BAB 1
24 pages
(11.2C.30 - Bahasa Inggris II) Tugas Pertemuan Ke-2
PDF
No ratings yet
(11.2C.30 - Bahasa Inggris II) Tugas Pertemuan Ke-2
2 pages
Exercise 9
PDF
No ratings yet
Exercise 9
2 pages
ENGLISH IN STATISTICS AND COMBINATORICS Kelompok 4
PDF
No ratings yet
ENGLISH IN STATISTICS AND COMBINATORICS Kelompok 4
28 pages
Flowchart Bilangan Prima
PDF
100% (1)
Flowchart Bilangan Prima
2 pages
Normalisasi Hotel
PDF
No ratings yet
Normalisasi Hotel
3 pages
The Impact of Technology On Traditional Industries Analytical Exposition Text
PDF
No ratings yet
The Impact of Technology On Traditional Industries Analytical Exposition Text
1 page
Tabel Trigonometri Sudut-Sudut Istimewa
PDF
67% (3)
Tabel Trigonometri Sudut-Sudut Istimewa
1 page
UNIT 2 A Typical PC
PDF
100% (1)
UNIT 2 A Typical PC
8 pages
JF 4 Project
PDF
No ratings yet
JF 4 Project
2 pages
Exam 2
PDF
50% (2)
Exam 2
3 pages
Soal Latihan
PDF
No ratings yet
Soal Latihan
2 pages
dm14 PDF
PDF
No ratings yet
dm14 PDF
6 pages
Kalkulus 1 C
PDF
No ratings yet
Kalkulus 1 C
3 pages
Tugas Bahasa Inggris Meet 2
PDF
No ratings yet
Tugas Bahasa Inggris Meet 2
4 pages
Nested Loops
PDF
No ratings yet
Nested Loops
11 pages
Gambarkan Flowgraph Utk Flowchart Berikut Ini
PDF
No ratings yet
Gambarkan Flowgraph Utk Flowchart Berikut Ini
4 pages
Test
PDF
No ratings yet
Test
56 pages
Bab 2
PDF
No ratings yet
Bab 2
50 pages
Binder
PDF
No ratings yet
Binder
51 pages
No Peanut Allowned
PDF
No ratings yet
No Peanut Allowned
52 pages